另一个GameObject中的GameObject位置问题

时间:2016-04-18 19:18:24

标签: unity3d unity5 gameobject

我试图在另一个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

1 个答案:

答案 0 :(得分:0)

1)。很可能你的动画是在基础层上,所以你应该检查“Base Layer.Player_Shoot_Side"而不是”Player_Shoot_Side“。 2)。确保"Player_Shoot_Side"是州名,而不是动画名称。 (单击Animator中包含动画的状态并使用该名称)

你应该有像

这样的东西
anim.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.State name")

http://docs.unity3d.com/Manual/AnimationLayers.html

http://docs.unity3d.com/Manual/class-State.html