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

Issue with moving a mesh in Babylon.js

本文关键字:网格 问题 移动网 移动 Babylon js      更新时间:2023-09-26

我正在尝试制作一款红色警戒风格的游戏,只是为了提高我的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;
        } 
    }
}
    while (item.position.x < position.x) {
        item.position.x += 0.001;
    }

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

item.position.x = position.x;

正因为如此,你看到它从初始位置跳到最终位置,从一帧跳到下一帧;无论你如何更新位置

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

要做到这一点,物体需要知道它们在帧间移动的位置,你需要在游戏中引入时间概念。

查看本教程中的概念示例

BABYLON.js有一个内置的动画函数,它自动处理网格的时间限制。这里有一个工作示例的链接!

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