这几行代码通过使用它给出 1,0 或 -1 的 x_value 将 25 度应用于玩家旋转,如果我向左或向右按下它可以正常工作但是当我放开 player.target_value 应该设置为0,它来自我的调试,但它不会 lerp 到 0 使播放器停留在它以前的角度,我挠头了一会儿,我不明白为什么它没有改变,我可能是完全错过了一些东西,但我不知道。
-- Check if the player is moving along the x axis, if not we set its angle to 0
if x_value ~= 0 then
-- Check if the target angle has changed
if player.target_angle ~= 25 * x_value then
player.target_angle = 25 * x_value
player.target_angle_changed = true
end
else
-- if the player isnt moving left or right set angle to zero and angle changed to true
player.target_angle = 0
player.target_angle_changed = true
end
-- Check if the target angle has changed
if player.target_angle_changed then
progress = 0
player.target_angle_changed = false
else
-- if the target angle has not changed we start moving the value with progress + dt
progress = math.min(progress + dt / duration, 1)
end
-- Apply the rotation to the player with lerp
player.angle = lerp(player.angle, player.target_angle, progress)
-- DEBUG to see the progress
value = "Target_Value: " .. player.target_angle .. " Player_Angle" .. player.angle
插值函数:
function lerp(a, b, t)
return a + (b - a) * t
end
如果你不动,你设置
target_angle_changed = true
.
如果
player.target_angle_changed
你设置progress = 0
.
当progress为零时,lerp只使用第一个输入,也就是之前的角度。因此,当你不动时,你不会改变角度。
我需要更多上下文来解决问题,但现在绝对不是你想要的。