在已知车辆的坐标、速度向量以及旋转的情况下,求出车辆的漂移角度?

2022-08-09 21:45:11 +08:00
 KasuganoSoras

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 ,如果有其他语言的例子也可以,谢谢了~

1377 次点击
所在节点    编程
3 条回复
GordianZ
2022-08-09 23:15:30 +08:00
拿到 vx,vy 速度分量之后做个 atan 就是红色箭头的指向了, 然后拿来减 rz(绿色箭头)看正负就是左右了。
KasuganoSoras
2022-08-09 23:17:58 +08:00
@GordianZ #1 谢谢大佬,我试一下
Weyeeep
2022-08-09 23:49:16 +08:00
我在 v2 看 0 梦,草

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/871779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX