Slash-The-Hordes/assets/Scripts/Game/Unit/Enemy/BossEnemy.ts

42 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-12-31 11:29:27 +00:00
import { Animation, Collider2D, Contact2DType, _decorator } from "cc";
import { GroupType } from "../../GroupType";
import { Enemy } from "./Enemy";
const { ccclass, property } = _decorator;
@ccclass("BossEnemy")
export class BossEnemy extends Enemy {
@property(Collider2D) private bossCollider: Collider2D;
@property(Animation) private animation: Animation;
private isAnimatingAttack = false;
public start(): void {
this.bossCollider.on(Contact2DType.BEGIN_CONTACT, this.collisionBegin, this);
this.bossCollider.on(Contact2DType.END_CONTACT, this.collisionEnd, this);
}
private collisionBegin(_selfCollider: Collider2D, otherCollider: Collider2D): void {
if (otherCollider.group === GroupType.PLAYER) {
this.animateAttack();
}
}
private collisionEnd(_selfCollider: Collider2D, otherCollider: Collider2D): void {
if (otherCollider.group === GroupType.PLAYER) {
this.animateMove();
}
}
private animateAttack(): void {
if (this.isAnimatingAttack) return;
this.isAnimatingAttack = true;
this.animation.play("Attack");
}
private animateMove(): void {
if (!this.isAnimatingAttack) return;
this.isAnimatingAttack = false;
this.animation.play("Run");
}
}