Lua 鼠标拖拽 Quaternion

我正在制作一个 Lua 脚本,需要一些帮助。我希望使用 Quaternion 来根据鼠标移动/拖拽旋转一个物体。我正在使用这个 Quaternion 库 https://github.com/topameng/CsToLua/。我已经成功移动了物体,但所有的旋转都混乱了,这里是一个链接,展示了我目前的进展http://img.bcdojrp.net/videos/uploads/2021-03-17%2003-58-07_Trim.mp4,我已花费数小时查找但仍未找出需要更改的地方...任何帮助都将受到赞赏,谢谢!

function GetCursor()
    local sx, sy = GetActiveScreenResolution()
    local cx, cy = GetNuiCursorPosition()
    local cx, cy = (cx / sx) + 0.008, (cy / sy) + 0.027
    return cx, cy
end
if dragging then
    -- 这是屏幕的位置
    local intx, inty = GetCursor()
    local deltaMove = {
        ['x'] = intx-previousMousePosition.x,
        ['y'] = inty-previousMousePosition.y
    }
    local deltaRotationQuaternion = Quaternion.Euler(deltaMove.y * 40, deltaMove.x * 40, 0)
    local x,y,z,w = GetEntityQuaternion(curObject)
    local quatNew = deltaRotationQuaternion.__mul(Quaternion.New(x,y,z,w), deltaRotationQuaternion)
    local valX, valY, valZ, valW = quatNew.x, quatNew.y, quatNew.z, quatNew.w
    SetEntityQuaternion(curObject, valX, valY, valZ, valW)

    --cube.quaternion.multiplyQuaternions(deltaRotationQuaternion, cube.quaternion);
    previousMousePosition.x = intx
    previousMousePosition.y = inty
else
    previousMousePosition = {
        ['x'] = 0,
        ['y'] = 0
    }
end
点赞