Я пытаюсь создать экземпляр объекта в позиции GameObject в другом GameObject. Я хочу, чтобы пуля стреляла из GameObject, называемого bulletStart, в моем игровом объекте GameObject. Я могу получить его экземпляр с позиции bulletStart геймобжекты, но когда я хочу, чтобы переместить объект bulletStart на новую позицию на основе анимации игрока, который играет, пуля не экземпляр вообще:GameObject Position Within Another GameObject Issues
void Fire()
{
if(anim.GetCurrentAnimatorStateInfo(0).IsName("Player_Shoot_Side"))
{
bulletStartX = bulletStart.transform.position.x;
bulletStartY = bulletStart.transform.position.y;
if (transform.localScale.x > 0)
{
bullet.GetComponent<BulletBehaviour>().bulletSpeed = 50;
Instantiate(bullet, new Vector3(bulletStartX, bulletStartY, 0f), transform.rotation);
}
else if (transform.localScale.x < 0)
{
bullet.GetComponent<BulletBehaviour>().bulletSpeed = -50;
Instantiate(bullet, new Vector3(bulletStartX, bulletStartY, 0f), transform.rotation);
}
}
}
Но это будет экземпляр со следующим кодом:
void Fire()
{
bulletStartX = bulletStart.transform.position.x;
bulletStartY = bulletStart.transform.position.y;
if (transform.localScale.x > 0)
{
bullet.GetComponent<BulletBehaviour>().bulletSpeed = 50;
Instantiate(bullet, new Vector3(bulletStartX, bulletStartY, 0f), transform.rotation);
}
else if (transform.localScale.x < 0)
{
bullet.GetComponent<BulletBehaviour>().bulletSpeed = -50;
Instantiate(bullet, new Vector3(bulletStartX, bulletStartY, 0f), transform.rotation);
}
}
анимация игрока для съемки со стороны называется Player_Shoot_Side в редакторе анимации
Ну, единственная переменная между вашими двумя примерами - 'anim.GetCurrentAnimatorStateInfo (0) .IsName (" Player_Shoot_Side ")', которые возвращают 'false', я думаю. Вы пытались войти в отладчик или добавить «Debug.Log» – Ceros
. Я добавил строку Debug.Log, чтобы увидеть, не воспроизводится ли анимация, используя if (! Anim.GetCurrentAnimatorStateInfo (0) .IsName («Player_Shoot_Side»)), и он показывает сообщение отладки, которое я установил. Что странно, потому что анимация играет –
Из этого http://docs.unity3d.com/ScriptReference/AnimatorStateInfo.IsName.html 'Имя должно быть в форме Layer.Name, например« Base.Idle ».' – Ceros