execute
是Yuka JavaScript库中的一个方法,它可用于执行每个目标的计算操作,即使该目标已经达到操作后的某个状态。
execute
方法可以用于任何目标,只需通过以下方式访问它:
target.execute( timeDelta );
timeDelta
参数表示两次调用之间的时间差,以毫秒为单位。
目标的计算非常关键,因为它决定了该目标在该帧中移动的距离。execute
方法在目标运动时执行这些计算操作。
当目标到达参考位置时,目标仍将继续进行计算,但它们实际上不移动。
执行过程如下:
检查目标是否处于“活动”状态。如果目标在达到目标状态后不再激活,则已停止执行该目标。
计算出目标当前位置与下一位置之间的向量,其中下一位置是根据 timeDelta
参数计算的目标移动距离得出的。
调用 integrate
方法来应用此向量并计算出新的目标位置。
当目标到达其最终状态时,停止移动。
如果移动过程中发生碰撞,则根据碰撞结果进行响应并调整目标状态。
const target = new YUKA.GameEntity();
target.position.set( 5, 0, 5 );
target.setBehavior( new YUKA.ArriveBehavior( new YUKA.Vector3( 10, 0, 10 ) ) );
let timeElapsed = 0;
function animate( timeDelta ) {
target.execute( timeDelta );
timeElapsed += timeDelta;
if ( timeElapsed > 5000 && target.active ) {
target.setBehavior( null );
}
}
在此示例中,我们创建了一个名为 target
的新实体,并为该实体应用了一个“ArriveBehavior”。此行为表示该目标希望移动到(10,0,10)处。然后,我们使用 execute
方法来计算该目标的移动,并在每次渲染时重复这个过程。
在这个示例中,我们自行检查了移动时间,并在5秒后停止了行为。当目标状态不再改变时,执行将被停止,因此目标停止移动。