diff --git a/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Idle.asset b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Idle.asset new file mode 100644 index 00000000..5b7726d5 --- /dev/null +++ b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Idle.asset @@ -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 diff --git a/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Idle.asset.meta b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Idle.asset.meta new file mode 100644 index 00000000..95a3eba0 --- /dev/null +++ b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Idle.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39972ac36f68c5a40a696350ee5b45ef +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Patrol.asset b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Patrol.asset new file mode 100644 index 00000000..f8abded3 --- /dev/null +++ b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Patrol.asset @@ -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 diff --git a/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Patrol.asset.meta b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Patrol.asset.meta new file mode 100644 index 00000000..8f67b440 --- /dev/null +++ b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Patrol.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea84fa0bad3eb9c44841fbe355923cbd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Game/Prefabs/Enemies/E001/ENM_CaoZhi.prefab b/Assets/_Game/Prefabs/Enemies/E001/ENM_CaoZhi.prefab index b173d598..dd023bf4 100644 --- a/Assets/_Game/Prefabs/Enemies/E001/ENM_CaoZhi.prefab +++ b/Assets/_Game/Prefabs/Enemies/E001/ENM_CaoZhi.prefab @@ -29,7 +29,9 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 7511576130651589432} + - {fileID: 7280204190161057260} + - {fileID: 869537028244990118} + - {fileID: 3016991558969992483} - {fileID: 7963057630187492059} m_Father: {fileID: 1584616613766364365} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -61,7 +63,7 @@ Transform: m_GameObject: {fileID: 2378558940863543267} serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] @@ -155,6 +157,63 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 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 GameObject: m_ObjectHideFlags: 0 @@ -190,7 +249,7 @@ Transform: m_GameObject: {fileID: 4060394683168505230} serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: @@ -483,10 +542,10 @@ MonoBehaviour: gizmoColor: {r: 0, g: 0.8, b: 1, a: 1} isDisabled: 0 tickInterval: 0 - radius: 0 + radius: 8 detectLayer: serializedVersion: 2 - m_Bits: 0 + m_Bits: 512 fanAngle: 0 fanRayCount: 0 boxSize: {x: 0, y: 0} @@ -516,6 +575,51 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _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 GameObject: m_ObjectHideFlags: 0 @@ -670,7 +774,7 @@ MonoBehaviour: _hitInterval: 0.5 _targetLayers: serializedVersion: 2 - m_Bits: 32768 + m_Bits: 4294967295 _id: _rivalHitBoxMask: serializedVersion: 2 @@ -688,6 +792,51 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _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 GameObject: m_ObjectHideFlags: 0 @@ -768,62 +917,5 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d7b7a233d7f70aa4f86b473412b826de, type: 3} m_Name: m_EditorClassIdentifier: - _onDamageDealt: {fileID: 0} + _onDamageDealt: {fileID: 11400000, guid: eebd58cfef3527940949a8a7655a343b, 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: [] diff --git a/Assets/_Game/Scenes/Testings/TestRoomA.unity b/Assets/_Game/Scenes/Testings/TestRoomA.unity index e321a317..8a0a8f74 100644 --- a/Assets/_Game/Scenes/Testings/TestRoomA.unity +++ b/Assets/_Game/Scenes/Testings/TestRoomA.unity @@ -4540,128 +4540,6 @@ MonoBehaviour: _noiseFrequency: 1 _dedicatedCamera: {fileID: 446229637} _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 GameObject: m_ObjectHideFlags: 0 @@ -4936,39 +4814,6 @@ Transform: m_Children: [] m_Father: {fileID: 1329258003} 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 GameObject: m_ObjectHideFlags: 0 @@ -12593,63 +12438,6 @@ MonoBehaviour: _noiseFrequency: 1 _dedicatedCamera: {fileID: 849840042} _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 GameObject: m_ObjectHideFlags: 0 @@ -16076,88 +15864,6 @@ Transform: - {fileID: 1476535863} m_Father: {fileID: 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 GameObject: m_ObjectHideFlags: 0 @@ -21432,74 +21138,6 @@ PolygonCollider2D: - {x: -3.5, y: 3} - {x: -3.5, y: -3} 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 GameObject: m_ObjectHideFlags: 0 @@ -25553,111 +25191,6 @@ MonoBehaviour: _noiseFrequency: 1 _dedicatedCamera: {fileID: 1141609723} _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 GameObject: m_ObjectHideFlags: 0 @@ -26190,357 +25723,6 @@ PolygonCollider2D: - {x: -2.5, y: 6} - {x: -2.5, y: -6} 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 GameObject: m_ObjectHideFlags: 0 @@ -215290,6 +214472,63 @@ MonoBehaviour: _noiseFrequency: 1 _dedicatedCamera: {fileID: 1461204032} _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 GameObject: m_ObjectHideFlags: 0 @@ -217974,8 +217213,8 @@ SceneRoots: - {fileID: 1865796631} - {fileID: 1354690328} - {fileID: 783576435} - - {fileID: 1409939202} - {fileID: 1288627279} - {fileID: 2146472069} - {fileID: 2124924423} - {fileID: 960547555} + - {fileID: 2007753045} diff --git a/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs b/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs index 71f7dd34..e31f7969 100644 --- a/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs +++ b/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs @@ -488,9 +488,14 @@ namespace BaseGames.Editor BodyContactDamage bodyContact = GetOrAddComponent(contactT.gameObject); bodyContact.enabled = false; // 伪装/待机期不伤人;由 e001_chase 能力在追击期开启 + // Model A:每个 AI 状态 = 一个行为能力(AI 只决策触发哪个 id,行为在能力里实现) Transform abilitiesT = GetOrCreateChild(go.transform, "Abilities"); - Transform alertT = GetOrCreateChild(abilitiesT, "PlayClipAbility_Alert"); - PlayClipAbility alertAbility = GetOrAddComponent(alertT.gameObject); + Transform idleT = GetOrCreateChild(abilitiesT, "IdleAbility_Idle"); + IdleAbility idleAbility = GetOrAddComponent(idleT.gameObject); + Transform patrolT = GetOrCreateChild(abilitiesT, "PatrolAbility_Patrol"); + PatrolAbility patrolAbility = GetOrAddComponent(patrolT.gameObject); + Transform alertT = GetOrCreateChild(abilitiesT, "AlertAbility_Alert"); + AlertAbility alertAbility = GetOrAddComponent(alertT.gameObject); Transform chaseT = GetOrCreateChild(abilitiesT, "ContactChaseAbility_Chase"); ContactChaseAbility chaseAbility = GetOrAddComponent(chaseT.gameObject); @@ -518,6 +523,8 @@ namespace BaseGames.Editor new[] { "Platform", "OneWayPlatform", "MovingOneWayPlatform", "MidHeightOneWayPlatform" }, 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(chaseAbility, "_config", report, false, "ABL_E001_Chase"); AssignReference(chaseAbility, "_contactDamage", bodyContact, report); diff --git a/Assets/_Game/Scripts/Enemies/AIBrain/Ai/E001CaoZhiAi.cs b/Assets/_Game/Scripts/Enemies/AIBrain/Ai/E001CaoZhiAi.cs index c1099dce..eaa284b9 100644 --- a/Assets/_Game/Scripts/Enemies/AIBrain/Ai/E001CaoZhiAi.cs +++ b/Assets/_Game/Scripts/Enemies/AIBrain/Ai/E001CaoZhiAi.cs @@ -4,14 +4,13 @@ namespace BaseGames.Enemies { /// /// E001(草蛭)AI —— 纯决策层,复用 PerceptionStateMachine 的"待机/警觉/追击/巡逻"统一规则。 - /// 只声明差异:待机=伪装静止、警觉=张口(e001_alert)、追击=委托 e001_chase 能力、R=巡逻。 - /// 追击移动/接触伤害由能力实现;退出追击由 AI 中断能力。依据 Docs/Game/Design/小怪设计-程序开发文档-01.md。 + /// 只声明差异:每个状态触发哪个能力(待机=伪装静止、巡逻=游走、警觉=张口、追击=接触追击)。 + /// AI 只决策(进哪个状态/转换条件/触发哪个能力);移动/朝向/停/速度/动画/伤害/阶段声明全部在能力里实现。 + /// 依据 Docs/Game/Design/小怪设计-程序开发文档-01.md。 /// [AiDefinition("E001")] public sealed class E001CaoZhiAi : AiScript { - static IEnemyActor Actor(IAiContext c) => (IEnemyActor)c; - protected override void Build(BrainBuilder b) { PerceptionStateMachine.Add(b, new PerceptionStateMachine.Config @@ -23,18 +22,12 @@ namespace BaseGames.Enemies Death = "Death", Entry = "Idle_Disguise", Rest = "Move_Patrol", - ChaseAbilityId = "e001_chase", - OnIdleEnter = c => { c.Mover.Stop(); Actor(c).SetPhase(AiPhase.Idle); }, - OnPatrolEnter = c => { c.Mover.UsePatrolSpeed(); Actor(c).SetPhase(AiPhase.Patrol); }, - OnPatrolTick = c => c.Mover.WalkRandom(), - // 警觉:停下、朝向玩家、切 Alert 阶段(播警觉动画+feedback)、张口占位 - OnAlertEnter = c => { c.Mover.Stop(); c.Mover.FacePlayer(); Actor(c).SetPhase(AiPhase.Alert); c.Combat.UseAbility("e001_alert"); }, - // 追击进入:切追击速度、朝向、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(), + IdleAbilityId = "e001_idle", + PatrolAbilityId = "e001_patrol", + AlertAbilityId = "e001_alert", + ChaseAbilityId = "e001_chase", + // DeathAbilityId 留空:死亡演出走物理状态机(EnemyBase.PerformDeath) }); } } diff --git a/Assets/_Game/Scripts/Enemies/AIBrain/EnemyBrainContext.cs b/Assets/_Game/Scripts/Enemies/AIBrain/EnemyBrainContext.cs index 46282272..32a64ac7 100644 --- a/Assets/_Game/Scripts/Enemies/AIBrain/EnemyBrainContext.cs +++ b/Assets/_Game/Scripts/Enemies/AIBrain/EnemyBrainContext.cs @@ -109,7 +109,6 @@ namespace BaseGames.Enemies public bool HpBelow(float ratio) => HpPercent < ratio; // ---- IEnemyActor ---- - public void SetPhase(AiPhase phase) => _enemy.SetAiPhase(phase); public bool HasAlertState => _enemy.StatsSO != null && _enemy.StatsSO.HasAlertState; } } diff --git a/Assets/_Game/Scripts/Enemies/AIBrain/IEnemyActor.cs b/Assets/_Game/Scripts/Enemies/AIBrain/IEnemyActor.cs index 6f9814aa..de09c57b 100644 --- a/Assets/_Game/Scripts/Enemies/AIBrain/IEnemyActor.cs +++ b/Assets/_Game/Scripts/Enemies/AIBrain/IEnemyActor.cs @@ -1,15 +1,12 @@ namespace BaseGames.Enemies { /// - /// 敌人侧的决策输出接口:AI 决策层用它"声明"当前行为阶段,由敌人模块(EnemyBase)负责 - /// 实现(播放阶段动画、供警戒/群体逻辑消费)。AiPhase 属 Enemies 命名空间, - /// 故不放进通用 BaseGames.AI 接口;由 EnemyBrainContext 实现,Enemies 侧的 AiScript 使用。 + /// 敌人侧的决策输入接口:AI 决策层用它读取敌人的决策参数(是否有警觉态等)。 + /// 行为阶段(AiPhase)的声明已下沉到能力里(每状态一能力),AI 不再直接声明阶段。 + /// 由 EnemyBrainContext 实现,Enemies 侧的 AiScript 使用。 /// public interface IEnemyActor { - /// 声明当前 AI 行为阶段(EnemyBase 据此自动播放对应动画)。 - void SetPhase(AiPhase phase); - /// 该敌人是否有警觉状态(勾选项,来自 EnemyStatsSO)。false 时未发现态直接追击、不经警觉。 bool HasAlertState { get; } } diff --git a/Assets/_Game/Scripts/Enemies/AIBrain/PerceptionStateMachine.cs b/Assets/_Game/Scripts/Enemies/AIBrain/PerceptionStateMachine.cs index 19a5efef..07bb42f5 100644 --- a/Assets/_Game/Scripts/Enemies/AIBrain/PerceptionStateMachine.cs +++ b/Assets/_Game/Scripts/Enemies/AIBrain/PerceptionStateMachine.cs @@ -1,16 +1,16 @@ -using System; using BaseGames.AI; namespace BaseGames.Enemies { /// /// 可复用的"待机/警觉/追击/巡逻"感知状态机(统一规则,见 spec《敌人感知↔状态》)。 - /// 职责边界:**状态转换逻辑在 AI 层(本类)**;感知系统只回答 InChaseZone/InVisionZone。 + /// 纯决策:AI 只决定"进哪个状态 / 转换条件 / 每状态触发哪个能力"; + /// 每个状态的行为(移动/朝向/动画/伤害/阶段声明)全部封装在对应能力里(AI 不做任何 actuation)。 /// 规则: /// 待机/巡逻: 在追逐区→追击(优先); 否则 有警觉且在视野→警觉; 否则保持。 /// 警觉: 在追逐区→追击; 否则 脱离视野→R; 否则保持警觉。 - /// 追击: 委托能力; 脱离视野→R(永不回警觉)。 - /// 缺省自动降级:无警觉(HasAlert=false)→警觉分支不触发;无视野槽→维持退化用追逐区。 + /// 追击: 脱离全部感知(追逐区且视野区都不在)→R(永不回警觉)。 + /// 缺省自动降级:无警觉(HasAlert=false)→警觉分支不触发;某状态无能力 id→该状态不触发能力。 /// public static class PerceptionStateMachine { @@ -23,14 +23,12 @@ namespace BaseGames.Enemies public string Death = "Death"; public string Entry = "Idle"; // 初始态 public string Rest = "Patrol"; // R:降级(退出追击/警觉丢失)回到的静止态 - public string ChaseAbilityId; // 追击委托的能力 id(进入追击即触发;退出由 OnChaseExit 中断) - public Action OnIdleEnter; - public Action OnPatrolEnter; - public Action OnPatrolTick; - public Action OnAlertEnter; - public Action OnChaseEnter; - public Action OnChaseExit; - public Action OnDeathEnter; + // 每状态对应的行为能力 id(AI 进入状态即触发、离开即中断) + public string IdleAbilityId; + public string PatrolAbilityId; + public string AlertAbilityId; + public string ChaseAbilityId; + public string DeathAbilityId; } public static void Add(BrainBuilder b, Config c) @@ -38,39 +36,43 @@ namespace BaseGames.Enemies b.Entry(c.Entry); b.Global().To(c.Death).OnEvent(AiSignal.Died); // 受击致死 → 死亡(全局最高优先) - // 待机 / 巡逻:未发现态,同样的升级转换(追逐优先、其次警觉) - AddUndiscovered(b.State(c.Idle).OnEnter(x => c.OnIdleEnter?.Invoke(x)), c); - AddUndiscovered( - b.State(c.Patrol) - .OnEnter(x => c.OnPatrolEnter?.Invoke(x)) - .Tick(x => c.OnPatrolTick?.Invoke(x)), - c); + // 待机 / 巡逻:未发现态,升级转换相同(追逐优先、其次警觉) + AddAbilityState(b, c.Idle, c.IdleAbilityId) + .To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone") + .To(c.Alert).When(x => HasAlert(x) && x.Sensor.InVisionZone(), "InVision+HasAlert"); + AddAbilityState(b, c.Patrol, c.PatrolAbilityId) + .To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone") + .To(c.Alert).When(x => HasAlert(x) && x.Sensor.InVisionZone(), "InVision+HasAlert"); - // 警觉(仅升级路径出现):进追逐区→追击;脱离视野→R;在视野内则保持(无转出) - b.State(c.Alert) - .OnEnter(x => c.OnAlertEnter?.Invoke(x)) + // 警觉(仅升级路径出现):进追逐区→追击;脱离视野→R;在视野内保持 + AddAbilityState(b, c.Alert, c.AlertAbilityId) .To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone") .To(c.Rest).When(x => !x.Sensor.InVisionZone(), "leftVision"); - // 追击:委托能力实现移动/伤害;脱离**全部感知**(追逐区 且 视野区都不在) → R(永不回警觉);退出时中断追击能力。 - // 维持用"追逐区 OR 视野区"任一:视野(los)可能被墙挡而漏检,仅靠视野会导致玩家在近身追逐区内却反复进出追击(抖动)。 - b.State(c.Chase) - .OnEnter(x => - { - c.OnChaseEnter?.Invoke(x); - if (!string.IsNullOrEmpty(c.ChaseAbilityId)) x.Combat.UseAbility(c.ChaseAbilityId); - }) - .OnExit(x => c.OnChaseExit?.Invoke(x)) + // 追击:脱离全部感知(追逐区 且 视野区都不在)→R(永不回警觉)。 + // 维持用"追逐区 OR 视野区"任一:视野(los)可能被墙挡漏检,仅靠视野会在近身追逐区内反复进出追击(抖动)。 + AddAbilityState(b, c.Chase, c.ChaseAbilityId) .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)升级:在追逐区→追击(优先);否则 有警觉且在视野→警觉 - static void AddUndiscovered(BrainBuilder.StateBuilder sb, Config c) + /// + /// 一个"由能力驱动行为"的状态:进入即确保能力运行;每帧确保能力运行(被中断/受击后自动重触发);离开即中断。 + /// + static BrainBuilder.StateBuilder AddAbilityState(BrainBuilder b, string state, string abilityId) { - sb.To(c.Chase).When(x => x.Sensor.InChaseZone(), "InChaseZone") - .To(c.Alert).When(x => HasAlert(x) && x.Sensor.InVisionZone(), "InVision+HasAlert"); + return b.State(state) + .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; diff --git a/Assets/_Game/Scripts/Enemies/Abilities/AlertAbility.cs b/Assets/_Game/Scripts/Enemies/Abilities/AlertAbility.cs new file mode 100644 index 00000000..a4cd6351 --- /dev/null +++ b/Assets/_Game/Scripts/Enemies/Abilities/AlertAbility.cs @@ -0,0 +1,32 @@ +using System.Collections; +using Animancer; +using UnityEngine; + +namespace BaseGames.Enemies.Abilities +{ + /// + /// 警觉行为能力:停下 + 朝向玩家 + Alert 阶段(播警觉动画/feedback)。持续朝向玩家直到被打断。 + /// "警觉态朝向角色"等行为归本能力,AI 只在进入警觉状态时触发。 + /// + 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; + } + } + } +} diff --git a/Assets/_Game/Scripts/Enemies/Abilities/AlertAbility.cs.meta b/Assets/_Game/Scripts/Enemies/Abilities/AlertAbility.cs.meta new file mode 100644 index 00000000..323a8429 --- /dev/null +++ b/Assets/_Game/Scripts/Enemies/Abilities/AlertAbility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c51a5a3300c5d2549b3f8826d8c54fa8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Game/Scripts/Enemies/Abilities/ContactChaseAbility.cs b/Assets/_Game/Scripts/Enemies/Abilities/ContactChaseAbility.cs index bae8001b..fbbdaff7 100644 --- a/Assets/_Game/Scripts/Enemies/Abilities/ContactChaseAbility.cs +++ b/Assets/_Game/Scripts/Enemies/Abilities/ContactChaseAbility.cs @@ -23,6 +23,11 @@ namespace BaseGames.Enemies.Abilities { 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) _animancer.Play(_loopClip); diff --git a/Assets/_Game/Scripts/Enemies/Abilities/IdleAbility.cs b/Assets/_Game/Scripts/Enemies/Abilities/IdleAbility.cs new file mode 100644 index 00000000..aa2dd812 --- /dev/null +++ b/Assets/_Game/Scripts/Enemies/Abilities/IdleAbility.cs @@ -0,0 +1,20 @@ +using System.Collections; + +namespace BaseGames.Enemies.Abilities +{ + /// + /// 待机行为能力:停下 + 声明 Idle 阶段(播 Idle/伪装动画)。保持到被 AI 切换状态时打断。 + /// 由 AI 决策层在进入待机状态时触发(AI 只决策,行为在此实现)。 + /// + public class IdleAbility : EnemyAbilityBase + { + protected override IEnumerator ExecuteCoroutine() + { + Phase = AbilityRunState.Active; + _enemy.StopMovement(); + _enemy.SetAiPhase(AiPhase.Idle); + while (true) // 保持待机(占用运行态)直到被打断 + yield return null; + } + } +} diff --git a/Assets/_Game/Scripts/Enemies/Abilities/IdleAbility.cs.meta b/Assets/_Game/Scripts/Enemies/Abilities/IdleAbility.cs.meta new file mode 100644 index 00000000..3810b8cb --- /dev/null +++ b/Assets/_Game/Scripts/Enemies/Abilities/IdleAbility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 599faa708ea4a0f4b96ca9a3691523d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Game/Scripts/Enemies/Abilities/PatrolAbility.cs b/Assets/_Game/Scripts/Enemies/Abilities/PatrolAbility.cs new file mode 100644 index 00000000..26f7ac50 --- /dev/null +++ b/Assets/_Game/Scripts/Enemies/Abilities/PatrolAbility.cs @@ -0,0 +1,32 @@ +using System.Collections; + +namespace BaseGames.Enemies.Abilities +{ + /// + /// 巡逻行为能力:巡逻速度 + Patrol 阶段(播 Walk 动画) + 经导航随机游走。保持到被打断。 + /// 移动执行归本能力,AI 只在进入巡逻状态时触发。 + /// + 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(); // 退出巡逻时清除残留游走目标 + } + } +} diff --git a/Assets/_Game/Scripts/Enemies/Abilities/PatrolAbility.cs.meta b/Assets/_Game/Scripts/Enemies/Abilities/PatrolAbility.cs.meta new file mode 100644 index 00000000..a766de26 --- /dev/null +++ b/Assets/_Game/Scripts/Enemies/Abilities/PatrolAbility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36ef5fe655e471c448e7c1300355888b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: