在Babylon.js中移动网格的问题

时间:2016-09-18 12:01:57

标签: javascript game-physics babylonjs

我正在尝试制作一个红色警报风格的游戏,只是为了提高我的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;
        } 
    }
}

2 个答案:

答案 0 :(得分:1)

convert

通过使用while循环,您将在游戏的同一帧内以增量更新位置到最终位置。这相当于说:

    while (item.position.x < position.x) {
        item.position.x += 0.001;
    }

因此,你会看到它从一个帧到另一个帧从初始位置跳到最终位置;无论你如何更新职位。

如果你想模拟一段时间内的移动,你需要以多个帧的方式向对象移动对象。如果正确选择增量,并且帧足够快,它将看起来像平滑移动。

要实现这一点,对象需要知道它们在帧中移动的位置,并且您需要在游戏中引入时间概念。

请查看this tutorial以获取该概念的示例。

答案 1 :(得分:1)

BABYLON.js有一个内置的动画功能,可以自动处理网格的时间限制。这是一个工作示例的链接!

http://www.babylonjs-playground.com/#OYE6Q#4