fix(combat): 弹反阵营感知——仅玩家弹反才翻转投射物阵营与目标层
新增 Projectile.ReflectBy(parrier):按弹反者根节点 Tag 区分阵营。玩家弹反走原 ReflectAsPlayerProjectile(切 PlayerProjectile 层+切换伤害目标层);敌人弹反敌人投射物时阵营层与目标层均保持不变(仍是敌方投射物、仍打玩家侧),仅反转方向并重置命中记录与预算。HurtBox 弹反分支改传弹反者 Transform;ParryableProjectile 手写弹反分支同步加阵营判断。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -34,12 +34,16 @@ namespace BaseGames.Combat
|
||||
Direction = -Direction;
|
||||
_rb.velocity = Direction * _config.Speed * _config.ParrySpeedMultiplier;
|
||||
|
||||
// 阵营随弹反翻转:切到 PlayerProjectile 层(否则碰撞矩阵
|
||||
// 仅当弹反者是玩家时翻转阵营:切到 PlayerProjectile 层(否则碰撞矩阵
|
||||
// EnemyProjectile↔EnemyHurtBox 不碰撞,反射后永远打不中敌人),
|
||||
// 伤害目标层同步切换(优先取配置的 ReflectedTargetLayers)。
|
||||
int playerProjLayer = LayerMask.NameToLayer("PlayerProjectile");
|
||||
if (playerProjLayer >= 0) gameObject.layer = playerProjLayer;
|
||||
ApplyReflectedTargetLayers();
|
||||
// 敌人弹反敌人投射物:阵营与目标层保持不变,仅上面已反转方向。
|
||||
if (parrySystem.transform.root.CompareTag("Player"))
|
||||
{
|
||||
int playerProjLayer = LayerMask.NameToLayer("PlayerProjectile");
|
||||
if (playerProjLayer >= 0) gameObject.layer = playerProjLayer;
|
||||
ApplyReflectedTargetLayers();
|
||||
}
|
||||
|
||||
if (_reflectSource != null)
|
||||
DamageInfo = DamageInfo.From(_reflectSource);
|
||||
|
||||
Reference in New Issue
Block a user