Unity 2D запускает игру объекта под определенным углом, не влияя на скорость - PullRequest
0 голосов
/ 08 ноября 2018

Я работаю над игрой, в которой мне нужно стрелять в шар под углом и силой, определяемой двумя ползунками (1 ползунок угла, 1 ползунок мощности). В настоящее время у меня есть этот код для управления запуском шара:

  public void shoot()
{
    float angle = angleSlider.GetComponent<Slider>().value;
    float power = powerSlider.GetComponent<Slider>().value;

    gameObject.SetActive(false);

    ball.GetComponent<Rigidbody2D>().simulated = true;

    Vector2 releaseVector = Quaternion.AngleAxis(angle, transform.up) * transform.forward;
    ball.GetComponent<Rigidbody2D>().velocity = releaseVector * (power/3);


}

с этим текущим кодом он работает почти идеально, за исключением одной вещи. Когда угол между 30 и 60, мяч запускается хорошо, но если я установлю его на 0 градусов, шар едва будет двигаться, и наоборот, если я установлю его на 90 градусов, мяч будет запускаться с гораздо большей силой. Как я могу установить постоянную скорость для всех градусов, чтобы скорость влияла только на слайдер мощности, пожалуйста? Спасибо.

Ответы [ 2 ]

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

Это просто .. Вы должны нормализовать releaseVector.

  ball.GetComponent<Rigidbody2D>().velocity = releaseVector.normalized * (power/3);

Затем настройте мощность на то, что вы хотите.Таким образом, вы получите желаемое направление, а скорость зависит от значения мощности.

Если вы хотите узнать, что делают нормализаторы, вы можете найти больше информации здесь;https://docs.unity3d.com/ScriptReference/Vector3.Normalize.html

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

Как правило, вы не должны устанавливать velocity жесткого тела напрямую. Согласно документам Unity ...

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

Вместо этого вы обычно хотите придать мячу физический импульс, используя такой API-интерфейс, как AddForce или AddRelativeForce

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