48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { _decorator, Component, Node } from 'cc';
|
|
import { HeroBase } from './HeroBase';
|
|
import { UmLog } from '../../../../cc-common/cc-util/UmLog';
|
|
import { EnemyBase } from '../enemy/EnemyBase';
|
|
import { Color } from 'cc';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('Hero')
|
|
export class Hero extends HeroBase {
|
|
calculateHitMeleeDamageUpdate(dt: number) {
|
|
//override
|
|
if (this.isImmuneDamage || !this.listEnemyContact.size)
|
|
return;
|
|
|
|
for (var value of this.listEnemyContact.values()) {
|
|
if (!value.enemy) return;
|
|
|
|
value.time += dt;
|
|
|
|
if (value.time >= 2) {
|
|
value.time = 0;
|
|
var damage = value.enemy.getComponent(EnemyBase)?.dmg;
|
|
// UmLog.log("calculateHitmeleedamage => ", value.enemy.name, damage);
|
|
if (!damage) continue;
|
|
|
|
this.effectColor = Color.RED;
|
|
this.onHitDamage(damage);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
onEnemyStartContact(enemy: Node) {
|
|
super.onEnemyStartContact(enemy);
|
|
if (this.isImmuneDamage) return;
|
|
|
|
var damage = enemy.getComponent(EnemyBase)?.dmg;
|
|
if (!damage) return;
|
|
this.effectColor = Color.RED;
|
|
this.onHitDamage(damage);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|