Merge branch 'main' of https://scove-vault.duckdns.org/scove/HALLUCINATION
This commit is contained in:
157
Assets/Prefabs/NPC/KamikazeAI.prefab
Normal file
157
Assets/Prefabs/NPC/KamikazeAI.prefab
Normal file
@@ -0,0 +1,157 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &6425756872251228809
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7442554217592711348}
|
||||
- component: {fileID: 6259819009638257505}
|
||||
- component: {fileID: 450573224913792705}
|
||||
- component: {fileID: 6087599376744356948}
|
||||
- component: {fileID: 3563399533700019190}
|
||||
- component: {fileID: 681314853465352057}
|
||||
m_Layer: 0
|
||||
m_Name: KamikazeAI
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7442554217592711348
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6425756872251228809}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 3.17522, y: 9.53715, z: -18.50002}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &6259819009638257505
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6425756872251228809}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &450573224913792705
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6425756872251228809}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 9193f4635bbf98d46be9a6357461aa10, 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: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!135 &6087599376744356948
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6425756872251228809}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!195 &3563399533700019190
|
||||
NavMeshAgent:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6425756872251228809}
|
||||
m_Enabled: 1
|
||||
m_AgentTypeID: 0
|
||||
m_Radius: 0.5
|
||||
m_Speed: 3.5
|
||||
m_Acceleration: 8
|
||||
avoidancePriority: 50
|
||||
m_AngularSpeed: 120
|
||||
m_StoppingDistance: 0
|
||||
m_AutoTraverseOffMeshLink: 1
|
||||
m_AutoBraking: 1
|
||||
m_AutoRepath: 1
|
||||
m_Height: 1
|
||||
m_BaseOffset: 0.5
|
||||
m_WalkableMask: 4294967295
|
||||
m_ObstacleAvoidanceType: 4
|
||||
--- !u!114 &681314853465352057
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6425756872251228809}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6008ec58fb909034abd7293b55f0d558, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::KamikazeAI
|
||||
player: {fileID: 0}
|
||||
detectRange: 15
|
||||
patrolSpeed: 2.5
|
||||
chaseSpeed: 7
|
||||
patrolRadius: 12
|
||||
patrolWaitTime: 2
|
||||
explosionEffectPrefab: {fileID: 8568474719719117872, guid: 39bf32dcd9299df4ca44fd10a817eda4, type: 3}
|
||||
7
Assets/Prefabs/NPC/KamikazeAI.prefab.meta
Normal file
7
Assets/Prefabs/NPC/KamikazeAI.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8947c5e2361e67945bda336253786233
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
105
Assets/Prefabs/NPC/explosionEffectPrefab.prefab
Normal file
105
Assets/Prefabs/NPC/explosionEffectPrefab.prefab
Normal file
@@ -0,0 +1,105 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &8568474719719117872
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9170216226365166400}
|
||||
- component: {fileID: 5936645265828481346}
|
||||
- component: {fileID: 372612951384622263}
|
||||
- component: {fileID: 454324809550099347}
|
||||
m_Layer: 0
|
||||
m_Name: explosionEffectPrefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &9170216226365166400
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8568474719719117872}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 3.21488, y: 9.58688, z: -18.00407}
|
||||
m_LocalScale: {x: 3, y: 3, z: 3}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &5936645265828481346
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8568474719719117872}
|
||||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &372612951384622263
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8568474719719117872}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: b0a84576fc378a24cbb3bfc7be45a02e, 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: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!114 &454324809550099347
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8568474719719117872}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 950ee3c6c086a3b4fa9a7f1e544c1651, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::AutoDestroy
|
||||
7
Assets/Prefabs/NPC/explosionEffectPrefab.prefab.meta
Normal file
7
Assets/Prefabs/NPC/explosionEffectPrefab.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 39bf32dcd9299df4ca44fd10a817eda4
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -41361,7 +41361,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1762638503}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8789529727683405701, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: notificationText
|
||||
@@ -41381,15 +41381,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 18.23
|
||||
value: 10.72584
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 10.363
|
||||
value: 6.58385
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 42.18
|
||||
value: 17.501871
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -41397,7 +41397,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
@@ -41444,6 +41444,11 @@ PrefabInstance:
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
--- !u!4 &241771775 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
m_PrefabInstance: {fileID: 241771774}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &282447033
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -46884,7 +46889,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -46892,15 +46897,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 2.6
|
||||
value: -4.90416
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 4.53
|
||||
value: 0.7508502
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 51.2
|
||||
value: 26.521872
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -46908,15 +46913,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -46978,6 +46983,11 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &310459322 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 310459319}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &333057065
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -47002,8 +47012,8 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 333057065}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 3.62463, y: 13.27338, z: -19.50002}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -3.87953, y: 9.49423, z: -44.178146}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
@@ -47053,7 +47063,7 @@ Transform:
|
||||
- {fileID: 375187854}
|
||||
- {fileID: 1061793569}
|
||||
- {fileID: 1398230979}
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 1625646592}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &333831099
|
||||
GameObject:
|
||||
@@ -47421,7 +47431,7 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 348410792}
|
||||
m_Layer: 0
|
||||
m_Name: SpawnPoint
|
||||
m_Name: "\u0F3C \u3064 \u25D5_\u25D5 \u0F3D\u3064SPAWM_POINT"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -47435,12 +47445,12 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 348410791}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 5.7248, y: 1.5, z: -32.50002}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -1.7793598, y: -2.27915, z: -57.178146}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 1625646592}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &365978100
|
||||
GameObject:
|
||||
@@ -90060,7 +90070,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -90068,15 +90078,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -8.9
|
||||
value: -16.40416
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 45.2
|
||||
value: 20.521872
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -90084,15 +90094,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -90154,13 +90164,18 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &570772204 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 570772201}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &572767392
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -90168,15 +90183,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 9.72
|
||||
value: 2.2158403
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 15.75
|
||||
value: -8.928129
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -90184,15 +90199,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -90222,6 +90237,11 @@ PrefabInstance:
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 1665376262}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
--- !u!4 &572767393 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 572767392}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!43 &593490377
|
||||
Mesh:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -90406,7 +90426,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -90414,15 +90434,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -13.62
|
||||
value: -21.12416
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 25.6
|
||||
value: 0.9218712
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -90430,15 +90450,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -90500,13 +90520,18 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &626847832 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 626847829}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &628283017
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1762638503}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8789529727683405701, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: notificationText
|
||||
@@ -90526,15 +90551,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -6.4864435
|
||||
value: -13.990603
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 10.22
|
||||
value: 6.4408503
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 35.790524
|
||||
value: 11.112394
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -90589,6 +90614,11 @@ PrefabInstance:
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
--- !u!4 &628283018 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
m_PrefabInstance: {fileID: 628283017}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!43 &631793619
|
||||
Mesh:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -92503,7 +92533,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -92511,15 +92541,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 17.43
|
||||
value: 9.92584
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 12.07
|
||||
value: 8.29085
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 39.186
|
||||
value: 14.507872
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -92527,15 +92557,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -92597,6 +92627,11 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &640822036 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 640822033}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!43 &643120550
|
||||
Mesh:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -93626,7 +93661,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -93634,15 +93669,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 1.5
|
||||
value: -6.00416
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -4.2
|
||||
value: -28.878128
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -93650,15 +93685,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -93720,6 +93755,11 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &665174409 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 665174406}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &678938548
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -93812,11 +93852,11 @@ Transform:
|
||||
m_GameObject: {fileID: 678938548}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.5, y: -0.5, z: 0.5, w: 0.5}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalPosition: {x: -7.50416, y: -0.77915, z: -24.67813}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 1625646592}
|
||||
m_LocalEulerAnglesHint: {x: 90, y: -90, z: 0}
|
||||
--- !u!114 &678938551
|
||||
MonoBehaviour:
|
||||
@@ -107713,7 +107753,7 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 1007024365}
|
||||
- {fileID: 292895766}
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 1625646592}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
@@ -107726,7 +107766,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -107734,15 +107774,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 9.7
|
||||
value: 2.19584
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 27
|
||||
value: 2.3218708
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -107750,15 +107790,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -107820,6 +107860,11 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &1004365739 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 1004365736}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &1007024362
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -134129,12 +134174,12 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1098531124}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -16.49995, y: 10.56881, z: 19.27294}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -24.00411, y: 6.7896605, z: -5.4051895}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 1617980815}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1143870345
|
||||
GameObject:
|
||||
@@ -134532,12 +134577,12 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1158761164}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -2.42363, y: 10.37505, z: 16.23287}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -9.92779, y: 6.5958996, z: -8.445259}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_Father: {fileID: 1617980815}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!43 &1167863508
|
||||
Mesh:
|
||||
@@ -145093,6 +145138,40 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 333057066}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
|
||||
--- !u!1 &1617980814
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1617980815}
|
||||
m_Layer: 0
|
||||
m_Name: _MANAGER
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1617980815
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1617980814}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 7.50416, y: 3.77915, z: 24.67813}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1158761166}
|
||||
- {fileID: 1922855029}
|
||||
- {fileID: 1098531126}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1620426061
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -145449,13 +145528,50 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 333057066}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -45, z: 90}
|
||||
--- !u!1 &1625646591
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1625646592}
|
||||
m_Layer: 0
|
||||
m_Name: _SCENE
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1625646592
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1625646591}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 7.50416, y: 3.77915, z: 24.67813}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 678938550}
|
||||
- {fileID: 333057066}
|
||||
- {fileID: 348410792}
|
||||
- {fileID: 963322862}
|
||||
- {fileID: 1762638503}
|
||||
- {fileID: 1730236067}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &1645920186
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -145463,15 +145579,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 14.3
|
||||
value: 6.7958403
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 35.1
|
||||
value: 10.421869
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -145479,15 +145595,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -145549,6 +145665,11 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &1645920189 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 1645920186}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!43 &1649158037
|
||||
Mesh:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -146074,7 +146195,7 @@ Mesh:
|
||||
- serializedVersion: 1
|
||||
m_IndexStart: 0
|
||||
m_IndexCount: 0
|
||||
--- !u!1 &1779903590
|
||||
--- !u!1 &1730236066
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -146082,43 +146203,71 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1779903592}
|
||||
- component: {fileID: 1779903591}
|
||||
- component: {fileID: 1730236067}
|
||||
m_Layer: 0
|
||||
m_Name: Manager
|
||||
m_Name: NPC_OBJECT
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1779903591
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1779903590}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a859fc8e9ec10a347a3704b6045ca7e8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Hallucinate.AI.GeminiService
|
||||
apiKey: AIzaSyC4DRm2dffDuDogYkY0Ag86p-EYLu67bDo
|
||||
geminiURL: https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent
|
||||
--- !u!4 &1779903592
|
||||
--- !u!4 &1730236067
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1779903590}
|
||||
m_GameObject: {fileID: 1730236066}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 14.19123, y: 0, z: 31.93528}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_Children:
|
||||
- {fileID: 572767393}
|
||||
- {fileID: 665174409}
|
||||
- {fileID: 2145701570}
|
||||
- {fileID: 1004365739}
|
||||
- {fileID: 626847832}
|
||||
- {fileID: 310459322}
|
||||
- {fileID: 570772204}
|
||||
- {fileID: 1645920189}
|
||||
- {fileID: 640822036}
|
||||
m_Father: {fileID: 1625646592}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1762638502
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1762638503}
|
||||
m_Layer: 0
|
||||
m_Name: CHEST_OBJECT
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1762638503
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1762638502}
|
||||
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: 628283018}
|
||||
- {fileID: 241771775}
|
||||
- {fileID: 1813306720}
|
||||
m_Father: {fileID: 1625646592}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1781734490
|
||||
GameObject:
|
||||
@@ -146605,7 +146754,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1762638503}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8789529727683405701, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: notificationText
|
||||
@@ -146625,15 +146774,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 2.08
|
||||
value: -5.42416
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 3.29
|
||||
value: -0.48915005
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 51.64
|
||||
value: 26.96187
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -146641,7 +146790,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
@@ -146688,6 +146837,11 @@ PrefabInstance:
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
--- !u!4 &1813306720 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 600579176653881994, guid: b96d0fcc541b0b947907dd08b9f5beab, type: 3}
|
||||
m_PrefabInstance: {fileID: 1813306719}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!43 &1820026756
|
||||
Mesh:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -147363,6 +147517,70 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 333057066}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 45, z: 0}
|
||||
--- !u!1 &1922855028
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1922855029}
|
||||
- component: {fileID: 1922855030}
|
||||
m_Layer: 0
|
||||
m_Name: NavManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1922855029
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1922855028}
|
||||
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: 1617980815}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1922855030
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1922855028}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7a5ac11cc976e418e8d13136b07e1f52, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.AI.Navigation::Unity.AI.Navigation.NavMeshSurface
|
||||
m_SerializedVersion: 0
|
||||
m_AgentTypeID: 0
|
||||
m_CollectObjects: 0
|
||||
m_Size: {x: 10, y: 10, z: 10}
|
||||
m_Center: {x: 0, y: 2, z: 0}
|
||||
m_LayerMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_UseGeometry: 0
|
||||
m_DefaultArea: 0
|
||||
m_GenerateLinks: 0
|
||||
m_IgnoreNavMeshAgent: 1
|
||||
m_IgnoreNavMeshObstacle: 1
|
||||
m_OverrideTileSize: 0
|
||||
m_TileSize: 256
|
||||
m_OverrideVoxelSize: 0
|
||||
m_VoxelSize: 0.16666667
|
||||
m_MinRegionArea: 2
|
||||
m_NavMeshData: {fileID: 23800000, guid: 84212f9f021e4404f8fe07ca27865272, type: 2}
|
||||
m_BuildHeightMesh: 0
|
||||
--- !u!43 &1951987860
|
||||
Mesh:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -150360,7 +150578,7 @@ PrefabInstance:
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_TransformParent: {fileID: 1730236067}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5687887011233860168, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_Layer
|
||||
@@ -150368,15 +150586,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -8.8
|
||||
value: -16.304161
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1.08
|
||||
value: -2.69915
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 8.1
|
||||
value: -16.578129
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
@@ -150384,15 +150602,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
@@ -150454,26 +150672,14 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 112
|
||||
m_CollisionDetection: 0
|
||||
--- !u!4 &2145701570 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 6442306242859885696, guid: 15df559ce497e104a81254e0adf3107e, type: 3}
|
||||
m_PrefabInstance: {fileID: 2145701567}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 678938550}
|
||||
- {fileID: 333057066}
|
||||
- {fileID: 1098531126}
|
||||
- {fileID: 348410792}
|
||||
- {fileID: 963322862}
|
||||
- {fileID: 628283017}
|
||||
- {fileID: 241771774}
|
||||
- {fileID: 1813306719}
|
||||
- {fileID: 572767392}
|
||||
- {fileID: 665174406}
|
||||
- {fileID: 2145701567}
|
||||
- {fileID: 1004365736}
|
||||
- {fileID: 626847829}
|
||||
- {fileID: 310459319}
|
||||
- {fileID: 570772201}
|
||||
- {fileID: 1645920186}
|
||||
- {fileID: 640822033}
|
||||
- {fileID: 1158761166}
|
||||
- {fileID: 1779903592}
|
||||
- {fileID: 1625646592}
|
||||
- {fileID: 1617980815}
|
||||
|
||||
BIN
Assets/Scenes/Cho môn AI/Only AI/NavMesh-NavManager 1.asset
Normal file
BIN
Assets/Scenes/Cho môn AI/Only AI/NavMesh-NavManager 1.asset
Normal file
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 84212f9f021e4404f8fe07ca27865272
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 23800000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
16
Assets/Scripts/AI NPC/AutoDestroy.cs
Normal file
16
Assets/Scripts/AI NPC/AutoDestroy.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class AutoDestroy : MonoBehaviour
|
||||
{
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/AI NPC/AutoDestroy.cs.meta
Normal file
2
Assets/Scripts/AI NPC/AutoDestroy.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 950ee3c6c086a3b4fa9a7f1e544c1651
|
||||
@@ -1,24 +1,31 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI; // Cần thiết để dùng NavMesh
|
||||
using Hallucinate.Audio;
|
||||
using UnityEngine.AI;
|
||||
|
||||
[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có
|
||||
[RequireComponent(typeof(NavMeshAgent))]
|
||||
[RequireComponent(typeof(Rigidbody))]
|
||||
public class EnemyAI : MonoBehaviour
|
||||
{
|
||||
[Header("References")]
|
||||
public Transform player;
|
||||
|
||||
[Header("Detection")]
|
||||
public float detectRange = 10f;
|
||||
public float moveSpeed = 3f;
|
||||
public float rotateSpeed = 50f;
|
||||
[Header("Field of View")]
|
||||
[Range(0, 360)] public float viewAngle = 90f;
|
||||
public float viewRadius = 20f;
|
||||
public LayerMask targetLayerMask; // Gán layer của Player
|
||||
public LayerMask obstacleLayerMask; // Gán layer của Tường, chướng ngại vật
|
||||
|
||||
private bool canSeePlayer = false;
|
||||
private Vector3 lastKnownPlayerPosition;
|
||||
private bool isInvestigating = false;
|
||||
|
||||
[Header("Patrol Area")]
|
||||
public float patrolRadius = 15f; // Bán kính khu vực tuần tra
|
||||
public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác
|
||||
private Vector3 startPosition;
|
||||
private float currentWaitTime;
|
||||
public Transform[] patrolPoints;
|
||||
private int currentPatrolIndex = 0;
|
||||
public float moveSpeed = 3f;
|
||||
public float chaseSpeed = 5f;
|
||||
|
||||
[Header("Artifact")]
|
||||
public bool playerHasArtifact;
|
||||
@@ -28,255 +35,167 @@ public class EnemyAI : MonoBehaviour
|
||||
public Transform firePoint;
|
||||
public float minShootDelay = 1f;
|
||||
public float maxShootDelay = 3f;
|
||||
public float rotateSpeed = 50f;
|
||||
|
||||
[Header("Audio")]
|
||||
public string alertSound = "Enemy_Alert";
|
||||
public string shootSound = "Enemy_Shoot";
|
||||
private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần
|
||||
|
||||
[Header("Conversation")]
|
||||
public string npcName = "Guard";
|
||||
public string persona = "You are a grumpy guard protecting gold.";
|
||||
public float talkRange = 4f;
|
||||
public float talkCooldown = 30f;
|
||||
private float lastTalkTime;
|
||||
private bool isTalking;
|
||||
private EnemyAI talkingPartner;
|
||||
private Hallucinate.UI.ChatBubble chatBubble;
|
||||
|
||||
[Header("Dodge Mechanics")]
|
||||
public float dodgeForce = 8f; // Lực đẩy văng đi
|
||||
public float dodgeDuration = 0.5f; // Thời gian nhào lộn/né
|
||||
public float dodgeCooldown = 3f; // Thời gian chờ giữa 2 lần né
|
||||
|
||||
private float nextDodgeTime;
|
||||
private bool isDodging = false;
|
||||
private Rigidbody rb;
|
||||
|
||||
private float nextShootTime;
|
||||
private NavMeshAgent agent;
|
||||
|
||||
public Node behaviorTreeRoot;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
agent = GetComponent<NavMeshAgent>();
|
||||
chatBubble = GetComponentInChildren<Hallucinate.UI.ChatBubble>(true);
|
||||
agent.speed = moveSpeed;
|
||||
|
||||
// Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra
|
||||
startPosition = transform.position;
|
||||
rb = GetComponent<Rigidbody>();
|
||||
// Tự động tìm các điểm tuần tra nếu chưa gán
|
||||
if (patrolPoints == null || patrolPoints.Length == 0)
|
||||
{
|
||||
patrolPoints = GameObject.FindGameObjectsWithTag("PatrolPoint")
|
||||
.Select(go => go.transform).ToArray();
|
||||
}
|
||||
|
||||
nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);
|
||||
|
||||
InitBehaviorTree();
|
||||
FindPlayer();
|
||||
StartCoroutine(FindTargetWithDelay(0.1f)); // Chạy FOV quét mục tiêu
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại
|
||||
if (player == null)
|
||||
if (player == null) FindPlayer();
|
||||
if (Input.GetMouseButtonDown(0) && canSeePlayer && !isDodging && Time.time >= nextDodgeTime)
|
||||
{
|
||||
FindPlayer();
|
||||
StartCoroutine(DodgeRoutine());
|
||||
}
|
||||
|
||||
// Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)
|
||||
if (isDodging) return;
|
||||
behaviorTreeRoot?.Evaluate();
|
||||
}
|
||||
|
||||
private void FindPlayer()
|
||||
{
|
||||
GameObject playerObj = GameObject.FindGameObjectWithTag("Player");
|
||||
if (playerObj != null)
|
||||
if (playerObj != null) player = playerObj.transform;
|
||||
}
|
||||
|
||||
// Coroutine tối ưu việc quét mục tiêu
|
||||
private IEnumerator FindTargetWithDelay(float delay)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
player = playerObj.transform;
|
||||
yield return new WaitForSeconds(delay);
|
||||
FindVisibleTargets();
|
||||
}
|
||||
}
|
||||
|
||||
private void FindVisibleTargets()
|
||||
{
|
||||
canSeePlayer = false;
|
||||
Collider[] colliders = Physics.OverlapSphere(transform.position, viewRadius, targetLayerMask);
|
||||
|
||||
foreach (var col in colliders)
|
||||
{
|
||||
Transform target = col.transform;
|
||||
Vector3 direction = (target.position - transform.position).normalized;
|
||||
|
||||
float angle = Vector3.Angle(transform.forward, direction);
|
||||
|
||||
// Nếu nằm trong góc nhìn
|
||||
if (angle < viewAngle / 2)
|
||||
{
|
||||
float distanceToTarget = Vector3.Distance(transform.position, target.position);
|
||||
|
||||
// Nếu không có vật cản che khuất
|
||||
if (!Physics.Raycast(transform.position, direction, distanceToTarget, obstacleLayerMask))
|
||||
{
|
||||
canSeePlayer = true;
|
||||
isInvestigating = true;
|
||||
lastKnownPlayerPosition = target.position;
|
||||
|
||||
Debug.DrawLine(transform.position, target.position, Color.blue, 0.1f);
|
||||
break; // Thấy player rồi thì dừng vòng lặp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void InitBehaviorTree()
|
||||
{
|
||||
// Ưu tiên 1: Player có artifact -> focus + shoot (Cao nhất)
|
||||
// 1. Cầm Artifact -> Đứng bắn
|
||||
var laserSequence = new Sequence(new List<Node>
|
||||
{
|
||||
new TaskNode(CheckHasArtifact),
|
||||
new TaskNode(ActionFocusAndShoot)
|
||||
});
|
||||
|
||||
// Ưu tiên 2: Thấy player -> rượt đuổi
|
||||
// 2. Thấy Player -> Đuổi theo
|
||||
var chaseSequence = new Sequence(new List<Node>
|
||||
{
|
||||
new TaskNode(CheckCanSeePlayer),
|
||||
new TaskNode(ActionMoveToPlayer)
|
||||
});
|
||||
|
||||
// Ưu tiên 3: Gần NPC khác -> nói chuyện (Mới)
|
||||
var talkSequence = new Sequence(new List<Node>
|
||||
// 3. Mất dấu Player -> Đi tới vị trí cuối cùng để điều tra
|
||||
var investigateSequence = new Sequence(new List<Node>
|
||||
{
|
||||
new TaskNode(CheckCanTalkToNPC),
|
||||
new TaskNode(ActionTalk)
|
||||
new TaskNode(CheckShouldInvestigate),
|
||||
new TaskNode(ActionInvestigate)
|
||||
});
|
||||
|
||||
// Ưu tiên cuối: Tuần tra
|
||||
// 4. Không có gì -> Tuần tra theo điểm
|
||||
var patrolNode = new TaskNode(ActionPatrol);
|
||||
|
||||
behaviorTreeRoot = new Selector(new List<Node>
|
||||
{
|
||||
laserSequence,
|
||||
chaseSequence,
|
||||
talkSequence,
|
||||
investigateSequence,
|
||||
patrolNode
|
||||
});
|
||||
}
|
||||
|
||||
#region CONDITIONS
|
||||
|
||||
private NodeState CheckCanTalkToNPC()
|
||||
{
|
||||
if (playerHasArtifact || hasSpottedPlayer) return NodeState.Failure;
|
||||
if (Time.time < lastTalkTime + talkCooldown) return NodeState.Failure;
|
||||
if (isTalking) return NodeState.Success;
|
||||
|
||||
// Tìm NPC gần nhất
|
||||
Collider[] hitColliders = Physics.OverlapSphere(transform.position, talkRange);
|
||||
foreach (var hit in hitColliders)
|
||||
{
|
||||
if (hit.gameObject != gameObject && hit.CompareTag("Enemy"))
|
||||
{
|
||||
EnemyAI other = hit.GetComponent<EnemyAI>();
|
||||
if (other != null && !other.isTalking && Time.time >= other.lastTalkTime + talkCooldown)
|
||||
{
|
||||
talkingPartner = other;
|
||||
return NodeState.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NodeState.Failure;
|
||||
}
|
||||
|
||||
private NodeState CheckHasArtifact()
|
||||
{
|
||||
// Khi bị phát hiện hoặc player có artifact, ngắt lời ngay
|
||||
if (playerHasArtifact || hasSpottedPlayer) StopConversation();
|
||||
return playerHasArtifact ? NodeState.Success : NodeState.Failure;
|
||||
}
|
||||
|
||||
private NodeState CheckCanSeePlayer()
|
||||
{
|
||||
if (player == null) return NodeState.Failure;
|
||||
return canSeePlayer ? NodeState.Success : NodeState.Failure;
|
||||
}
|
||||
|
||||
float distance = Vector3.Distance(transform.position, player.position);
|
||||
|
||||
if (distance <= detectRange)
|
||||
{
|
||||
if (!hasSpottedPlayer)
|
||||
{
|
||||
hasSpottedPlayer = true;
|
||||
AudioManager.Instance?.Play(alertSound, position: transform.position);
|
||||
StopConversation(); // Ngắt hội thoại khi thấy player
|
||||
}
|
||||
return NodeState.Success;
|
||||
}
|
||||
|
||||
hasSpottedPlayer = false;
|
||||
return NodeState.Failure;
|
||||
private NodeState CheckShouldInvestigate()
|
||||
{
|
||||
return isInvestigating ? NodeState.Success : NodeState.Failure;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ACTIONS
|
||||
|
||||
private NodeState ActionTalk()
|
||||
{
|
||||
if (talkingPartner == null) return NodeState.Failure;
|
||||
|
||||
if (!isTalking)
|
||||
{
|
||||
isTalking = true;
|
||||
agent.isStopped = true;
|
||||
|
||||
// Xoay về phía bạn
|
||||
FaceTarget(talkingPartner.transform.position);
|
||||
|
||||
// Bắt đầu hội thoại qua Gemini
|
||||
StartNPCConversation();
|
||||
}
|
||||
|
||||
return NodeState.Running;
|
||||
}
|
||||
|
||||
private void StartNPCConversation()
|
||||
{
|
||||
string prompt = $"You are {npcName}. You are talking to your fellow guard {talkingPartner.npcName}. " +
|
||||
"Keep it short (1 sentence). Topic: gold security or complaining about work.";
|
||||
|
||||
Hallucinate.AI.GeminiService.Instance.GetResponse(persona, prompt, (response) => {
|
||||
if (chatBubble != null) chatBubble.Show(response);
|
||||
|
||||
// Hẹn giờ kết thúc hội thoại
|
||||
Invoke(nameof(EndConversation), 5f);
|
||||
});
|
||||
|
||||
// Thông báo cho bạn diễn cũng dừng lại để "nghe"
|
||||
talkingPartner.OnPartnerTalked(this);
|
||||
}
|
||||
|
||||
public void OnPartnerTalked(EnemyAI partner)
|
||||
{
|
||||
isTalking = true;
|
||||
talkingPartner = partner;
|
||||
agent.isStopped = true;
|
||||
FaceTarget(partner.transform.position);
|
||||
|
||||
// Chờ bạn nói xong mới phản hồi (Tùy chọn: có thể thêm logic phản hồi ở đây)
|
||||
Invoke(nameof(EndConversation), 6f);
|
||||
}
|
||||
|
||||
private void EndConversation()
|
||||
{
|
||||
isTalking = false;
|
||||
lastTalkTime = Time.time;
|
||||
if (agent != null) agent.isStopped = false;
|
||||
talkingPartner = null;
|
||||
}
|
||||
|
||||
private void StopConversation()
|
||||
{
|
||||
if (!isTalking) return;
|
||||
CancelInvoke(nameof(EndConversation));
|
||||
EndConversation();
|
||||
if (chatBubble != null) chatBubble.Show("Suỵt! Có gì đó không ổn...", 2f);
|
||||
}
|
||||
|
||||
private void FaceTarget(Vector3 targetPos)
|
||||
{
|
||||
Vector3 dir = targetPos - transform.position;
|
||||
dir.y = 0;
|
||||
if (dir != Vector3.zero)
|
||||
{
|
||||
transform.rotation = Quaternion.LookRotation(dir);
|
||||
}
|
||||
}
|
||||
|
||||
private NodeState ActionPatrol()
|
||||
{
|
||||
// Debug.Log("Patrolling...");
|
||||
if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;
|
||||
if (patrolPoints.Length == 0) return NodeState.Failure;
|
||||
|
||||
agent.isStopped = false; // Đảm bảo NPC được phép di chuyển
|
||||
agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút
|
||||
Debug.Log("Patrolling...");
|
||||
agent.isStopped = false;
|
||||
agent.speed = moveSpeed;
|
||||
|
||||
// Kiểm tra xem NPC đã đến điểm đích chưa
|
||||
if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)
|
||||
// Đi tới điểm tuần tra hiện tại
|
||||
agent.SetDestination(patrolPoints[currentPatrolIndex].position);
|
||||
|
||||
// Nếu đã tới nơi, chuyển sang điểm tiếp theo
|
||||
if (agent.remainingDistance <= agent.stoppingDistance && !agent.pathPending)
|
||||
{
|
||||
currentWaitTime += Time.deltaTime;
|
||||
|
||||
// Chờ một lúc rồi mới chọn điểm mới
|
||||
if (currentWaitTime >= patrolWaitTime)
|
||||
{
|
||||
// Tìm một điểm ngẫu nhiên trong bán kính cho trước
|
||||
Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;
|
||||
randomDirection += startPosition;
|
||||
NavMeshHit hit;
|
||||
|
||||
// Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ
|
||||
if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))
|
||||
{
|
||||
agent.SetDestination(hit.position);
|
||||
}
|
||||
currentWaitTime = 0f;
|
||||
}
|
||||
currentPatrolIndex = (currentPatrolIndex + 1) % patrolPoints.Length;
|
||||
}
|
||||
|
||||
return NodeState.Running;
|
||||
@@ -286,39 +205,48 @@ public class EnemyAI : MonoBehaviour
|
||||
{
|
||||
if (player == null) return NodeState.Failure;
|
||||
|
||||
// Debug.Log("Chasing Player");
|
||||
|
||||
if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;
|
||||
|
||||
Debug.Log("Chasing Player...");
|
||||
agent.isStopped = false;
|
||||
agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi
|
||||
agent.speed = chaseSpeed;
|
||||
agent.SetDestination(player.position);
|
||||
|
||||
return NodeState.Running;
|
||||
}
|
||||
|
||||
private NodeState ActionInvestigate()
|
||||
{
|
||||
Debug.Log("Investigating last known position...");
|
||||
agent.isStopped = false;
|
||||
agent.speed = moveSpeed;
|
||||
|
||||
agent.SetDestination(lastKnownPlayerPosition);
|
||||
|
||||
// Nếu đi tới nơi mà vẫn không thấy player -> Hủy điều tra, quay về tuần tra
|
||||
if (agent.remainingDistance <= agent.stoppingDistance && !agent.pathPending)
|
||||
{
|
||||
isInvestigating = false;
|
||||
return NodeState.Success;
|
||||
}
|
||||
|
||||
return NodeState.Running;
|
||||
}
|
||||
|
||||
private NodeState ActionFocusAndShoot()
|
||||
{
|
||||
if (player == null) return NodeState.Failure;
|
||||
|
||||
// Debug.Log("Focus and Shoot!");
|
||||
agent.isStopped = true; // Đứng lại để bắn
|
||||
|
||||
if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;
|
||||
|
||||
// Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt
|
||||
agent.isStopped = true;
|
||||
|
||||
// Focus player
|
||||
// Xoay người về phía player
|
||||
Vector3 dir = player.position - transform.position;
|
||||
dir.y = 0f;
|
||||
|
||||
if (dir != Vector3.zero)
|
||||
{
|
||||
Quaternion targetRotation = Quaternion.LookRotation(dir);
|
||||
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
// Shoot with random delay
|
||||
// Bắn
|
||||
if (Time.time >= nextShootTime)
|
||||
{
|
||||
ShootLaser();
|
||||
@@ -332,9 +260,67 @@ public class EnemyAI : MonoBehaviour
|
||||
{
|
||||
if (laserPrefab == null || firePoint == null) return;
|
||||
Instantiate(laserPrefab, firePoint.position, firePoint.rotation);
|
||||
AudioManager.Instance?.Play(shootSound, position: transform.position);
|
||||
// Debug.Log("Laser Shot!");
|
||||
Debug.Log("Laser Shot!");
|
||||
}
|
||||
|
||||
#endregion
|
||||
#region DODGE MECHANIC
|
||||
|
||||
private IEnumerator DodgeRoutine()
|
||||
{
|
||||
Debug.Log("Dodging!");
|
||||
isDodging = true;
|
||||
nextDodgeTime = Time.time + dodgeCooldown;
|
||||
|
||||
// 1. Tắt AI tìm đường để Vật lý tiếp quản
|
||||
agent.enabled = false;
|
||||
rb.isKinematic = false; // Đảm bảo Rigidbody có thể nhận lực
|
||||
|
||||
// 2. Tính toán hướng né: Random nhảy sang Trái hoặc Phải
|
||||
int randomDirection = Random.Range(0, 2) == 0 ? -1 : 1;
|
||||
|
||||
// Lấy vector hướng ngang của NPC nhân với trái (-1) hoặc phải (1)
|
||||
Vector3 dodgeDir = transform.right * randomDirection;
|
||||
|
||||
// Có thể cộng thêm một chút lực nhảy lên (trục Y) nếu muốn NPC hơi nảy lên
|
||||
// dodgeDir.y = 0.5f;
|
||||
|
||||
// 3. Tác dụng lực đẩy tức thời (Impulse)
|
||||
rb.AddForce(dodgeDir * dodgeForce, ForceMode.Impulse);
|
||||
|
||||
// 4. Chờ NPC văng đi trong thời gian chỉ định
|
||||
yield return new WaitForSeconds(dodgeDuration);
|
||||
|
||||
// 5. Thắng gấp (Dừng toàn bộ gia tốc vật lý lại)
|
||||
// Lưu ý: Unity 6 dùng linearVelocity thay vì velocity như các bản cũ
|
||||
rb.linearVelocity = Vector3.zero;
|
||||
rb.angularVelocity = Vector3.zero;
|
||||
|
||||
// 6. Bật lại AI tìm đường
|
||||
rb.isKinematic = true; // Trả lại Rigidbody về trạng thái không ảnh hưởng vật lý
|
||||
agent.enabled = true;
|
||||
|
||||
isDodging = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
// Vẽ FOV trên Scene để dễ debug
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.color = Color.white;
|
||||
Gizmos.DrawWireSphere(transform.position, viewRadius);
|
||||
|
||||
Vector3 viewAngleA = DirFromAngle(-viewAngle / 2);
|
||||
Vector3 viewAngleB = DirFromAngle(viewAngle / 2);
|
||||
|
||||
Gizmos.color = Color.yellow;
|
||||
Gizmos.DrawLine(transform.position, transform.position + viewAngleA * viewRadius);
|
||||
Gizmos.DrawLine(transform.position, transform.position + viewAngleB * viewRadius);
|
||||
}
|
||||
|
||||
private Vector3 DirFromAngle(float angleInDegrees)
|
||||
{
|
||||
angleInDegrees += transform.eulerAngles.y;
|
||||
return new Vector3(Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), 0, Mathf.Cos(angleInDegrees * Mathf.Deg2Rad));
|
||||
}
|
||||
}
|
||||
198
Assets/Scripts/AI NPC/KamikazeAI.cs
Normal file
198
Assets/Scripts/AI NPC/KamikazeAI.cs
Normal file
@@ -0,0 +1,198 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
[RequireComponent(typeof(NavMeshAgent))]
|
||||
public class KamikazeAI : MonoBehaviour
|
||||
{
|
||||
[Header("References")]
|
||||
public Transform player;
|
||||
|
||||
[Header("Detection")]
|
||||
public float detectRange = 15f;
|
||||
private bool canSeePlayer = false;
|
||||
|
||||
[Header("Movement & Random Patrol")]
|
||||
public float patrolSpeed = 2.5f;
|
||||
public float chaseSpeed = 7f;
|
||||
public float patrolRadius = 12f; // Bán kính của khu vực tuần tra ngẫu nhiên
|
||||
public float patrolWaitTime = 2f; // Thời gian đứng nghỉ trước khi đổi sang điểm ngẫu nhiên mới
|
||||
|
||||
private Vector3 startPosition; // Tâm của khu vực tuần tra (Vị trí ban đầu)
|
||||
private float currentWaitTime;
|
||||
private NavMeshAgent agent;
|
||||
private bool isExploding = false;
|
||||
public Node behaviorTreeRoot;
|
||||
public GameObject explosionEffectPrefab;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
agent = GetComponent<NavMeshAgent>();
|
||||
|
||||
// Lưu lại vị trí xuất phát để làm tâm, NPC sẽ chỉ đi loay hoay quanh khu vực này
|
||||
startPosition = transform.position;
|
||||
|
||||
InitBehaviorTree();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (isExploding) return;
|
||||
|
||||
if (player == null) FindPlayer();
|
||||
else CheckVision();
|
||||
|
||||
behaviorTreeRoot?.Evaluate();
|
||||
}
|
||||
|
||||
private void FindPlayer()
|
||||
{
|
||||
GameObject playerObj = GameObject.FindGameObjectWithTag("Player");
|
||||
if (playerObj != null) player = playerObj.transform;
|
||||
}
|
||||
|
||||
private void CheckVision()
|
||||
{
|
||||
if (Vector3.Distance(transform.position, player.position) <= detectRange)
|
||||
canSeePlayer = true;
|
||||
else
|
||||
canSeePlayer = false;
|
||||
}
|
||||
|
||||
private void InitBehaviorTree()
|
||||
{
|
||||
var explodeSequence = new Sequence(new List<Node>
|
||||
{
|
||||
new TaskNode(CheckIsCloseEnoughToExplode),
|
||||
new TaskNode(ActionTriggerExplosion)
|
||||
});
|
||||
|
||||
var chaseSequence = new Sequence(new List<Node>
|
||||
{
|
||||
new TaskNode(CheckCanSeePlayer),
|
||||
new TaskNode(ActionChase)
|
||||
});
|
||||
|
||||
// Hành động tuần tra ngẫu nhiên
|
||||
var patrolNode = new TaskNode(ActionRandomPatrol);
|
||||
|
||||
behaviorTreeRoot = new Selector(new List<Node>
|
||||
{
|
||||
explodeSequence,
|
||||
chaseSequence,
|
||||
patrolNode
|
||||
});
|
||||
}
|
||||
|
||||
#region CONDITIONS
|
||||
|
||||
private NodeState CheckCanSeePlayer()
|
||||
{
|
||||
return canSeePlayer ? NodeState.Success : NodeState.Failure;
|
||||
}
|
||||
|
||||
private NodeState CheckIsCloseEnoughToExplode()
|
||||
{
|
||||
if (player == null) return NodeState.Failure;
|
||||
float dist = Vector3.Distance(transform.position, player.position);
|
||||
return dist <= 3f ? NodeState.Success : NodeState.Failure;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ACTIONS
|
||||
|
||||
// HÀM TUẦN TRA NGẪU NHIÊN MỚI
|
||||
private NodeState ActionRandomPatrol()
|
||||
{
|
||||
Debug.Log("Wandering randomly...");
|
||||
agent.isStopped = false;
|
||||
agent.speed = patrolSpeed;
|
||||
|
||||
// Kiểm tra xem NPC đã đi đến điểm ngẫu nhiên hiện tại chưa
|
||||
if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)
|
||||
{
|
||||
currentWaitTime += Time.deltaTime;
|
||||
|
||||
// Đứng đợi hết thời gian quy định rồi mới tìm đường mới
|
||||
if (currentWaitTime >= patrolWaitTime)
|
||||
{
|
||||
// 1. Lấy một điểm ngẫu nhiên trong không gian hình cầu dựa trên bán kính
|
||||
Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;
|
||||
randomDirection += startPosition; // Cộng với tâm ban đầu để giới hạn khu vực
|
||||
|
||||
NavMeshHit hit;
|
||||
// 2. Ép tọa độ ngẫu nhiên đó phải nằm TRÊN bề mặt xanh của NavMesh (tránh kẹt tường)
|
||||
// Số 1 ở cuối là Area Mask (thường là Walkable)
|
||||
if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))
|
||||
{
|
||||
agent.SetDestination(hit.position);
|
||||
}
|
||||
|
||||
currentWaitTime = 0f; // Reset thời gian chờ
|
||||
}
|
||||
}
|
||||
|
||||
return NodeState.Running;
|
||||
}
|
||||
|
||||
private NodeState ActionChase()
|
||||
{
|
||||
if (player == null) return NodeState.Failure;
|
||||
|
||||
Debug.Log("Kamikaze is rushing you!");
|
||||
agent.isStopped = false;
|
||||
agent.speed = chaseSpeed;
|
||||
agent.SetDestination(player.position);
|
||||
|
||||
return NodeState.Running;
|
||||
}
|
||||
|
||||
private NodeState ActionTriggerExplosion()
|
||||
{
|
||||
StartCoroutine(ExplosionRoutine());
|
||||
return NodeState.Success;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region EXPLOSION LOGIC
|
||||
|
||||
private IEnumerator ExplosionRoutine()
|
||||
{
|
||||
isExploding = true;
|
||||
agent.isStopped = true;
|
||||
agent.velocity = Vector3.zero;
|
||||
|
||||
Debug.Log("BOMB ARMED!");
|
||||
yield return new WaitForSeconds(1.5f);
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
float distToPlayer = Vector3.Distance(transform.position, player.position);
|
||||
if (distToPlayer <= 4f)
|
||||
{
|
||||
Debug.Log("BOOM! Player took damage!");
|
||||
}
|
||||
}
|
||||
|
||||
if (explosionEffectPrefab != null)
|
||||
{
|
||||
Instantiate(explosionEffectPrefab, transform.position, Quaternion.identity);
|
||||
}
|
||||
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// Vẽ vùng giới hạn tuần tra màu xanh lá cây trên Scene để bạn dễ căn chỉnh độ rộng
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.color = Color.green;
|
||||
// Nếu game đang chạy thì vẽ quanh tâm startPosition, nếu chưa chạy thì vẽ quanh vị trí hiện tại
|
||||
Vector3 center = Application.isPlaying ? startPosition : transform.position;
|
||||
Gizmos.DrawWireSphere(center, patrolRadius);
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/AI NPC/KamikazeAI.cs.meta
Normal file
2
Assets/Scripts/AI NPC/KamikazeAI.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6008ec58fb909034abd7293b55f0d558
|
||||
Reference in New Issue
Block a user