首页 > 解决方案 > Unity 2D 以特定角度启动游戏对象而不影响速度

问题描述

我正在开发一个游戏,我需要以 2 个滑块(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 度,则球以更大的力量发射。我怎样才能为所有度数设置一个恒定的速度,以便速度只受电源滑块的影响?谢谢。

标签: c#unity3d2d

解决方案


通常,您不应该velocity直接设置刚体的 。根据Unity 文档...

在大多数情况下,您不应直接修改速度,因为这会导致不切实际的行为。

相反,您通常希望使用AddForceAddRelativeForce 之类的 API 将物理脉冲传递给球


推荐阅读