我有一个角度根据玩家使用 lerp 的输入而改变,但当目标为零时它不会 lerp

问题描述 投票:0回答:1

这几行代码通过使用它给出 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
lua love2d
1个回答
0
投票

如果你不动,你设置

target_angle_changed = true
.

如果

player.target_angle_changed
你设置
progress = 0
.

当progress为零时,lerp只使用第一个输入,也就是之前的角度。因此,当你不动时,你不会改变角度。

我需要更多上下文来解决问题,但现在绝对不是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.