| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- import { _decorator, instantiate, Node, PhysicsGroup, tween, Vec3 } from 'cc';
 
- import { Role, RoleState } from '../Role';
 
- import { RoleData } from '../../../DataItem/ItemData';
 
- import { LifeBar } from './LifeBar';
 
- import { MyRole } from './MyRole';
 
- import { MyTower } from './MyTower';
 
- import { resMgr } from '../../../Frames/ResourcesMgr';
 
- import { messageMgr } from '../../../Frames/MessageMgr';
 
- import { GameOverData } from './Data/GameOverData';
 
- const { ccclass, property } = _decorator;
 
- @ccclass('Enemy')
 
- export class Enemy extends Role {
 
-     private _lifeBar: LifeBar = null;
 
-     private _isDie: boolean = false;
 
-     private _orePos: Vec3 = new Vec3(200, 100, 0);
 
-     protected onLoad(): void {
 
-         this._lifeBar = this.node.getComponent(LifeBar);
 
-         this._isDie = false;
 
-     }
 
-     init(name: string, pos: Vec3, data: RoleData[], dir?: number) {
 
-         super.init(name, pos, data, dir);
 
-         this._initLifeBar();
 
-     }
 
-     //初始化血条
 
-     private _initLifeBar() {
 
-         this._lifeBar._curHp = this.hp;
 
-         this._lifeBar._totalHp = this.hp;
 
-     }
 
-     update(deltaTime: number) {
 
-         super.update(deltaTime);
 
-         //this.stop();
 
-         if (this._lifeBar._curHp <= 0) {
 
-             super.playAnimation(RoleState.Die);
 
-             if (this._isDie) return;
 
-             this.createOre();
 
-             this._isDie = true;
 
-         }
 
-     }
 
-     createOre() {
 
-         GameOverData.Instance.KillCount =  GameOverData.Instance.KillCount + 1;
 
-         //触发消息
 
-         messageMgr.dispatch("addOreCount");
 
-         const ore: Node = instantiate(resMgr.getPrefab("Ore"));
 
-         ore.parent = this.bulletLayer;
 
-         ore.position = this.node.position;
 
-         tween(ore)
 
-             .delay(0.3)
 
-             .to(2, { position: this._orePos })
 
-             .delay(0.3)
 
-             .call(() => { ore.destroy() })
 
-             .start();
 
-     }
 
-     stop(): void {
 
-         if (this.node.getWorldPosition().x <= 200) {
 
-             this.isStop = true;
 
-             super.playAnimation(RoleState.Idle);
 
-             //this.playAnimation(RoleState.Attack);
 
-             this.moveSpeed = 0;
 
-         }
 
-     }
 
-     //必须实现抽象方法
 
-     protected _getCollisionGroup(): number {
 
-         return PhysicsGroup.Enemy; //实际分组值根据项目设置
 
-     }
 
-     protected _isValidTarget(target: Role): boolean {
 
-         //通过组件类型判断是否为敌人
 
-         return target instanceof MyRole || target instanceof MyTower;
 
-     }
 
- }
 
 
  |