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:
@@ -1,7 +1,6 @@
|
||||
using System.Collections;
|
||||
using Animancer;
|
||||
using UnityEngine;
|
||||
using BaseGames.Enemies.Perception;
|
||||
|
||||
namespace BaseGames.Enemies.Abilities
|
||||
{
|
||||
@@ -18,7 +17,6 @@ namespace BaseGames.Enemies.Abilities
|
||||
|
||||
[Header("感知与接触伤害")]
|
||||
[SerializeField] private BodyContactDamage _contactDamage;
|
||||
[SerializeField] private EnemySensorHub _sensorHub;
|
||||
|
||||
[Tooltip("用于追击感知判断的传感器槽位名,通常为 \"aggro\"")]
|
||||
[SerializeField] private string _aggroSlotName = "aggro";
|
||||
@@ -36,7 +34,7 @@ namespace BaseGames.Enemies.Abilities
|
||||
while (true)
|
||||
{
|
||||
if (_enemy.PlayerTransform == null) break;
|
||||
if (_sensorHub != null && !_sensorHub.IsDetecting(_aggroSlotName, _enemy.PlayerTransform.gameObject))
|
||||
if (_enemy.SensorHub != null && !_enemy.SensorHub.IsDetecting(_aggroSlotName, _enemy.PlayerTransform.gameObject))
|
||||
break;
|
||||
_enemy.MoveTo(_enemy.PlayerTransform.position);
|
||||
yield return null;
|
||||
|
||||
Reference in New Issue
Block a user