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 ,如果有其他语言的例子也可以,谢谢了~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.