我正在尝试制作一个红色警报风格的游戏,只是为了提高我的JS技能,并对游戏开发有一个基本的了解。我试图将块网从地面的一部分移动到另一部分。但是,它会立即移动块,而不是动画。
这是我的babylonjs-playground ... http://www.babylonjs-playground.com/#OYE6Q
我认为问题在于这个代码块......
var moveUnit = function (position, item) {
if (position.x > 0) {
while (item.position.x < position.x) {
item.position.x += 0.001;
}
} else {
while (item.position.x > position.x) {
item.position.x -= 0.001;
}
}
if (position.z > 0) {
while (item.position.z < position.z) {
item.position.z += 0.001;
}
} else {
while (item.position.z > position.z) {
item.position.z -= 0.001;
}
}
}
答案 0 :(得分:1)
convert
通过使用while循环,您将在游戏的同一帧内以增量更新位置到最终位置。这相当于说:
while (item.position.x < position.x) {
item.position.x += 0.001;
}
因此,你会看到它从一个帧到另一个帧从初始位置跳到最终位置;无论你如何更新职位。
如果你想模拟一段时间内的移动,你需要以多个帧的方式向对象移动对象。如果正确选择增量,并且帧足够快,它将看起来像平滑移动。
要实现这一点,对象需要知道它们在帧中移动的位置,并且您需要在游戏中引入时间概念。
请查看this tutorial以获取该概念的示例。
答案 1 :(得分:1)
BABYLON.js有一个内置的动画功能,可以自动处理网格的时间限制。这是一个工作示例的链接!