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

Javascript 在Babylon.js中移动网格的问题,javascript,game-physics,babylonjs,Javascript,Game Physics,Babylonjs,我试图制作一个红色警报风格的游戏,只是为了提高我的JS技能,并对游戏开发有一个基本的了解。我正在尝试将块网格从地面的一部分移动到另一部分。但是,它会立即移动块,而不是为其设置动画 这是我的运动场。。。 我认为问题在于这段代码 var moveUnit = function (position, item) { if (position.x > 0) { while (item.position.x < position.x) {

我试图制作一个红色警报风格的游戏,只是为了提高我的JS技能,并对游戏开发有一个基本的了解。我正在尝试将块网格从地面的一部分移动到另一部分。但是,它会立即移动块,而不是为其设置动画

这是我的运动场。。。

我认为问题在于这段代码

  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;
        } 
    }
}
var moveUnit=函数(位置,项){
如果(位置x>0){
同时(项目位置x<位置x){
项目位置x+=0.001;
}
}否则{
while(item.position.x>position.x){
项目位置x-=0.001;
} 
}
如果(位置z>0){
同时(项目位置z<位置z){
项目位置z+=0.001;
}
}否则{
while(item.position.z>position.z){
项目位置z-=0.001;
} 
}
}
因此,您可以看到它从一帧跳到下一帧,从初始位置跳到最终位置;不管你如何更新职位

如果要模拟随时间的移动,则需要在多个帧上以增量向其目标移动对象。如果增量选择正确,并且帧速度足够快,则看起来像是平滑移动

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

请看一个概念示例

因此,您可以看到它从一帧跳到下一帧,从初始位置跳到最终位置;不管你如何更新职位

如果要模拟随时间的移动,则需要在多个帧上以增量向其目标移动对象。如果增量选择正确,并且帧速度足够快,则看起来像是平滑移动

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


看看这个概念的一个例子。

BABYLON.js有一个内置的动画功能,可以自动处理网格的时间约束。这里有一个链接到一个工作示例


BABYLON.js有一个内置的动画功能,可以自动处理网格的时间约束。这里有一个链接到一个工作示例


我想这是有道理的,我认为计时的东西是在幕后抽象出来的,当你调用
engine.runRenderLoop(()=>scene.render()),我来看看那个链接,谢谢!我想这是有道理的,我认为计时的东西是在幕后抽象的,当你调用
engine.runRenderLoop(()=>scene.render()),我来看看那个链接,谢谢!
    while (item.position.x < position.x) {
        item.position.x += 0.001;
    }
item.position.x = position.x;