在坦克大战的敌人设计中,存在一个当敌人与玩家的距离小于某个设定值的时候,敌人就能发现玩家,然后去攻击玩家。这部分用到了物体实时朝向移动目标这一方法
- 效果展示

代码实现:
cc.Class({
extends: cc.Component,
properties: {
player:cc.Node,
},
onLoad () {
this.initTime = 0;
},
start () {
},
update (dt) {
this.initTime++;
let playerPos = this.player.convertToWorldSpaceAR(cc.v2(0, 0));
let thisPos = this.node.convertToWorldSpaceAR(cc.v2(0, 0));
if((Math.abs(playerPos.x - thisPos.x) < 300 && Math.abs(playerPos.y - thisPos.y) < 300)&&this.initTime>60){
let r = Math.atan2(playerPos.y - thisPos.y, playerPos.x - thisPos.x);
let degree = r * 180 / Math.PI;
degree = 360 - degree;
degree = degree - 90;
this.node.angle = -degree;
this.initTime = 0;
}
},
});
- 将上述脚本挂载到敌人预制体上,敌人动态生成,在onLoad里根据路径加载this.player,不用每个敌人节点都去挂载物体。