import CMath from "../../../../util/CMath"; import FF from "../../FF"; import FSprite from "../../object/FSprite"; /** * 巡逻兵 */ const {ccclass, property} = cc._decorator; @ccclass export default class FPatrol extends cc.Component { @property({ displayName: '起点到终点时间(秒)' }) public time = 2; @property({ displayName: '每次巡逻停留时间(秒)' }) public interval = 0.5; @property({ type:cc.Node, displayName: '巡逻目的地' }) public target:cc.Node = null; @property({ type:cc.Node, displayName: '警示区域' }) public warn:cc.Node = null; @property({ type:sp.Skeleton, displayName: '精灵动画' }) public spine:sp.Skeleton = null; private initPos:cc.Vec2; private targetPos:cc.Vec2; public ff:FF; onLoad () { this.initPos = this.node.getPosition(); this.targetPos = this.target.getPosition(); this.moveToB(); } private moveToB(){ cc.tween(this.node).sequence( cc.delayTime(this.interval), cc.callFunc(()=>{ // if(this.targetPos.x > 0){ // this.node.scaleX = Math.abs(this.node.scaleX); // }else{ // this.node.scaleX = -Math.abs(this.node.scaleX); // } }), cc.moveBy(this.time,this.targetPos), cc.callFunc(()=>{ this.moveToA(); }) ).start(); cc.tween(this.warn).sequence( cc.delayTime(this.interval), cc.callFunc(()=>{ let angle = CMath.getAngle(cc.Vec2.ZERO_R,this.targetPos)*180/Math.PI; this.warn.angle = angle; }), cc.moveBy(this.time,this.targetPos), cc.callFunc(()=>{ }) ).start(); } private moveToA(){ let pos = this.targetPos.clone(); pos.x = -pos.x; pos.y = -pos.y; cc.tween(this.node).sequence( cc.delayTime(this.interval), cc.callFunc(()=>{ // if(pos.x > 0){ // this.node.scaleX = Math.abs(this.node.scaleX); // }else{ // this.node.scaleX = -Math.abs(this.node.scaleX); // } }), cc.moveBy(this.time,pos), cc.callFunc(()=>{ this.moveToB(); }) ).start(); cc.tween(this.warn).sequence( cc.delayTime(this.interval), cc.callFunc(()=>{ let angle = CMath.getAngle(cc.Vec2.ZERO_R,pos)*180/Math.PI; this.warn.angle = angle; }), cc.moveBy(this.time,pos), cc.callFunc(()=>{ }) ).start(); } }