|
@@ -135,7 +135,10 @@ export class TornadoComponent extends Component {
|
|
|
}
|
|
|
|
|
|
protected onKilledHandler(targetTornado: TornadoComponent) {
|
|
|
- StormSunderAudioMgr.playOneShot(StormSunderAudioMgr.getMusicIdName(5), 1.0);
|
|
|
+ if (!this.ai) {
|
|
|
+ StormSunderAudioMgr.playOneShot(StormSunderAudioMgr.getMusicIdName(5), 1.0);
|
|
|
+ }
|
|
|
+
|
|
|
this.curHitObj = targetTornado.node;
|
|
|
this.addExpByKill();
|
|
|
this.killed(targetTornado.node);
|
|
@@ -202,7 +205,7 @@ export class TornadoComponent extends Component {
|
|
|
|
|
|
if (propComponent.status == PropStatus.DIE) return
|
|
|
// 造成伤害
|
|
|
- propComponent.hurt(this.attack);
|
|
|
+ propComponent.hurt(this.attack, this.ai);
|
|
|
|
|
|
// 检查道具是否被摧毁
|
|
|
if (propComponent.currentHp <= 0) {
|
|
@@ -233,33 +236,6 @@ export class TornadoComponent extends Component {
|
|
|
this.addExpByKill();
|
|
|
}
|
|
|
}
|
|
|
- } else if (otherCollider.getGroup() == 1 << 3) {
|
|
|
- const targetTornado = otherCollider.node.parent.getComponent(TornadoComponent);
|
|
|
- if (!targetTornado) return;
|
|
|
-
|
|
|
- if (event.selfCollider.node.name == 'RigibodyStorm') {
|
|
|
- if (event.otherCollider.node.name == 'RigibodyStorm') {
|
|
|
- const distance = Vec3.distance(event.selfCollider.node.worldPosition, otherCollider.node.worldPosition);
|
|
|
-
|
|
|
- // 增加碰撞检测的容差范围
|
|
|
- const collisionThreshold = 3; // 增加检测范围
|
|
|
- if (distance <= collisionThreshold) {
|
|
|
- // 添加额外的速度检查,确保不会因为速度太快而错过碰撞
|
|
|
- const relativeSpeed = Math.abs(this.speed - targetTornado.speed);
|
|
|
- const minSpeedThreshold = 5; // 最小速度阈值
|
|
|
-
|
|
|
- if (relativeSpeed >= minSpeedThreshold || distance <= 1.5) { // 如果速度差够大或距离非常近
|
|
|
- if (this.currentLv > targetTornado.currentLv) {
|
|
|
- StormSunderAudioMgr.playOneShot(StormSunderAudioMgr.getMusicIdName(5), 1.0);
|
|
|
- this.curHitObj = targetTornado.node;
|
|
|
- this.addExpByKill();
|
|
|
- this.killed(targetTornado.node);
|
|
|
- Effect2DUIMgr.inst.addPKInfo(this.nickName, targetTornado.nickName);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
} else if (otherCollider.getGroup() === 1 << 2) { // 处理障碍物持续碰撞
|
|
|
// 如果正在碰撞中,直接返回
|
|
|
if (this.isColliding) return;
|