12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { _decorator, CCBoolean, CCFloat, Collider, Component, isValid, ITriggerEvent, Node, PhysicsSystem, tween, Tween, Vec3 } from 'cc';
- import { EventDispatcher } from 'db://assets/core_tgx/easy_ui_framework/EventDispatcher';
- import { GameEvent } from '../Enum/GameEvent';
- const { ccclass, property } = _decorator;
- export enum EnemyStatus {
- LIFE,
- DIE
- }
- @ccclass('EnemyComponent')
- export class EnemyComponent extends Component {
- currentHp: number = 0;
- status: EnemyStatus = EnemyStatus.LIFE;
- speed: number = 50;
- headshot:boolean = false;
- tigger: Collider = null!;
- protected onLoad(): void {
- this.tigger = this.node.getComponent(Collider)!;
- }
- start() {
- this.status = EnemyStatus.LIFE;
- this.tigger = this.node.getComponent(Collider)!;
- this.registerEvent();
- }
- private registerEvent() {
- this.tigger.on('onTriggerEnter', this.onTriggerEnter, this);
- EventDispatcher.instance.on(GameEvent.EVENT_CAMERA_SHOOT_ENEMY, this.onShootEnemy, this);
- }
- private unRegisterEvent() {
- this.tigger.off('onTriggerEnter', this.onTriggerEnter, this);
- }
- protected onTriggerEnter(event: ITriggerEvent): void {
- }
- private onShootEnemy(hitNode: Node){
- // 检查是否是当前怪物节点被击中
- if(this.node === hitNode && this.status === EnemyStatus.LIFE) {
- this.status = EnemyStatus.DIE;
-
- // 播放死亡动画或效果
- tween(this.node)
- .to(0.3, { scale: new Vec3(0, 0, 0) })
- .call(() => {
- // 销毁怪物节点
- this.node.destroy();
- })
- .start();
- }
- }
- protected onDestroy(): void {
- Tween.stopAllByTarget(this.node);
- this.unRegisterEvent();
- }
- }
|