HitBox 新增 HitMode Single/Interval:Interval 用 Enter/Exit 跟踪占用 + Update 轮询,对停留目标按间隔重判,不再依赖 OnTriggerEnter 单次语义。BodyContactDamage 改用 Interval 模式,修复停留在接触判定内、无敌结束后不再受伤的 bug;FlyingEnemy 接触伤害加按目标间隔节流。ProjectileConfigSO 新增 MaxHits 默认 1 即命中即消失,Projectile 按命中预算回收,修掉默认无限穿透;弹反守卫避免反射后立即回收。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
31 lines
1018 B
C#
31 lines
1018 B
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;
|
|
}
|
|
}
|