ProjectileConfigSO 新增 ReflectedTargetLayers:弹反后写入 HitBox.TargetLayers 的目标层显式配置;留空(Nothing)有明确缺省语义=自动翻转(PlayerHurtBox 位换 EnemyHurtBox 位、其余位保留)。Projectile/ParryableProjectile 两条弹反路径统一走 ApplyReflectedTargetLayers。现有 6 个投射物配置资产已显式配为 EnemyHurtBox。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
1.3 KiB
C#
34 lines
1.3 KiB
C#
using UnityEngine;
|
||
|
||
namespace BaseGames.Combat
|
||
{
|
||
/// <summary>
|
||
/// 抛射物配置 ScriptableObject。描述一类抛射物的运动、伤害与对象池参数。
|
||
/// </summary>
|
||
[CreateAssetMenu(menuName = "BaseGames/Combat/ProjectileConfig")]
|
||
public class ProjectileConfigSO : ScriptableObject
|
||
{
|
||
[Header("伤害")]
|
||
public DamageSourceSO DamageSource;
|
||
[Tooltip("命中目标多少次后回收。1 = 命中即消失(默认);>1 = 穿透 N 个目标;<=0 = 无限穿透直至寿命结束。")]
|
||
public int MaxHits = 1;
|
||
|
||
[Header("运动")]
|
||
public float Speed = 12f;
|
||
public float Lifetime = 5f;
|
||
public float LaunchAngleDeg = 45f;
|
||
public float GravityScale = 1f;
|
||
public float HomingStrength = 4f;
|
||
|
||
[Header("对象池")]
|
||
public string PoolKey;
|
||
|
||
[Header("弹反")]
|
||
public float ParrySpeedMultiplier = 1.2f;
|
||
public float ParryDamageMultiplier = 2.0f;
|
||
[Tooltip("弹反后本投射物可造成伤害判定的 Layer(显式配置,写入 HitBox.TargetLayers)。" +
|
||
"留空(Nothing) = 自动翻转:在原目标层基础上 PlayerHurtBox 位换为 EnemyHurtBox 位、其余位保留。")]
|
||
public LayerMask ReflectedTargetLayers;
|
||
}
|
||
}
|