feat: Add HurtBoxOwnerGuard to prevent multiple damage registrations from the same HitBox activation
- Implemented HurtBoxOwnerGuard to ensure that multiple HurtBoxes on the same character do not register damage multiple times during a single HitBox activation. - Added custom editor for HitBox to facilitate the creation of shape colliders with HitBoxColliderProxy. - Introduced PhysicsPerceptionSystem for enemy perception, supporting multiple detection modes including RangeCircle, BatchLOS, FanCast, and BoxCast. - Created EnemyPatrolZone to define patrol and chase areas for enemies, allowing for shared zones among multiple enemies. - Added BD_IsOutsideZone conditional task for Behavior Designer to check if an enemy or player is outside a defined patrol zone.
This commit is contained in:
@@ -47,11 +47,14 @@ namespace BaseGames.Input
|
||||
|
||||
// ── Polling ───────────────────────────────────────────────────────────
|
||||
public Vector2 MoveInput { get; private set; }
|
||||
/// <summary>跳跃键当前是否处于按下状态。供 JumpState 在进入时检测短按是否已松开。</summary>
|
||||
public bool IsJumpHeld => _jumpAction != null && _jumpAction.IsPressed();
|
||||
|
||||
// ── Runtime state ─────────────────────────────────────────────────────
|
||||
private InputActionMap _gameplay;
|
||||
private InputActionMap _ui;
|
||||
private bool _isBound;
|
||||
private InputAction _jumpAction;
|
||||
|
||||
private void EnsureInitialized()
|
||||
{
|
||||
@@ -92,6 +95,7 @@ namespace BaseGames.Input
|
||||
_gameplay = null;
|
||||
_ui = null;
|
||||
_isBound = false;
|
||||
_jumpAction = null;
|
||||
EnsureInitialized();
|
||||
}
|
||||
|
||||
@@ -171,6 +175,7 @@ namespace BaseGames.Input
|
||||
|
||||
BindStarted(_gameplay, "Jump", () => JumpStartedEvent?.Invoke());
|
||||
BindCanceled(_gameplay, "Jump", () => JumpCancelledEvent?.Invoke());
|
||||
_jumpAction = _gameplay.FindAction("Jump", throwIfNotFound: false);
|
||||
BindStarted(_gameplay, "Attack", () => AttackEvent?.Invoke());
|
||||
BindStarted(_gameplay, "Parry", () => ParryEvent?.Invoke());
|
||||
BindStarted(_gameplay, "Dash", () => DashEvent?.Invoke());
|
||||
|
||||
Reference in New Issue
Block a user