моя пуля не будет двигаться после первого выстрела, почему? - PullRequest
0 голосов
/ 13 мая 2019

Есть проблема с моей логикой стрельбы пулями.

В первый раз все работает нормально, но когда я стреляю в пулю после ее возрождения, она не двигается.Это работает только для первого выстрела.

Пуля - сборный.

Вот мой код:

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 голосов
/ 13 мая 2019

Когда вы звоните Destroy, вы теряете свою активную пулю GameObject, но когда вы звоните Instantiate, она на самом деле не возвращается к вашей ссылке bulletObj.

Быстрый ипростое исправление:

bulletObj = Instantiate(bulletObj, bulletPos, Quaternion.identity, playerPos);

Возможно, есть и другие улучшения, которые могут быть сделаны, но это суть проблемы.


Одна рекомендация, которую я хотел бы сделать, - использовать bulletObj.SetActive(false) и bulletObj.SetActive(true) вместо Destroy и Instantiate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...