Unity 2D addforce со случайным направлением для объекта - PullRequest
0 голосов
/ 12 ноября 2018

Пожалуйста, помогите мне, ребята! Так что я делаю хакерскую игру с мешком, но когда я бью по предмету, он просто поднимается без случайного направления и силы. И я хочу, чтобы мой персонаж не бил объект во время бега и в режиме ожидания. Я просто хочу, чтобы объект попадал, когда мой персонаж бьет ногами.

Вот мой код для силы игрока.

  if (canSipa == true)
{  
    _pitcha.GetComponent<Rigidbody2D>().AddForce(new Vector2(1000, 5000));
   }
    }

и для объекта:

  private void OnTriggerEnter2D(Collider2D collision)
 {
   if(collision.gameObject.tag == "Player")
  {   
   _player.GetComponent<PlayerManager>().canSipa = true;
   }
 }

     private void OnTriggerExit2D(Collider2D collision)
   {
         if (collision.gameObject.tag == "Player")
    {
     _player.GetComponent<PlayerManager>().canSipa = false ;
       }
   }

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете использовать векторную математику для абстракции направления и силы:

Vector2 direction = new Vector2((float)Random.Range(-1000,1000), (float)Random.Range(-1000,1000));

float force = (float)Random.Range(-1000,1000);
pitcha.GetComponent<Rigidbody2D>().AddForce(direction * force);
0 голосов
/ 12 ноября 2018

Это потому, что в этой строке вы определяете вектор2 с фиксированным направлением и силой:

    pitcha.GetComponent<Rigidbody2D>().AddForce(new Vector2(1000, 5000));

Вы можете использовать Random.Range для создания вектора2:

     var direction = Random.Range(-1000, 1000); 
     //This way you can go right and left
     var force = Random.Range(3000,5000); 
     //This way you can variate the force
     pitcha.GetComponent<Rigidbody2D>().AddForce(new Vector2(direction,force));

Использоватьpublic плавает как значения (maxDirection, minDirection ...), поэтому вы можете изменять значения во время игры.Надеюсь, что это поможет.

...