Почему коллайдер моей 2D-пули не сталкивается ни с чем? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь сделать платформерную игру, которая использует 2D-спрайты в 3D-пространстве. По какой-то причине, хотя пуля, которую игрок стреляет правильно из ОД, являющегося дочерним элементом игрока, она не столкнется ни с чем (врагами, другими объектами и т. Д.) В 2D или 3D. У меня есть 3D-контроллер персонажа на родительском плеере GO, но это не влияет на объект пули, который я стреляю, не так ли?

Коллайдеры на все соответственно. Пробовал с IsTrigger как вкл, так и вкл в разных комбинациях. Объекты находятся в одном слое и в одной и той же позиции оси Z.

//BULLET FIRING SCRIPT

void Update()
{
    if (Input.GetButtonDown("Fire2") && !Input.GetButton("Fire3") && 
        Time.time > nextFireTime)

   {
        Rigidbody2D cloneRb = Instantiate(bullet,  
 bulletSpawn.position, Quaternion.identity) as Rigidbody2D;
        cloneRb.AddForce(bulletPrefab.transform.right *  
 projectileForce);
        nextFireTime = Time.time + fireRate;

    }

}


//____________________________________________________________

//BULLET OBJECT SCRIPT

private void Start()
{
    direction = Input.GetAxisRaw("Horizontal");

    if (direction == -1)
    {
        facingLeft = true;
    }
    else if (direction == 1)
    {
        facingLeft = false;
    }

    else if (direction == 0)
    {
        facingLeft = false;
    }


    if (facingLeft == false)
    {
        rb.velocity = transform.right * speed;
        Debug.Log("Fired Bullet");
    }
    else
    {
        bulletPrefab.transform.Rotate(0, 180, 0);
        firePoint.transform.Rotate(0, 180, 0);
        Debug.Log("Rotated Bullet");
        Debug.Log("Fired Bullet Left");
        rb.velocity = transform.right * speed;

    }
}

// Update is called once per frame
void Update()
{

}


public void OnTriggerEnter2D(Collider2D collider)

     {
       Debug.Log("Bullet Hit:");
       Debug.Log(collider.name);
       Enemy enemy = collider.GetComponent<Enemy>();
       if (enemy != null)
          {
            enemy.TakeDamage(damage);
          }
       Destroy(gameObject);
      }

Ожидаемый результат: объект Bullet сталкивается с другими объектами, печатает выходные данные Debug.Log и уничтожается.

Фактический результат: объект Bullet запускается, перед или за другими объектами, которые также имеют коллайдеры, и выход Debug.Log отсутствует. Пуля не уничтожается и создает бесконечные экземпляры клонов при вводе назначенного ввода.

...