我试图在另一个GameObject中的GameObject位置实例化一个对象。我希望在我的Player GameObject中使用名为bulletStart的GameObject触发子弹。我可以从bulletStart GameObject位置进行实例化,但是当我想根据正在播放的播放器动画将bulletStart对象移动到新位置时,子弹根本不会实例化:
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
答案 0 :(得分:0)
1)。很可能你的动画是在基础层上,所以你应该检查“Base Layer.Player_Shoot_Side"
而不是”Player_Shoot_Side
“。
2)。确保"Player_Shoot_Side"
是州名,而不是动画名称。 (单击Animator中包含动画的状态并使用该名称)
你应该有像
这样的东西anim.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.State name")