我的子弹发射逻辑有问题。
第一次,一切正常,但是当我重生后射击子弹时,它不会动。它仅适用于第一枪。
子弹是预制的。
这是我的代码:
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);
}
}
答案 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