123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 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();
- }
- }
|