在 Babylon.js 中移动网格时出现问题
Issue with moving a mesh in Babylon.js
我正在尝试制作一款红色警戒风格的游戏,只是为了提高我的 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;
因此,您会看到它从一帧到下一帧从初始位置跳到最终位置;无论您如何更新位置。
如果您想模拟随时间推移的运动,您需要在多个帧中逐步将对象移向目标。如果增量选择正确,并且帧足够快,它看起来像平滑的运动。
要实现这一点,对象需要了解它们跨帧移动的位置,并且您需要在游戏中引入时间的概念。
查看 this tutorial 中的概念示例。
BABYLON.js 有一个内置的动画功能,可以自动处理网格的时间限制。这是一个 link 的工作示例!
我正在尝试制作一款红色警戒风格的游戏,只是为了提高我的 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;
因此,您会看到它从一帧到下一帧从初始位置跳到最终位置;无论您如何更新位置。
如果您想模拟随时间推移的运动,您需要在多个帧中逐步将对象移向目标。如果增量选择正确,并且帧足够快,它看起来像平滑的运动。
要实现这一点,对象需要了解它们跨帧移动的位置,并且您需要在游戏中引入时间的概念。
查看 this tutorial 中的概念示例。
BABYLON.js 有一个内置的动画功能,可以自动处理网格的时间限制。这是一个 link 的工作示例!