【发布时间】:2018-05-30 00:49:45
【问题描述】:
标题描述了我的问题,您可以看到here 我的角色以 45 度角生成。角色总是在 (0, 0) 处生成
我已经为动画创建了一些代码,这些代码使用角色的位置和所需的位置来计算角色应该处于的角度。这个角度是通过使用角色到其目的地的距离百分比来确定的(这些目的地只是 Y 值。X 每个刻度增加 1)。我已经做了一个方程来确定基于行进百分比的角度。等式:-(9/500)X^2 + (9/5)X。这是一条与点 (0, 0)、(50, 45) ← 45 度角和 (100, 0) 相交的抛物线。
我使用这个方程的代码如下:
float GetRotationDegrees(int Current, int Target, int LaneWidth) {
int numerator = Current - LaneWidth;
int denominator = Target - LaneWidth;
float X;
if (denominator == 0) X = 0;
else X = abs(numerator / denominator * 100);
return -(9/500)*pow(X,2)+(9/5)*X; // function: -(9/500)X^2 + (9/5)X.
}
LaneWidth 始终为 400,Current 是角色的当前 Y 坐标,Target 是目标 Y 坐标。在 Y = 0 时,等式应该是 -400 / -400 * 100 = 100。当你将 100 放入等式时,你会得到 0,然后使用这个值 0:
SetActorLocation(FVector(1, sin(angle * PI / 180), 0).Rotation());
我现在真的很困惑,因为每当我手动尝试它时它都不起作用。
这可能是我做的一些愚蠢的事情,我经常看东西并且数学不太好(我也是 C++ 新手,所以错误也可能存在)。如果有人可以帮助我,我将不胜感激!
(顺便说一句,我知道 GetRotationDegrees 决定 X 角度的方式只会返回正角度,我想先让它工作)
【问题讨论】:
-
希望你不要把
PI定义为3 -
我没有 xD。我希望它会那么容易哈哈
-
无论如何,您需要创建minimal reproducible example 并提供预期的结果以及如果您真的想获得帮助,您会得到什么
-
@Slava 你需要更多的 PI-lons。
-
@user4581301 我还需要什么?
标签: c++ math unreal-engine4