refactor(ai): E001 贯彻"AI只决策"——每状态=一能力(Model A)
AI 决策层(E001CaoZhiAi + PerceptionStateMachine)彻底移除所有 actuation: 不再有 Mover.Stop/FacePlayer/UseChaseSpeed/WalkRandom、也不再 SetPhase。 每个 AI 状态只声明触发哪个能力 id,行为(移动/朝向/停/速度/动画/伤害/ 阶段声明)全部下沉到对应能力里。 - 新增 IdleAbility/PatrolAbility/AlertAbility:待机静止、巡逻游走、 警觉朝向玩家,各自 SetAiPhase 驱动阶段动画。 - ContactChaseAbility 追击进入时自设 RunSpeed + Chase 阶段(原在 AI)。 - PerceptionStateMachine 改为 AddAbilityState:进入/每帧 EnsureAbility (被打断/受击后自动重触发)、离开 InterruptAbilities;转换规则不变。 - IEnemyActor/EnemyBrainContext 移除已无用的 SetPhase,保留 HasAlertState。 - 新增 SO:ABL_E001_Idle(e001_idle)、ABL_E001_Patrol(e001_patrol)。 - 脚手架 PlaceE001 与 ENM_CaoZhi 预制体同步为四能力结构;TestRoomA 实例替换为规范预制体实例。 PlayMode 验证:Chase→ContactChaseAbility、脱离感知→Move_Patrol→ PatrolAbility,阶段由能力设置,无报错。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 9050afa76362dff469c64fbb48c9ff8d, type: 3}
|
||||||
|
m_Name: ABL_E001_Idle
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
abilityId: e001_idle
|
||||||
|
attackSequence: []
|
||||||
|
cooldown: 0
|
||||||
|
telegraphVfxKey:
|
||||||
|
telegraphDuration: 0
|
||||||
|
interruptOnHurt: 1
|
||||||
|
interruptOnStagger: 1
|
||||||
|
preferredMinRange: 0
|
||||||
|
preferredMaxRange: 5
|
||||||
|
requiresLineOfSight: 0
|
||||||
|
requiresGrounded: 1
|
||||||
|
exclusionGroup:
|
||||||
|
priority: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 39972ac36f68c5a40a696350ee5b45ef
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 9050afa76362dff469c64fbb48c9ff8d, type: 3}
|
||||||
|
m_Name: ABL_E001_Patrol
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
abilityId: e001_patrol
|
||||||
|
attackSequence: []
|
||||||
|
cooldown: 0
|
||||||
|
telegraphVfxKey:
|
||||||
|
telegraphDuration: 0
|
||||||
|
interruptOnHurt: 1
|
||||||
|
interruptOnStagger: 1
|
||||||
|
preferredMinRange: 0
|
||||||
|
preferredMaxRange: 5
|
||||||
|
requiresLineOfSight: 0
|
||||||
|
requiresGrounded: 1
|
||||||
|
exclusionGroup:
|
||||||
|
priority: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ea84fa0bad3eb9c44841fbe355923cbd
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -29,7 +29,9 @@ Transform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 7511576130651589432}
|
- {fileID: 7280204190161057260}
|
||||||
|
- {fileID: 869537028244990118}
|
||||||
|
- {fileID: 3016991558969992483}
|
||||||
- {fileID: 7963057630187492059}
|
- {fileID: 7963057630187492059}
|
||||||
m_Father: {fileID: 1584616613766364365}
|
m_Father: {fileID: 1584616613766364365}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@@ -61,7 +63,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 2378558940863543267}
|
m_GameObject: {fileID: 2378558940863543267}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0.4, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@@ -155,6 +157,63 @@ SpriteRenderer:
|
|||||||
m_WasSpriteAssigned: 1
|
m_WasSpriteAssigned: 1
|
||||||
m_MaskInteraction: 0
|
m_MaskInteraction: 0
|
||||||
m_SpriteSortPoint: 0
|
m_SpriteSortPoint: 0
|
||||||
|
--- !u!1 &3800849059563030653
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3016991558969992483}
|
||||||
|
- component: {fileID: 6670918032049014100}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: AlertAbility_Alert
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3016991558969992483
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3800849059563030653}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1509821362700786356}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &6670918032049014100
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3800849059563030653}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c51a5a3300c5d2549b3f8826d8c54fa8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: 157dc45e6b444c64ea1a80a5886a8b92, type: 2}
|
||||||
|
_alertClip:
|
||||||
|
_FadeDuration: 0.25
|
||||||
|
_Speed: 1
|
||||||
|
_Events:
|
||||||
|
_NormalizedTimes: []
|
||||||
|
_Callbacks: []
|
||||||
|
_Names: []
|
||||||
|
_Clip: {fileID: 0}
|
||||||
|
_NormalizedStartTime: NaN
|
||||||
|
references:
|
||||||
|
version: 2
|
||||||
|
RefIds: []
|
||||||
--- !u!1 &4060394683168505230
|
--- !u!1 &4060394683168505230
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -190,7 +249,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 4060394683168505230}
|
m_GameObject: {fileID: 4060394683168505230}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 1968.4287, y: 77.1997, z: 0}
|
m_LocalPosition: {x: -19.75632, y: 8.950914, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
@@ -483,10 +542,10 @@ MonoBehaviour:
|
|||||||
gizmoColor: {r: 0, g: 0.8, b: 1, a: 1}
|
gizmoColor: {r: 0, g: 0.8, b: 1, a: 1}
|
||||||
isDisabled: 0
|
isDisabled: 0
|
||||||
tickInterval: 0
|
tickInterval: 0
|
||||||
radius: 0
|
radius: 8
|
||||||
detectLayer:
|
detectLayer:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 0
|
m_Bits: 512
|
||||||
fanAngle: 0
|
fanAngle: 0
|
||||||
fanRayCount: 0
|
fanRayCount: 0
|
||||||
boxSize: {x: 0, y: 0}
|
boxSize: {x: 0, y: 0}
|
||||||
@@ -516,6 +575,51 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_definitionId: E001
|
_definitionId: E001
|
||||||
|
--- !u!1 &4880943584691488989
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7280204190161057260}
|
||||||
|
- component: {fileID: 2415446021001155414}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: IdleAbility_Idle
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &7280204190161057260
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4880943584691488989}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1509821362700786356}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &2415446021001155414
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4880943584691488989}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 599faa708ea4a0f4b96ca9a3691523d7, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: 39972ac36f68c5a40a696350ee5b45ef, type: 2}
|
||||||
--- !u!1 &6141681234124103774
|
--- !u!1 &6141681234124103774
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -670,7 +774,7 @@ MonoBehaviour:
|
|||||||
_hitInterval: 0.5
|
_hitInterval: 0.5
|
||||||
_targetLayers:
|
_targetLayers:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 32768
|
m_Bits: 4294967295
|
||||||
_id:
|
_id:
|
||||||
_rivalHitBoxMask:
|
_rivalHitBoxMask:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@@ -688,6 +792,51 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_repeatInterval: 0.5
|
_repeatInterval: 0.5
|
||||||
|
--- !u!1 &6994153900739920753
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 869537028244990118}
|
||||||
|
- component: {fileID: 1668795692422874824}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: PatrolAbility_Patrol
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &869537028244990118
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6994153900739920753}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1509821362700786356}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1668795692422874824
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6994153900739920753}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 36ef5fe655e471c448e7c1300355888b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: ea84fa0bad3eb9c44841fbe355923cbd, type: 2}
|
||||||
--- !u!1 &8344198090396325649
|
--- !u!1 &8344198090396325649
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -768,62 +917,5 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d7b7a233d7f70aa4f86b473412b826de, type: 3}
|
m_Script: {fileID: 11500000, guid: d7b7a233d7f70aa4f86b473412b826de, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_onDamageDealt: {fileID: 0}
|
_onDamageDealt: {fileID: 11400000, guid: eebd58cfef3527940949a8a7655a343b, type: 2}
|
||||||
_onHitConfirmed: {fileID: 11400000, guid: a67d56f5124e0db4f98f326c74be8091, type: 2}
|
_onHitConfirmed: {fileID: 11400000, guid: a67d56f5124e0db4f98f326c74be8091, type: 2}
|
||||||
--- !u!1 &9197466520231538566
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 7511576130651589432}
|
|
||||||
- component: {fileID: 4229412279466832384}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: PlayClipAbility_Alert
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &7511576130651589432
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9197466520231538566}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1509821362700786356}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &4229412279466832384
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 9197466520231538566}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a26fca0fa72894a4da1a5a58ee023154, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_config: {fileID: 11400000, guid: 157dc45e6b444c64ea1a80a5886a8b92, type: 2}
|
|
||||||
_clip:
|
|
||||||
_FadeDuration: 0.25
|
|
||||||
_Speed: 1
|
|
||||||
_Events:
|
|
||||||
_NormalizedTimes: []
|
|
||||||
_Callbacks: []
|
|
||||||
_Names: []
|
|
||||||
_Clip: {fileID: 0}
|
|
||||||
_NormalizedStartTime: NaN
|
|
||||||
references:
|
|
||||||
version: 2
|
|
||||||
RefIds: []
|
|
||||||
|
|||||||
@@ -4540,128 +4540,6 @@ MonoBehaviour:
|
|||||||
_noiseFrequency: 1
|
_noiseFrequency: 1
|
||||||
_dedicatedCamera: {fileID: 446229637}
|
_dedicatedCamera: {fileID: 446229637}
|
||||||
_dedicatedPriority: 20
|
_dedicatedPriority: 20
|
||||||
--- !u!1 &244244683
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 244244684}
|
|
||||||
- component: {fileID: 244244685}
|
|
||||||
- component: {fileID: 244244686}
|
|
||||||
- component: {fileID: 244244687}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Visual
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &244244684
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 244244683}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1409939202}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!95 &244244685
|
|
||||||
Animator:
|
|
||||||
serializedVersion: 5
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 244244683}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_Avatar: {fileID: 0}
|
|
||||||
m_Controller: {fileID: 0}
|
|
||||||
m_CullingMode: 0
|
|
||||||
m_UpdateMode: 0
|
|
||||||
m_ApplyRootMotion: 0
|
|
||||||
m_LinearVelocityBlending: 0
|
|
||||||
m_StabilizeFeet: 0
|
|
||||||
m_WarningMessage:
|
|
||||||
m_HasTransformHierarchy: 1
|
|
||||||
m_AllowConstantClipSamplingOptimization: 1
|
|
||||||
m_KeepAnimatorStateOnDisable: 0
|
|
||||||
m_WriteDefaultValuesOnDisable: 0
|
|
||||||
--- !u!114 &244244686
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 244244683}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 0ad50f81b1d25c441943c37a89ba23f6, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_Animator: {fileID: 244244685}
|
|
||||||
_Transitions: {fileID: 0}
|
|
||||||
_ActionOnDisable: 0
|
|
||||||
--- !u!212 &244244687
|
|
||||||
SpriteRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 244244683}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_CastShadows: 0
|
|
||||||
m_ReceiveShadows: 0
|
|
||||||
m_DynamicOccludee: 1
|
|
||||||
m_StaticShadowCaster: 0
|
|
||||||
m_MotionVectors: 1
|
|
||||||
m_LightProbeUsage: 1
|
|
||||||
m_ReflectionProbeUsage: 1
|
|
||||||
m_RayTracingMode: 0
|
|
||||||
m_RayTraceProcedural: 0
|
|
||||||
m_RenderingLayerMask: 1
|
|
||||||
m_RendererPriority: 0
|
|
||||||
m_Materials:
|
|
||||||
- {fileID: 2100000, guid: 6c1a7b756ba1d4646a405f7f6e0833ad, type: 2}
|
|
||||||
m_StaticBatchInfo:
|
|
||||||
firstSubMesh: 0
|
|
||||||
subMeshCount: 0
|
|
||||||
m_StaticBatchRoot: {fileID: 0}
|
|
||||||
m_ProbeAnchor: {fileID: 0}
|
|
||||||
m_LightProbeVolumeOverride: {fileID: 0}
|
|
||||||
m_ScaleInLightmap: 1
|
|
||||||
m_ReceiveGI: 1
|
|
||||||
m_PreserveUVs: 0
|
|
||||||
m_IgnoreNormalsForChartDetection: 0
|
|
||||||
m_ImportantGI: 0
|
|
||||||
m_StitchLightmapSeams: 1
|
|
||||||
m_SelectedEditorRenderState: 0
|
|
||||||
m_MinimumChartSize: 4
|
|
||||||
m_AutoUVMaxDistance: 0.5
|
|
||||||
m_AutoUVMaxAngle: 89
|
|
||||||
m_LightmapParameters: {fileID: 0}
|
|
||||||
m_SortingLayerID: 0
|
|
||||||
m_SortingLayer: 0
|
|
||||||
m_SortingOrder: 0
|
|
||||||
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_FlipX: 0
|
|
||||||
m_FlipY: 0
|
|
||||||
m_DrawMode: 0
|
|
||||||
m_Size: {x: 1, y: 1}
|
|
||||||
m_AdaptiveModeThreshold: 0.5
|
|
||||||
m_SpriteTileMode: 0
|
|
||||||
m_WasSpriteAssigned: 1
|
|
||||||
m_MaskInteraction: 0
|
|
||||||
m_SpriteSortPoint: 0
|
|
||||||
--- !u!1 &247590774
|
--- !u!1 &247590774
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -4936,39 +4814,6 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1329258003}
|
m_Father: {fileID: 1329258003}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &269773824
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 269773825}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Abilities
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &269773825
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 269773824}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 733617855}
|
|
||||||
- {fileID: 1231992168}
|
|
||||||
m_Father: {fileID: 1409939202}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &269960158
|
--- !u!1 &269960158
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -12593,63 +12438,6 @@ MonoBehaviour:
|
|||||||
_noiseFrequency: 1
|
_noiseFrequency: 1
|
||||||
_dedicatedCamera: {fileID: 849840042}
|
_dedicatedCamera: {fileID: 849840042}
|
||||||
_dedicatedPriority: 20
|
_dedicatedPriority: 20
|
||||||
--- !u!1 &733617854
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 733617855}
|
|
||||||
- component: {fileID: 733617856}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: PlayClipAbility_Alert
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &733617855
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 733617854}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 269773825}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &733617856
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 733617854}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a26fca0fa72894a4da1a5a58ee023154, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_config: {fileID: 11400000, guid: 157dc45e6b444c64ea1a80a5886a8b92, type: 2}
|
|
||||||
_clip:
|
|
||||||
_FadeDuration: 0.25
|
|
||||||
_Speed: 1
|
|
||||||
_Events:
|
|
||||||
_NormalizedTimes: []
|
|
||||||
_Callbacks: []
|
|
||||||
_Names: []
|
|
||||||
_Clip: {fileID: 0}
|
|
||||||
_NormalizedStartTime: NaN
|
|
||||||
references:
|
|
||||||
version: 2
|
|
||||||
RefIds: []
|
|
||||||
--- !u!1 &734112388
|
--- !u!1 &734112388
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -16076,88 +15864,6 @@ Transform:
|
|||||||
- {fileID: 1476535863}
|
- {fileID: 1476535863}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &985676459
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 985676462}
|
|
||||||
- component: {fileID: 985676461}
|
|
||||||
- component: {fileID: 985676460}
|
|
||||||
m_Layer: 27
|
|
||||||
m_Name: HurtBox
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &985676460
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 985676459}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: d7b7a233d7f70aa4f86b473412b826de, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_onDamageDealt: {fileID: 0}
|
|
||||||
_onHitConfirmed: {fileID: 11400000, guid: a67d56f5124e0db4f98f326c74be8091, type: 2}
|
|
||||||
--- !u!70 &985676461
|
|
||||||
CapsuleCollider2D:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 985676459}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_Density: 1
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_ForceSendLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ForceReceiveLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ContactCaptureLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_CallbackLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_UsedByEffector: 0
|
|
||||||
m_UsedByComposite: 0
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Size: {x: 0.55, y: 0.75}
|
|
||||||
m_Direction: 0
|
|
||||||
--- !u!4 &985676462
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 985676459}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1409939202}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &989663221
|
--- !u!1 &989663221
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -21432,74 +21138,6 @@ PolygonCollider2D:
|
|||||||
- {x: -3.5, y: 3}
|
- {x: -3.5, y: 3}
|
||||||
- {x: -3.5, y: -3}
|
- {x: -3.5, y: -3}
|
||||||
m_UseDelaunayMesh: 0
|
m_UseDelaunayMesh: 0
|
||||||
--- !u!1 &1231992167
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1231992168}
|
|
||||||
- component: {fileID: 1231992169}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: ContactChaseAbility_Chase
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &1231992168
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1231992167}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 269773825}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &1231992169
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1231992167}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 7bfd6f44ebdb5bf489ab6703b1ee429b, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_config: {fileID: 11400000, guid: 0adeaa8a8508fbd40986dbb71cc85acd, type: 2}
|
|
||||||
_loopClip:
|
|
||||||
_FadeDuration: 0.25
|
|
||||||
_Speed: 1
|
|
||||||
_Events:
|
|
||||||
_NormalizedTimes: []
|
|
||||||
_Callbacks: []
|
|
||||||
_Names: []
|
|
||||||
_Clip: {fileID: 0}
|
|
||||||
_NormalizedStartTime: NaN
|
|
||||||
_endClip:
|
|
||||||
_FadeDuration: 0.25
|
|
||||||
_Speed: 1
|
|
||||||
_Events:
|
|
||||||
_NormalizedTimes: []
|
|
||||||
_Callbacks: []
|
|
||||||
_Names: []
|
|
||||||
_Clip: {fileID: 0}
|
|
||||||
_NormalizedStartTime: NaN
|
|
||||||
_contactDamage: {fileID: 1380656261}
|
|
||||||
_aggroSlotName: aggro
|
|
||||||
references:
|
|
||||||
version: 2
|
|
||||||
RefIds: []
|
|
||||||
--- !u!1 &1234739833
|
--- !u!1 &1234739833
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -25553,111 +25191,6 @@ MonoBehaviour:
|
|||||||
_noiseFrequency: 1
|
_noiseFrequency: 1
|
||||||
_dedicatedCamera: {fileID: 1141609723}
|
_dedicatedCamera: {fileID: 1141609723}
|
||||||
_dedicatedPriority: 20
|
_dedicatedPriority: 20
|
||||||
--- !u!1 &1380656260
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1380656264}
|
|
||||||
- component: {fileID: 1380656263}
|
|
||||||
- component: {fileID: 1380656262}
|
|
||||||
- component: {fileID: 1380656261}
|
|
||||||
m_Layer: 25
|
|
||||||
m_Name: ContactDamageZone
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &1380656261
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1380656260}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 6def12af0589a9545b80eb5accf61bb6, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_repeatInterval: 0.5
|
|
||||||
--- !u!114 &1380656262
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1380656260}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a655e2461396a8348a32a13144438e8e, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_defaultSource: {fileID: 11400000, guid: caae9c7600281fe4e8d8637fa3fd2ca1, type: 2}
|
|
||||||
_hitCooldown: 0.1
|
|
||||||
_hitMode: 1
|
|
||||||
_hitInterval: 0.5
|
|
||||||
_targetLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 32768
|
|
||||||
_id:
|
|
||||||
_rivalHitBoxMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
--- !u!58 &1380656263
|
|
||||||
CircleCollider2D:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1380656260}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_Density: 1
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_ForceSendLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ForceReceiveLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ContactCaptureLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_CallbackLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_IsTrigger: 1
|
|
||||||
m_UsedByEffector: 0
|
|
||||||
m_UsedByComposite: 0
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Radius: 0.4
|
|
||||||
--- !u!4 &1380656264
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1380656260}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1409939202}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &1387959175
|
--- !u!1 &1387959175
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -26190,357 +25723,6 @@ PolygonCollider2D:
|
|||||||
- {x: -2.5, y: 6}
|
- {x: -2.5, y: 6}
|
||||||
- {x: -2.5, y: -6}
|
- {x: -2.5, y: -6}
|
||||||
m_UseDelaunayMesh: 0
|
m_UseDelaunayMesh: 0
|
||||||
--- !u!1 &1409939192
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1409939202}
|
|
||||||
- component: {fileID: 1409939201}
|
|
||||||
- component: {fileID: 1409939200}
|
|
||||||
- component: {fileID: 1409939199}
|
|
||||||
- component: {fileID: 1409939198}
|
|
||||||
- component: {fileID: 1409939197}
|
|
||||||
- component: {fileID: 1409939196}
|
|
||||||
- component: {fileID: 1409939195}
|
|
||||||
- component: {fileID: 1409939194}
|
|
||||||
- component: {fileID: 1409939193}
|
|
||||||
m_Layer: 13
|
|
||||||
m_Name: ENM_CaoZhi
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &1409939193
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: c0026fe36cfaffc4e95698bccd0a8380, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_slots:
|
|
||||||
- slotName: aggro
|
|
||||||
type: 0
|
|
||||||
offset: {x: 0, y: 0}
|
|
||||||
gizmoColor: {r: 1, g: 0.6, b: 0.1, a: 1}
|
|
||||||
isDisabled: 0
|
|
||||||
tickInterval: 0
|
|
||||||
radius: 5
|
|
||||||
detectLayer:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 512
|
|
||||||
fanAngle: 0
|
|
||||||
fanRayCount: 0
|
|
||||||
boxSize: {x: 0, y: 0}
|
|
||||||
boxOffset: {x: 0, y: 0}
|
|
||||||
losBlockMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
losRayCount: 0
|
|
||||||
losMinVisibility: 0
|
|
||||||
rayDirection: {x: 0, y: 0}
|
|
||||||
rayLength: 0
|
|
||||||
raySpread: 0
|
|
||||||
rayCount: 0
|
|
||||||
obstructLayer:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
- slotName: los
|
|
||||||
type: 1
|
|
||||||
offset: {x: 0, y: 0}
|
|
||||||
gizmoColor: {r: 0, g: 0.8, b: 1, a: 1}
|
|
||||||
isDisabled: 0
|
|
||||||
tickInterval: 0
|
|
||||||
radius: 0
|
|
||||||
detectLayer:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
fanAngle: 0
|
|
||||||
fanRayCount: 0
|
|
||||||
boxSize: {x: 0, y: 0}
|
|
||||||
boxOffset: {x: 0, y: 0}
|
|
||||||
losBlockMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
losRayCount: 0
|
|
||||||
losMinVisibility: 0
|
|
||||||
rayDirection: {x: 0, y: 0}
|
|
||||||
rayLength: 0
|
|
||||||
raySpread: 0
|
|
||||||
rayCount: 0
|
|
||||||
obstructLayer:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
--- !u!114 &1409939194
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 44871319d7318de40b9ac21757b69c78, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_edgeCheckFwdOffset: 0.3
|
|
||||||
_edgeCheckDownLen: 0.6
|
|
||||||
_groundMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 256
|
|
||||||
--- !u!114 &1409939195
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 77030faff3812a7429edeaca91e9c873, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
movementSpeed: 5
|
|
||||||
cornerSpeed: 100
|
|
||||||
jumpSpeed: 5
|
|
||||||
fallSpeed: 5
|
|
||||||
climbSpeed: 5
|
|
||||||
enableAgentRotation: 1
|
|
||||||
enabledFeatures: -1
|
|
||||||
--- !u!114 &1409939196
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 3864fd1487d130847b11b82f276d11b6, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
height: 1
|
|
||||||
maxSlopeAngle: 180
|
|
||||||
autoRepathIntervall: 1
|
|
||||||
maximumDistanceToPathStart: 0.7
|
|
||||||
linkTraversalCostMultipliers:
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
allowCloseEnoughPath: 0
|
|
||||||
movementSpeed: 5
|
|
||||||
cornerSpeed: 100
|
|
||||||
jumpSpeed: 5
|
|
||||||
fallSpeed: 5
|
|
||||||
climbSpeed: 5
|
|
||||||
enableDebugMessages: 0
|
|
||||||
navTagTraversalCostMultipliers:
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
status: 0
|
|
||||||
navTagMask: -1
|
|
||||||
--- !u!114 &1409939197
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 20bd45717dc17a94581eee24814fe60c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_config: {fileID: 11400000, guid: 508afd17a0cf2fe47935c78097c3b093, type: 2}
|
|
||||||
_spriteRenderer: {fileID: 244244687}
|
|
||||||
_enableTurnAnimation: 0
|
|
||||||
_animancer: {fileID: 244244686}
|
|
||||||
_animConfig: {fileID: 11400000, guid: 06936c5bc3358904cb269abdfa60ed14, type: 2}
|
|
||||||
_visualRoot: {fileID: 244244684}
|
|
||||||
_spriteDefaultFacingDir: 1
|
|
||||||
_navJumpMaxHeight: 6
|
|
||||||
_navJumpMaxDist: 10
|
|
||||||
_groundCheckCollider: {fileID: 0}
|
|
||||||
_groundCheckDist: 0.15
|
|
||||||
_groundCheckCount: 3
|
|
||||||
_groundMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 68159744
|
|
||||||
_wallCheckDist: 0.2
|
|
||||||
_ledgeCheckFwdOffset: 0.1
|
|
||||||
_ledgeCheckDownDist: 0.4
|
|
||||||
_wallMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
_dbg_FacingDirection: 0
|
|
||||||
_dbg_VelocityX: 0
|
|
||||||
_dbg_VelocityY: 0
|
|
||||||
_dbg_IsGrounded: 0
|
|
||||||
_dbg_IsWallAhead: 0
|
|
||||||
_dbg_IsLedgeAhead: 0
|
|
||||||
_dbg_IsTurning: 0
|
|
||||||
_dbg_NavDriving: 0
|
|
||||||
_dbg_Input_MoveDir: 0
|
|
||||||
_dbg_Input_MoveSpeed: 0
|
|
||||||
_dbg_Input_WantStop: 0
|
|
||||||
_dbg_Input_WantFace: 0
|
|
||||||
_dbg_Input_FaceTargetPos: {x: 0, y: 0}
|
|
||||||
_dbg_Input_FaceDir: 0
|
|
||||||
--- !u!114 &1409939198
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 48bc7c82cd2c1df4ba7103160db48a11, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_onDifficultyChanged: {fileID: 11400000, guid: 156874a2ffc17694e91e949abbf97fee, type: 2}
|
|
||||||
--- !u!114 &1409939199
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 1a2dbfbcc31a4c34cbd3ac893f02e07d, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_enemyId:
|
|
||||||
_statsSO: {fileID: 11400000, guid: 508afd17a0cf2fe47935c78097c3b093, type: 2}
|
|
||||||
_animConfig: {fileID: 11400000, guid: 06936c5bc3358904cb269abdfa60ed14, type: 2}
|
|
||||||
_stats: {fileID: 1409939198}
|
|
||||||
_movement: {fileID: 1409939197}
|
|
||||||
_combat: {fileID: 0}
|
|
||||||
_animancer: {fileID: 244244686}
|
|
||||||
_feedback: {fileID: 0}
|
|
||||||
_hurtBox: {fileID: 985676460}
|
|
||||||
_patrolZone: {fileID: 0}
|
|
||||||
_onEnemyDied: {fileID: 11400000, guid: def849e2c5ec8204eae6b083b02307aa, type: 2}
|
|
||||||
_onPlayerSpawned: {fileID: 11400000, guid: 7e2c7e614f6627b449a244ab44443adf, type: 2}
|
|
||||||
_btIdleTickInterval: 0.3
|
|
||||||
_btPatrolTickInterval: 0.15
|
|
||||||
_btAlertTickInterval: 0.08
|
|
||||||
_btChaseTickInterval: 0.05
|
|
||||||
_btCombatTickInterval: 0
|
|
||||||
_dbg_CurrentState: 0
|
|
||||||
_dbg_AiPhase: 0
|
|
||||||
_dbg_HasPlayer: 0
|
|
||||||
_dbg_LastKnownPos: {x: 0, y: 0}
|
|
||||||
_dbg_BtTickInterval: 0
|
|
||||||
_autoPlayPhaseAnimation: 1
|
|
||||||
--- !u!61 &1409939200
|
|
||||||
BoxCollider2D:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_Density: 1
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_ForceSendLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ForceReceiveLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ContactCaptureLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_CallbackLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_UsedByEffector: 0
|
|
||||||
m_UsedByComposite: 0
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_SpriteTilingProperty:
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
pivot: {x: 0, y: 0}
|
|
||||||
oldSize: {x: 0, y: 0}
|
|
||||||
newSize: {x: 0, y: 0}
|
|
||||||
adaptiveTilingThreshold: 0
|
|
||||||
drawMode: 0
|
|
||||||
adaptiveTiling: 0
|
|
||||||
m_AutoTiling: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Size: {x: 0.6, y: 0.8}
|
|
||||||
m_EdgeRadius: 0
|
|
||||||
--- !u!50 &1409939201
|
|
||||||
Rigidbody2D:
|
|
||||||
serializedVersion: 4
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
m_BodyType: 0
|
|
||||||
m_Simulated: 1
|
|
||||||
m_UseFullKinematicContacts: 0
|
|
||||||
m_UseAutoMass: 0
|
|
||||||
m_Mass: 1
|
|
||||||
m_LinearDrag: 0
|
|
||||||
m_AngularDrag: 0.05
|
|
||||||
m_GravityScale: 2
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_Interpolate: 0
|
|
||||||
m_SleepingMode: 1
|
|
||||||
m_CollisionDetection: 1
|
|
||||||
m_Constraints: 4
|
|
||||||
--- !u!4 &1409939202
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1409939192}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: -17.25, y: 2.74, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 244244684}
|
|
||||||
- {fileID: 985676462}
|
|
||||||
- {fileID: 1380656264}
|
|
||||||
- {fileID: 269773825}
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &1411393552
|
--- !u!1 &1411393552
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -215290,6 +214472,63 @@ MonoBehaviour:
|
|||||||
_noiseFrequency: 1
|
_noiseFrequency: 1
|
||||||
_dedicatedCamera: {fileID: 1461204032}
|
_dedicatedCamera: {fileID: 1461204032}
|
||||||
_dedicatedPriority: 20
|
_dedicatedPriority: 20
|
||||||
|
--- !u!1001 &2007753045
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -19.197
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 2.651
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1584616613766364365, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4060394683168505230, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: ENM_CaoZhi
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 69accaa6577ec1a4db552c3c31aa28d8, type: 3}
|
||||||
--- !u!1 &2009355028
|
--- !u!1 &2009355028
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -217974,8 +217213,8 @@ SceneRoots:
|
|||||||
- {fileID: 1865796631}
|
- {fileID: 1865796631}
|
||||||
- {fileID: 1354690328}
|
- {fileID: 1354690328}
|
||||||
- {fileID: 783576435}
|
- {fileID: 783576435}
|
||||||
- {fileID: 1409939202}
|
|
||||||
- {fileID: 1288627279}
|
- {fileID: 1288627279}
|
||||||
- {fileID: 2146472069}
|
- {fileID: 2146472069}
|
||||||
- {fileID: 2124924423}
|
- {fileID: 2124924423}
|
||||||
- {fileID: 960547555}
|
- {fileID: 960547555}
|
||||||
|
- {fileID: 2007753045}
|
||||||
|
|||||||
@@ -488,9 +488,14 @@ namespace BaseGames.Editor
|
|||||||
BodyContactDamage bodyContact = GetOrAddComponent<BodyContactDamage>(contactT.gameObject);
|
BodyContactDamage bodyContact = GetOrAddComponent<BodyContactDamage>(contactT.gameObject);
|
||||||
bodyContact.enabled = false; // 伪装/待机期不伤人;由 e001_chase 能力在追击期开启
|
bodyContact.enabled = false; // 伪装/待机期不伤人;由 e001_chase 能力在追击期开启
|
||||||
|
|
||||||
|
// Model A:每个 AI 状态 = 一个行为能力(AI 只决策触发哪个 id,行为在能力里实现)
|
||||||
Transform abilitiesT = GetOrCreateChild(go.transform, "Abilities");
|
Transform abilitiesT = GetOrCreateChild(go.transform, "Abilities");
|
||||||
Transform alertT = GetOrCreateChild(abilitiesT, "PlayClipAbility_Alert");
|
Transform idleT = GetOrCreateChild(abilitiesT, "IdleAbility_Idle");
|
||||||
PlayClipAbility alertAbility = GetOrAddComponent<PlayClipAbility>(alertT.gameObject);
|
IdleAbility idleAbility = GetOrAddComponent<IdleAbility>(idleT.gameObject);
|
||||||
|
Transform patrolT = GetOrCreateChild(abilitiesT, "PatrolAbility_Patrol");
|
||||||
|
PatrolAbility patrolAbility = GetOrAddComponent<PatrolAbility>(patrolT.gameObject);
|
||||||
|
Transform alertT = GetOrCreateChild(abilitiesT, "AlertAbility_Alert");
|
||||||
|
AlertAbility alertAbility = GetOrAddComponent<AlertAbility>(alertT.gameObject);
|
||||||
Transform chaseT = GetOrCreateChild(abilitiesT, "ContactChaseAbility_Chase");
|
Transform chaseT = GetOrCreateChild(abilitiesT, "ContactChaseAbility_Chase");
|
||||||
ContactChaseAbility chaseAbility = GetOrAddComponent<ContactChaseAbility>(chaseT.gameObject);
|
ContactChaseAbility chaseAbility = GetOrAddComponent<ContactChaseAbility>(chaseT.gameObject);
|
||||||
|
|
||||||
@@ -518,6 +523,8 @@ namespace BaseGames.Editor
|
|||||||
new[] { "Platform", "OneWayPlatform", "MovingOneWayPlatform", "MidHeightOneWayPlatform" },
|
new[] { "Platform", "OneWayPlatform", "MovingOneWayPlatform", "MidHeightOneWayPlatform" },
|
||||||
report);
|
report);
|
||||||
|
|
||||||
|
AssignAsset(idleAbility, "_config", report, false, "ABL_E001_Idle");
|
||||||
|
AssignAsset(patrolAbility, "_config", report, false, "ABL_E001_Patrol");
|
||||||
AssignAsset(alertAbility, "_config", report, false, "ABL_E001_Alert");
|
AssignAsset(alertAbility, "_config", report, false, "ABL_E001_Alert");
|
||||||
AssignAsset(chaseAbility, "_config", report, false, "ABL_E001_Chase");
|
AssignAsset(chaseAbility, "_config", report, false, "ABL_E001_Chase");
|
||||||
AssignReference(chaseAbility, "_contactDamage", bodyContact, report);
|
AssignReference(chaseAbility, "_contactDamage", bodyContact, report);
|
||||||
|
|||||||
@@ -4,14 +4,13 @@ namespace BaseGames.Enemies
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// E001(草蛭)AI —— 纯决策层,复用 PerceptionStateMachine 的"待机/警觉/追击/巡逻"统一规则。
|
/// E001(草蛭)AI —— 纯决策层,复用 PerceptionStateMachine 的"待机/警觉/追击/巡逻"统一规则。
|
||||||
/// 只声明差异:待机=伪装静止、警觉=张口(e001_alert)、追击=委托 e001_chase 能力、R=巡逻。
|
/// 只声明差异:每个状态触发哪个能力(待机=伪装静止、巡逻=游走、警觉=张口、追击=接触追击)。
|
||||||
/// 追击移动/接触伤害由能力实现;退出追击由 AI 中断能力。依据 Docs/Game/Design/小怪设计-程序开发文档-01.md。
|
/// AI 只决策(进哪个状态/转换条件/触发哪个能力);移动/朝向/停/速度/动画/伤害/阶段声明全部在能力里实现。
|
||||||
|
/// 依据 Docs/Game/Design/小怪设计-程序开发文档-01.md。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[AiDefinition("E001")]
|
[AiDefinition("E001")]
|
||||||
public sealed class E001CaoZhiAi : AiScript
|
public sealed class E001CaoZhiAi : AiScript
|
||||||
{
|
{
|
||||||
static IEnemyActor Actor(IAiContext c) => (IEnemyActor)c;
|
|
||||||
|
|
||||||
protected override void Build(BrainBuilder b)
|
protected override void Build(BrainBuilder b)
|
||||||
{
|
{
|
||||||
PerceptionStateMachine.Add(b, new PerceptionStateMachine.Config
|
PerceptionStateMachine.Add(b, new PerceptionStateMachine.Config
|
||||||
@@ -23,18 +22,12 @@ namespace BaseGames.Enemies
|
|||||||
Death = "Death",
|
Death = "Death",
|
||||||
Entry = "Idle_Disguise",
|
Entry = "Idle_Disguise",
|
||||||
Rest = "Move_Patrol",
|
Rest = "Move_Patrol",
|
||||||
ChaseAbilityId = "e001_chase",
|
|
||||||
|
|
||||||
OnIdleEnter = c => { c.Mover.Stop(); Actor(c).SetPhase(AiPhase.Idle); },
|
IdleAbilityId = "e001_idle",
|
||||||
OnPatrolEnter = c => { c.Mover.UsePatrolSpeed(); Actor(c).SetPhase(AiPhase.Patrol); },
|
PatrolAbilityId = "e001_patrol",
|
||||||
OnPatrolTick = c => c.Mover.WalkRandom(),
|
AlertAbilityId = "e001_alert",
|
||||||
// 警觉:停下、朝向玩家、切 Alert 阶段(播警觉动画+feedback)、张口占位
|
ChaseAbilityId = "e001_chase",
|
||||||
OnAlertEnter = c => { c.Mover.Stop(); c.Mover.FacePlayer(); Actor(c).SetPhase(AiPhase.Alert); c.Combat.UseAbility("e001_alert"); },
|
// DeathAbilityId 留空:死亡演出走物理状态机(EnemyBase.PerformDeath)
|
||||||
// 追击进入:切追击速度、朝向、Chase 阶段(追击能力由 PerceptionStateMachine 触发)
|
|
||||||
OnChaseEnter = c => { c.Mover.UseChaseSpeed(); c.Mover.FacePlayer(); Actor(c).SetPhase(AiPhase.Chase); },
|
|
||||||
// 追击退出:中断追击能力(停移动、关接触伤害)
|
|
||||||
OnChaseExit = c => c.Combat.InterruptAbilities(),
|
|
||||||
OnDeathEnter = c => c.Mover.Stop(),
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,6 @@ namespace BaseGames.Enemies
|
|||||||
public bool HpBelow(float ratio) => HpPercent < ratio;
|
public bool HpBelow(float ratio) => HpPercent < ratio;
|
||||||
|
|
||||||
// ---- IEnemyActor ----
|
// ---- IEnemyActor ----
|
||||||
public void SetPhase(AiPhase phase) => _enemy.SetAiPhase(phase);
|
|
||||||
public bool HasAlertState => _enemy.StatsSO != null && _enemy.StatsSO.HasAlertState;
|
public bool HasAlertState => _enemy.StatsSO != null && _enemy.StatsSO.HasAlertState;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
namespace BaseGames.Enemies
|
namespace BaseGames.Enemies
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 敌人侧的决策输出接口:AI 决策层用它"声明"当前行为阶段,由敌人模块(EnemyBase)负责
|
/// 敌人侧的决策输入接口:AI 决策层用它读取敌人的决策参数(是否有警觉态等)。
|
||||||
/// 实现(播放阶段动画、供警戒/群体逻辑消费)。AiPhase 属 Enemies 命名空间,
|
/// 行为阶段(AiPhase)的声明已下沉到能力里(每状态一能力),AI 不再直接声明阶段。
|
||||||
/// 故不放进通用 BaseGames.AI 接口;由 EnemyBrainContext 实现,Enemies 侧的 AiScript 使用。
|
/// 由 EnemyBrainContext 实现,Enemies 侧的 AiScript 使用。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IEnemyActor
|
public interface IEnemyActor
|
||||||
{
|
{
|
||||||
/// <summary>声明当前 AI 行为阶段(EnemyBase 据此自动播放对应动画)。</summary>
|
|
||||||
void SetPhase(AiPhase phase);
|
|
||||||
|
|
||||||
/// <summary>该敌人是否有警觉状态(勾选项,来自 EnemyStatsSO)。false 时未发现态直接追击、不经警觉。</summary>
|
/// <summary>该敌人是否有警觉状态(勾选项,来自 EnemyStatsSO)。false 时未发现态直接追击、不经警觉。</summary>
|
||||||
bool HasAlertState { get; }
|
bool HasAlertState { get; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
using System;
|
|
||||||
using BaseGames.AI;
|
using BaseGames.AI;
|
||||||
|
|
||||||
namespace BaseGames.Enemies
|
namespace BaseGames.Enemies
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 可复用的"待机/警觉/追击/巡逻"感知状态机(统一规则,见 spec《敌人感知↔状态》)。
|
/// 可复用的"待机/警觉/追击/巡逻"感知状态机(统一规则,见 spec《敌人感知↔状态》)。
|
||||||
/// 职责边界:**状态转换逻辑在 AI 层(本类)**;感知系统只回答 InChaseZone/InVisionZone。
|
/// 纯决策:AI 只决定"进哪个状态 / 转换条件 / 每状态触发哪个能力";
|
||||||
|
/// 每个状态的行为(移动/朝向/动画/伤害/阶段声明)全部封装在对应能力里(AI 不做任何 actuation)。
|
||||||
/// 规则:
|
/// 规则:
|
||||||
/// 待机/巡逻: 在追逐区→追击(优先); 否则 有警觉且在视野→警觉; 否则保持。
|
/// 待机/巡逻: 在追逐区→追击(优先); 否则 有警觉且在视野→警觉; 否则保持。
|
||||||
/// 警觉: 在追逐区→追击; 否则 脱离视野→R; 否则保持警觉。
|
/// 警觉: 在追逐区→追击; 否则 脱离视野→R; 否则保持警觉。
|
||||||
/// 追击: 委托能力; 脱离视野→R(永不回警觉)。
|
/// 追击: 脱离全部感知(追逐区且视野区都不在)→R(永不回警觉)。
|
||||||
/// 缺省自动降级:无警觉(HasAlert=false)→警觉分支不触发;无视野槽→维持退化用追逐区。
|
/// 缺省自动降级:无警觉(HasAlert=false)→警觉分支不触发;某状态无能力 id→该状态不触发能力。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static class PerceptionStateMachine
|
public static class PerceptionStateMachine
|
||||||
{
|
{
|
||||||
@@ -23,14 +23,12 @@ namespace BaseGames.Enemies
|
|||||||
public string Death = "Death";
|
public string Death = "Death";
|
||||||
public string Entry = "Idle"; // 初始态
|
public string Entry = "Idle"; // 初始态
|
||||||
public string Rest = "Patrol"; // R:降级(退出追击/警觉丢失)回到的静止态
|
public string Rest = "Patrol"; // R:降级(退出追击/警觉丢失)回到的静止态
|
||||||
public string ChaseAbilityId; // 追击委托的能力 id(进入追击即触发;退出由 OnChaseExit 中断)
|
// 每状态对应的行为能力 id(AI 进入状态即触发、离开即中断)
|
||||||
public Action<IAiContext> OnIdleEnter;
|
public string IdleAbilityId;
|
||||||
public Action<IAiContext> OnPatrolEnter;
|
public string PatrolAbilityId;
|
||||||
public Action<IAiContext> OnPatrolTick;
|
public string AlertAbilityId;
|
||||||
public Action<IAiContext> OnAlertEnter;
|
public string ChaseAbilityId;
|
||||||
public Action<IAiContext> OnChaseEnter;
|
public string DeathAbilityId;
|
||||||
public Action<IAiContext> OnChaseExit;
|
|
||||||
public Action<IAiContext> OnDeathEnter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Add(BrainBuilder b, Config c)
|
public static void Add(BrainBuilder b, Config c)
|
||||||
@@ -38,39 +36,43 @@ namespace BaseGames.Enemies
|
|||||||
b.Entry(c.Entry);
|
b.Entry(c.Entry);
|
||||||
b.Global().To(c.Death).OnEvent(AiSignal.Died); // 受击致死 → 死亡(全局最高优先)
|
b.Global().To(c.Death).OnEvent(AiSignal.Died); // 受击致死 → 死亡(全局最高优先)
|
||||||
|
|
||||||
// 待机 / 巡逻:未发现态,同样的升级转换(追逐优先、其次警觉)
|
// 待机 / 巡逻:未发现态,升级转换相同(追逐优先、其次警觉)
|
||||||
AddUndiscovered(b.State(c.Idle).OnEnter(x => c.OnIdleEnter?.Invoke(x)), c);
|
AddAbilityState(b, c.Idle, c.IdleAbilityId)
|
||||||
AddUndiscovered(
|
.To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone")
|
||||||
b.State(c.Patrol)
|
.To(c.Alert).When(x => HasAlert(x) && x.Sensor.InVisionZone(), "InVision+HasAlert");
|
||||||
.OnEnter(x => c.OnPatrolEnter?.Invoke(x))
|
AddAbilityState(b, c.Patrol, c.PatrolAbilityId)
|
||||||
.Tick(x => c.OnPatrolTick?.Invoke(x)),
|
.To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone")
|
||||||
c);
|
.To(c.Alert).When(x => HasAlert(x) && x.Sensor.InVisionZone(), "InVision+HasAlert");
|
||||||
|
|
||||||
// 警觉(仅升级路径出现):进追逐区→追击;脱离视野→R;在视野内则保持(无转出)
|
// 警觉(仅升级路径出现):进追逐区→追击;脱离视野→R;在视野内保持
|
||||||
b.State(c.Alert)
|
AddAbilityState(b, c.Alert, c.AlertAbilityId)
|
||||||
.OnEnter(x => c.OnAlertEnter?.Invoke(x))
|
|
||||||
.To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone")
|
.To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone")
|
||||||
.To(c.Rest).When(x => !x.Sensor.InVisionZone(), "leftVision");
|
.To(c.Rest).When(x => !x.Sensor.InVisionZone(), "leftVision");
|
||||||
|
|
||||||
// 追击:委托能力实现移动/伤害;脱离**全部感知**(追逐区 且 视野区都不在) → R(永不回警觉);退出时中断追击能力。
|
// 追击:脱离全部感知(追逐区 且 视野区都不在)→R(永不回警觉)。
|
||||||
// 维持用"追逐区 OR 视野区"任一:视野(los)可能被墙挡而漏检,仅靠视野会导致玩家在近身追逐区内却反复进出追击(抖动)。
|
// 维持用"追逐区 OR 视野区"任一:视野(los)可能被墙挡漏检,仅靠视野会在近身追逐区内反复进出追击(抖动)。
|
||||||
b.State(c.Chase)
|
AddAbilityState(b, c.Chase, c.ChaseAbilityId)
|
||||||
.OnEnter(x =>
|
|
||||||
{
|
|
||||||
c.OnChaseEnter?.Invoke(x);
|
|
||||||
if (!string.IsNullOrEmpty(c.ChaseAbilityId)) x.Combat.UseAbility(c.ChaseAbilityId);
|
|
||||||
})
|
|
||||||
.OnExit(x => c.OnChaseExit?.Invoke(x))
|
|
||||||
.To(c.Rest).When(x => !x.Sensor.InChaseZone() && !x.Sensor.InVisionZone(), "leftAllZones");
|
.To(c.Rest).When(x => !x.Sensor.InChaseZone() && !x.Sensor.InVisionZone(), "leftAllZones");
|
||||||
|
|
||||||
b.State(c.Death).OnEnter(x => c.OnDeathEnter?.Invoke(x));
|
// 死亡:终态(无转出);死亡演出走物理状态机
|
||||||
|
AddAbilityState(b, c.Death, c.DeathAbilityId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 未发现态(Idle/Patrol)升级:在追逐区→追击(优先);否则 有警觉且在视野→警觉
|
/// <summary>
|
||||||
static void AddUndiscovered(BrainBuilder.StateBuilder sb, Config c)
|
/// 一个"由能力驱动行为"的状态:进入即确保能力运行;每帧确保能力运行(被中断/受击后自动重触发);离开即中断。
|
||||||
|
/// </summary>
|
||||||
|
static BrainBuilder.StateBuilder AddAbilityState(BrainBuilder b, string state, string abilityId)
|
||||||
{
|
{
|
||||||
sb.To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone")
|
return b.State(state)
|
||||||
.To(c.Alert).When(x => HasAlert(x) && x.Sensor.InVisionZone(), "InVision+HasAlert");
|
.OnEnter(x => EnsureAbility(x, abilityId))
|
||||||
|
.Tick(x => EnsureAbility(x, abilityId))
|
||||||
|
.OnExit(x => x.Combat.InterruptAbilities());
|
||||||
|
}
|
||||||
|
|
||||||
|
static void EnsureAbility(IAiContext x, string abilityId)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(abilityId) && !x.Combat.IsAbilityRunning(abilityId))
|
||||||
|
x.Combat.UseAbility(abilityId);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool HasAlert(IAiContext x) => x is IEnemyActor a && a.HasAlertState;
|
static bool HasAlert(IAiContext x) => x is IEnemyActor a && a.HasAlertState;
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using Animancer;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace BaseGames.Enemies.Abilities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 警觉行为能力:停下 + 朝向玩家 + Alert 阶段(播警觉动画/feedback)。持续朝向玩家直到被打断。
|
||||||
|
/// "警觉态朝向角色"等行为归本能力,AI 只在进入警觉状态时触发。
|
||||||
|
/// </summary>
|
||||||
|
public class AlertAbility : EnemyAbilityBase
|
||||||
|
{
|
||||||
|
[Header("警觉动画(可选,留空则用 AnimConfig.Alert 阶段动画)")]
|
||||||
|
[SerializeField] private ClipTransition _alertClip;
|
||||||
|
|
||||||
|
protected override IEnumerator ExecuteCoroutine()
|
||||||
|
{
|
||||||
|
Phase = AbilityRunState.Active;
|
||||||
|
_enemy.SetAiPhase(AiPhase.Alert); // 阶段动画 + 广播(供群体警戒等)
|
||||||
|
if (_alertClip.Clip != null)
|
||||||
|
_animancer.Play(_alertClip);
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
_enemy.StopMovement(); // 保持静止
|
||||||
|
if (_enemy.PlayerTransform != null)
|
||||||
|
_enemy.FaceTarget(_enemy.PlayerTransform.position); // 朝向玩家
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c51a5a3300c5d2549b3f8826d8c54fa8
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -23,6 +23,11 @@ namespace BaseGames.Enemies.Abilities
|
|||||||
{
|
{
|
||||||
Phase = AbilityRunState.Active;
|
Phase = AbilityRunState.Active;
|
||||||
|
|
||||||
|
// 追击行为的速度/阶段声明归本能力(AI 只触发能力,不做这些执行)
|
||||||
|
if (_enemy.Nav != null && _enemy.Stats != null)
|
||||||
|
_enemy.Nav.SetSpeed(_enemy.Stats.RunSpeed);
|
||||||
|
_enemy.SetAiPhase(AiPhase.Chase);
|
||||||
|
|
||||||
if (_loopClip.Clip != null)
|
if (_loopClip.Clip != null)
|
||||||
_animancer.Play(_loopClip);
|
_animancer.Play(_loopClip);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace BaseGames.Enemies.Abilities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 待机行为能力:停下 + 声明 Idle 阶段(播 Idle/伪装动画)。保持到被 AI 切换状态时打断。
|
||||||
|
/// 由 AI 决策层在进入待机状态时触发(AI 只决策,行为在此实现)。
|
||||||
|
/// </summary>
|
||||||
|
public class IdleAbility : EnemyAbilityBase
|
||||||
|
{
|
||||||
|
protected override IEnumerator ExecuteCoroutine()
|
||||||
|
{
|
||||||
|
Phase = AbilityRunState.Active;
|
||||||
|
_enemy.StopMovement();
|
||||||
|
_enemy.SetAiPhase(AiPhase.Idle);
|
||||||
|
while (true) // 保持待机(占用运行态)直到被打断
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 599faa708ea4a0f4b96ca9a3691523d7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace BaseGames.Enemies.Abilities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 巡逻行为能力:巡逻速度 + Patrol 阶段(播 Walk 动画) + 经导航随机游走。保持到被打断。
|
||||||
|
/// 移动执行归本能力,AI 只在进入巡逻状态时触发。
|
||||||
|
/// </summary>
|
||||||
|
public class PatrolAbility : EnemyAbilityBase
|
||||||
|
{
|
||||||
|
protected override IEnumerator ExecuteCoroutine()
|
||||||
|
{
|
||||||
|
Phase = AbilityRunState.Active;
|
||||||
|
_enemy.SetAiPhase(AiPhase.Patrol);
|
||||||
|
var nav = _enemy.Nav;
|
||||||
|
if (nav != null && _enemy.Stats != null)
|
||||||
|
nav.SetSpeed(_enemy.Stats.WalkSpeed);
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (nav != null && !nav.IsMoving)
|
||||||
|
nav.WalkToRandom(); // 到达后再选一个随机可达点,持续游走
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnInterrupted(InterruptReason reason)
|
||||||
|
{
|
||||||
|
_enemy.Nav?.StopNavigation(); // 退出巡逻时清除残留游走目标
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 36ef5fe655e471c448e7c1300355888b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Reference in New Issue
Block a user