Пуля уничтожить 2 объекта игры намерение одно единство 2D - PullRequest
1 голос
/ 17 апреля 2019

Когда моя пуля сталкивается с шариком, если рядом или в одной и той же позиции находятся 2 шарика, все объекты уничтожаются одновременно.Я установил в своем сценарии, когда пуля столкнется с другим игроком, тогда он будет уничтожен.

Я пытался проверить каждый тип шара с помощью else, если

 if(other.gameObject.tag == "yerrow")
    { 
        if (ballType >= 0 && ballType < 4)
        {

            clone1 = (GameObject)Instantiate(_ball, gameObject.transform.position, Quaternion.identity);
            clone1.gameObject.GetComponent<Balloon_Behave>().ballMove = -4;
            clone1.gameObject.GetComponent<Balloon_Behave>().transform.position = new Vector2(transform.position.x - Random.Range(0, 0.5f), transform.position.y - Random.Range(0,1));

            clone2 = Instantiate(_ball, gameObject.transform.position, Quaternion.identity);

            Destroy(this.gameObject);
        }
        else if (ballType == 4)
        {
            Destroy(this.gameObject);
        }
        Debug.Log("Yerrow COLl");
    }

Yerrow Script Destroy себя

  private void OnTriggerEnter2D(Collider2D other)
      {  
         if (other.gameObject.tag != "Player")
          {
             Destroy(this.gameObject);
             player.CanFire = true;
          }
      }

РЕДАКТИРОВАТЬ.Я хочу уничтожить один объект одной пулей

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

На шаре, внутри OnCollisionEnter2D

if(collision.collider.tag=="BulletTag")
{
     Destroy(collision.collider.gameObject);
     Destroy(gameObject);
}

Примените это только к мячу .

0 голосов
/ 18 апреля 2019

Установите bool, чтобы проверить, попала ли пуля в мяч или нет, и сделать его ложным, если пуля сталкивается с мячом.

 public Player _player

 void start(){
 _powerUP = GameObject.Find("player").GetComponent<Player>();
 }

 if(other.gameObject.tag == "yerrow" && _player.canBe == true)
    {
        _player.canBe = false; // False just after hit
        if (ballType >= 0 && ballType < 4)
        {
            clone1 = (GameObject) Instantiate(_ball, gameObject.transform.position, Quaternion.identity);
            clone1.gameObject.GetComponent<Balloon_Behave>().ballMove = -4;
            clone1.gameObject.GetComponent<Balloon_Behave>().transform.position = new Vector2(transform.position.x - Random.Range(0, 1f), transform.position.y - Random.Range(0,1));
             Instantiate(_ball, gameObject.transform.position, Quaternion.identity);
            Destroy(this.gameObject);
        }
        else if(ballType == 4)
        {
            Destroy(this.gameObject);
        }  
    }

Не верно это значение в триггере Bullet On, сделайте его истинным, когда вызовите Instantiate Clone, тогда оно должно работать find.

0 голосов
/ 17 апреля 2019

Вы можете объединить эти две функции и использовать активный флаг для проверки состояния маркера.

//Check if the bullet is active, then destroy the ball.
if(other.gameObject.tag == "yerrow" && other.gameObject.activeSelf)
{ 
    if (ballType >= 0 && ballType < 4)
    {
        ...
        Destroy(this.gameObject);
    }
    else if (ballType == 4)
    {
        Destroy(this.gameObject);
    }

    //Destroy and deactive the bullet here
    Destroy(other.gameObject);
    other.gameObject.SetActive(false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...