【发布时间】:2014-03-02 10:48:17
【问题描述】:
我有一个在太空中航行的玩家。因为它是空间,所以没有重力,因此没有抛物线轨迹。玩家只是从左到右沿着一条水平线前进。玩家实际上并没有在移动,但背景在移动,所以看起来他在移动。 x 值是固定的。
我有 2 个按钮可以帮助玩家避开小行星等障碍物。一个按钮给玩家向上的力量,另一个给玩家向下的力量。以下是按下这些按钮时调用的函数。
函数 moveUp( 事件 ) 如果 event.phase == "结束" 那么 player:applyForce(0, 8, player.x, player.y)
player:setSequence("jump")
jumpChannel = audio.play(jumpSound)
end
return true
end
函数 moveDown( 事件 ) 如果 event.phase == "结束" 那么
player:applyForce(0, -8, player.x, player.y)
player:setSequence("jump")
jumpChannel = audio.play(jumpSound)
end
return true
end
这个实现的问题在于,每当施加一个力时,玩家就会一直朝那个方向前进。然后你必须向相反的方向施加力,他将永远朝着那个方向前进。那不是我想要的。我想要的是:
当按下 UP 时,玩家会在 Y 方向上升一定的值(例如 50 像素)。然后玩家会在新高度从左到右继续水平方向。
当按下 DOWN 时,播放器会下降某个值。然后玩家在新的高度继续从左到右水平方向前进。
实现这一目标的最佳方法是什么?我可以使用 applyForce 函数执行此操作还是有其他方法?提前感谢您的宝贵时间!
【问题讨论】: