我正在制作一个侧滚动游戏,其中主精灵在屏幕上移动并且必须通过跳跃来避开障碍物。我已经制造了固定的障碍物,但我需要帮助移动障碍来回移动。我该怎么做? 现在我有这个if else语句移动一个对象,当它到达某个点时,它的坐标重新开始到它的原始位置。
if (movesquare1 > 20) {
movesquare1 -= 2;
movesquare2 -= 2;
}
else {
movesquare1 = 145;
movesquare2 = 195;
}
movesquare1是制作障碍物(正方形)的函数中的变量。 movesquare2是一个变量,所以当主精灵接触到移动的障碍物时,碰撞系统会记录位置的变化。
(positionX > (439 - backgroundPositionX) && positionX < (492 - backgroundPositionX) && positionY > movesquare1 && positionY < movesquare2)
答案 0 :(得分:2)
您可以使用math.sin函数。把你的值放在0..1之间,然后缩放它。
答案 1 :(得分:1)
1)这不是与JavaScript相关的问题,因为您可以在每种可用于创建游戏的语言中遇到此问题。
2)我的回答 - 作为简介:http://www.gamedev.net/page/resources/_/technical/math-and-physics/practical-use-of-vector-math-in-games-r2968。通过从原始像素/坐标计算转向矢量数学抽象,您可以获得一个非常灵活,经过验证的方便工具,用于处理2D / 3D中的移动对象
3)阅读一些关于gamedev的书(例如'ai for game developers')
答案 2 :(得分:1)
您可能希望在游戏循环中引入时间变量,并根据当前帧和上一帧之间的时差更新可移动对象的位置。
然后,您可以确定可移动方格的位置作为时间的函数。
要进行快速实验,请尝试以下操作:
var t = new Date().getTime();
movesquare1 = Math.sin(t / 200) * 50 + 100;
我建议你阅读许多很好的HTML5游戏教程中的一个,这些教程解释了抽象概念(让你的游戏对象继承常用功能),碰撞检测(以固定的帧率运行碰撞检测,无论帧率如何)你的渲染器,以避免移动两帧之间的移动物体的路径等。