arbitrate 是 Yuka.js 中的一个类,它用于根据条件决定是否执行一个行为。使用它可以很方便地实现游戏中的各种判断逻辑。
使用 ES6 的模块化引入方式:
import { Arbitrate } from 'yuka';
使用传统的 <script>
标签引入方式:
<script src="path/to/yuka.js"></script>
在全局变量 Yuka
下即可访问:
const { Arbitrate } = Yuka;
new Arbitrate( executeFunction, conditionFunction )
executeFunction
Function - 当条件满足时执行的函数。conditionFunction
Function - 判断是否执行 executeFunction
的函数。executeFunction
Function - 当条件满足时执行的函数。conditionFunction
Function - 判断是否执行 executeFunction
的函数。设置执行函数。该函数只接受一个参数,表示传入的条件是否满足,如果满足,则执行相应的代码。
executeFunction
Function - 执行函数。设置判断条件函数。该函数只接受一个参数,表示传入的条件是否满足,如果满足,则执行相应的代码。
conditionFunction
Function - 判断条件函数。判断是否执行 executeFunction
并执行。如果 conditionFunction
返回 true
,则执行相应的代码。该函数可以接受任意个数的参数,并将其传递进 executeFunction
中。
...args
Object - 传递给 executeFunction
的参数。const player = {
health: 100,
decreaseHealth( damage ) {
this.health -= damage;
}
};
const projectile = {
damage: 10,
position: new Vector3()
};
// 当 projectile 接触到 player 时,player 的生命值会减少
const hitTest = new Arbitrate(
function execute( target ) {
target.decreaseHealth( this.damage );
},
function condition( target ) {
const distance = this.position.distanceTo( target.position );
return distance < 1;
}
);
hitTest.damage = projectile.damage;
hitTest.position = projectile.position;
hitTest.execute( player );
示例中,hitTest
实例被创建用于判断 projectile 是否接触到 player,如果接触到,则执行 decreaseHealth
函数减少 player 的生命值。executeFunction
和 conditionFunction
分别被创建用于规定条件和相应行为。hitTest
实例被设置了相应的参数,并调用 execute
方法实现对 player
的生命值减少操作。