feat(combat): 投射物接入伤害目标层过滤,弹反阵营/目标同步翻转
HitBox 暴露 TargetLayers 运行时读写。Projectile 缓存预制体初始目标层并在 Initialize 还原(对象池复用不被上一发弹反污染);ReflectAsPlayerProjectile 时目标层随阵营翻转(PlayerHurtBox→EnemyHurtBox,保留可破坏物等其他位)。 ParryableProjectile 绕过 HitBox 自行判定,补上同样的目标层过滤;并修复其弹反分支不切 PlayerProjectile 层的问题——原先反射后仍留在 EnemyProjectile 层,碰撞矩阵 EnemyProjectile↔EnemyHurtBox 不碰撞,反射弹永远打不中敌人。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -299,6 +299,16 @@ namespace BaseGames.Combat
|
||||
// Update 轮询时的临时缓冲(避免遍历字典时修改 + 降低 GC)
|
||||
private readonly List<Collider2D> _intervalTickBuffer = new(8);
|
||||
|
||||
/// <summary>
|
||||
/// 伤害目标层掩码(实例级过滤,叠加在 Physics2D 碰撞矩阵之上)。
|
||||
/// 运行时可写:投射物弹反换阵营时由 Projectile 翻转目标侧。
|
||||
/// </summary>
|
||||
public LayerMask TargetLayers
|
||||
{
|
||||
get => _targetLayers;
|
||||
set => _targetLayers = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 配置为周期接触伤害模式(BodyContactDamage 等持续接触源在 OnEnable 时调用)。
|
||||
/// 使持续接触的判定盒按 <paramref name="interval"/> 对停留目标重复造成伤害,
|
||||
|
||||
Reference in New Issue
Block a user