如何根据角度计算不同的速度平均值?

How to calculate different speed averages based on an angle?

好了,我正在 Unity 项目中制作一个攀爬系统,根据方向改变速度。在我的例子中,上升速度为 1,横向速度为 1.5,下降速度为 2。

这就是我现在计算角度的方式:

float angle = (Mathf.Atan2(this.characterController.GetAxisControlValue(CharacterAxisControl.Vertical), this.characterController.GetAxisControlValue(CharacterAxisControl.Horizontal)) * Mathf.Rad2Deg);
        angle %= 360.0f;
        if (angle < 0.0f)
        {
            angle += 360.0f;
        }

GetAxisControl 值 returns 一个介于 -1 和 1 之间的值。现在我需要了解如何获得点之间的平均速度,如下所示:Example

我正在寻找可以解决这个问题的公式。

谁能帮帮我,拜托了。

如果你想让它和角度成正比,那很简单:

var speed = (angle % 180) / 180 + 1;

这会给你:

  0 deg   1
 90 deg   1.5
180 deg   2
270 deg   1.5
 45 deg   1.25
150 deg   1.83 // this is your picture example

如果你想要任意速度,你可以使用线性插值。比方说你想要速度 Vu 上升,Vs 横向移动,Vd 下降。

var t = (angle % 180) / 90; // we only care about vertical direction
var speed = t < 1 
  ? Vu * (1 - t) + Vs * t         // this is for picking the value in the range 0..90
  : Vs * (2 - t) + Vd * (t - 1);  // this is in range 90..180