如何根据角度计算不同的速度平均值?
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
好了,我正在 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