RT ,最近在开发一个游戏模组,想做一个漂移角度显示(就是下图中底部的那个条),目前能够通过脚本得到的信息有车辆的坐标、当前速度向量 Vector3 ,以及旋转( roll, pitch, yaw ),如何计算出车辆的漂移角度?
已经有一段 Github 找的代码可以计算出漂移角度,但是它永远只能计算出正的角度,无法得知车辆是向左还是向右漂移。
function angle(veh)
local vx, vy, vz = table.unpack(GetEntityVelocity(veh))
local modV = math.sqrt(vx*vx + vy*vy)
local rx, ry, rz = table.unpack(GetEntityRotation(veh, 0))
local sn, cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz))
-- 如果速度太慢则返回 0
if GetEntitySpeed(veh)* 3.6 < 5 or GetVehicleCurrentGear(veh) == 0 then
return 0
end
local cosX = (sn*vx + cs*vy) / modV
if cosX > 0.966 or cosX < 0 then
return 0
end
return math.deg(math.acos(cosX)) * 0.5
end
各位 v2 大佬有什么好的方法吗?数学不好,实在是想不出来了
对了,语言是 Lua ,如果有其他语言的例子也可以,谢谢了~
结贴,找到了一个方法叫 GetEntityRotationVelocity
,可以获取实体的旋转速度,根据旋转速度可以得到车辆当前在向哪个方向旋转,结合在 Github 找到的这段代码就可以得到车辆漂移角度的正负值了。
1
GordianZ MOD 拿到 vx,vy 速度分量之后做个 atan 就是红色箭头的指向了, 然后拿来减 rz(绿色箭头)看正负就是左右了。
|
2
KasuganoSoras OP @GordianZ #1 谢谢大佬,我试一下
|
3
Weyeeep 2022-08-09 23:49:16 +08:00 via Android
我在 v2 看 0 梦,草
|