我该如何反转这个方程?

我正在制作一个简单的动画,一个球会反复的弹跳。弹跳的方程式是 h = rt / 16t^2,其中 h 是高度,t 是时间(秒),r 是初始速度。问题在于球会颠倒着弹跳。我一直在试着改变这个方程,但是就是不能弄对。有人能看出有什么错误吗?

function move_ball()
  count = count + 0.3
  local h = (ints*count)-(16*(math.pow(count,2)))
  if (h < 0) then
    count = 0
    move_ball()
    collision()
  else
    ball.y = h / scale
  end
  if (ball.x - ball.rad < 0) then
    ball.dir = ball.speed
    collision()
  elseif (ball.x + ball.rad > length) then
    ball.dir = -ball.speed
    collision()
  end
  ball.x = ball.x + ball.dir
end
点赞
用户33252
用户33252

也许你需要像这样的代码:

ball.y = height - (h / scale)

并测试以确保ball.y不为负数。

2014-03-20 22:15:36
用户869951
用户869951

你的方程式是 h = r t - 16 t^2,假设正向上,重力向下(我原本以为是 4 而非 16,但这与你的问题无关)。你的代码看起来没问题。但可能是屏幕坐标中,正向下为正方向。尝试在计算完 h 后加上取反 h=-h,并检查 h > 0 是否成立。

2014-03-20 23:28:04