我的子弹在第一枪后不会移动,为什么?

时间:2019-05-13 17:03:49

标签: c# unity3d

我的子弹发射逻辑有问题。

第一次,一切正常,但是当我重生后射击子弹时,它不会动。它仅适用于第一枪。

子弹是预制的。

这是我的代码:

public Rigidbody2D bulletrb;
private float dirX=1;
public float speed=.001f;
public  Transform playerPos;
private Vector3 bulletPos;
public GameObject bulletObj;

void Update () {
    bulletPos.x = playerPos.transform.position.x + 2;
    bulletPos.y = playerPos.transform.position.y + 1;
    if (Input.GetKeyDown("1"))
    {
        bulletrb.velocity = new Vector2(dirX * speed, bulletrb.velocity.y);
        Debug.Log("Shoot!");
    }
}
private void OnTriggerEnter2D(Collider2D target)
{
    if(target.gameObject.tag=="Zombie")
    {
        Destroy(bulletObj);
        Debug.Log("Hited!");
        Instantiate(bulletObj,bulletPos,Quaternion.identity,playerPos);
    }
}

1 个答案:

答案 0 :(得分:0)

当您致电start + (sizeOf(object)*index)时,您会丢失活动的项目符号Destroy,但是当您致电GameObject时,它实际上并未分配回您的Instantiate参考。 / p>

快速简单的解决方法是:

bulletObj

可能还有更多可以改进的地方,但这是问题的要点。


我将建议使用bulletObj = Instantiate(bulletObj, bulletPos, Quaternion.identity, playerPos); bulletObj.SetActive(false)而不是bulletObj.SetActive(true)Destroy