Merge branch 'main' of https://scove-vault.duckdns.org/scove/HALLUCINATION
This commit is contained in:
10
.idea/.idea.HALLUCINATE/.idea/workspace.xml
generated
10
.idea/.idea.HALLUCINATE/.idea/workspace.xml
generated
@@ -6,8 +6,12 @@
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f9183c68-daf0-43b8-be4c-fad79983f91b" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.HALLUCINATE/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.HALLUCINATE/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_weapons_WITH_Inventory/_collectables/vCollectableHandgun.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_weapons_WITH_Inventory/_collectables/vCollectableHandgun.prefab" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Scripts/AI NPC/LaserProjectile.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/AI NPC/LaserProjectile.cs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/NPC/xNPC.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/NPC/xNPC.prefab" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_bullets/vGrenadeRifle.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_bullets/vGrenadeRifle.prefab" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_weapons_WITH_Inventory/_ammo/vAmmoHandgun_Inventory.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_weapons_WITH_Inventory/_ammo/vAmmoHandgun_Inventory.prefab" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_weapons_WITH_Inventory/_weaponsPrefabs/vHandgun_Inventory.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Shooter/Weapon/_weapons_WITH_Inventory/_weaponsPrefabs/vHandgun_Inventory.prefab" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Scenes/Cho môn AI/Only AI/NavMesh-NavManager 1.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scenes/Cho môn AI/Only AI/NavMesh-NavManager 1.asset" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/Weapon/vProjectileControl.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/Weapon/vProjectileControl.cs" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -177,7 +181,7 @@
|
||||
<workItem from="1780364354282" duration="4357000" />
|
||||
<workItem from="1780409218377" duration="9852000" />
|
||||
<workItem from="1780494322686" duration="643000" />
|
||||
<workItem from="1780633654231" duration="24864000" />
|
||||
<workItem from="1780633654231" duration="26606000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
||||
@@ -11,7 +11,7 @@ GameObject:
|
||||
- component: {fileID: 6775114823217050358}
|
||||
- component: {fileID: 4848796683983860819}
|
||||
- component: {fileID: 1063752242239153259}
|
||||
m_Layer: 5
|
||||
m_Layer: 9
|
||||
m_Name: Image
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -89,7 +89,7 @@ GameObject:
|
||||
- component: {fileID: 1194338186308686302}
|
||||
- component: {fileID: 1620994605374968907}
|
||||
- component: {fileID: 3045503552244378433}
|
||||
m_Layer: 5
|
||||
m_Layer: 9
|
||||
m_Name: Canvas
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -219,7 +219,7 @@ GameObject:
|
||||
- component: {fileID: 2937726564081786020}
|
||||
- component: {fileID: 8396699406453661974}
|
||||
- component: {fileID: 5807828578023492633}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Cube
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -330,7 +330,7 @@ GameObject:
|
||||
- component: {fileID: 2685789783496722106}
|
||||
- component: {fileID: 6402235304255896193}
|
||||
- component: {fileID: 4454520411962799200}
|
||||
m_Layer: 5
|
||||
m_Layer: 9
|
||||
m_Name: Text (TMP)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -471,7 +471,8 @@ GameObject:
|
||||
- component: {fileID: 8239948856752686218}
|
||||
- component: {fileID: 6469822191588635990}
|
||||
- component: {fileID: 9027690817715396964}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 204793640880232070}
|
||||
m_Layer: 9
|
||||
m_Name: xNPC
|
||||
m_TagString: Enemy
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -511,17 +512,23 @@ MonoBehaviour:
|
||||
player: {fileID: 0}
|
||||
moveSpeed: 3
|
||||
rotateSpeed: 50
|
||||
patrolWaypoints: []
|
||||
currentWaypointIndex: 0
|
||||
patrolWaitTime: 2
|
||||
patrolSpeed: 2
|
||||
patrolRadius: 5
|
||||
playerHasArtifact: 0
|
||||
laserPrefab: {fileID: 3965388737199864462, guid: fbec2b501d70daa4c9cb481ba53fc0b8, type: 3}
|
||||
firePoint: {fileID: 5863061020199015852}
|
||||
minShootDelay: 1
|
||||
maxShootDelay: 3
|
||||
maxShootDelay: 5
|
||||
dodgeForce: 8
|
||||
dodgeDuration: 0.5
|
||||
dodgeCooldown: 3
|
||||
minStrafeDuration: 0.5
|
||||
maxStrafeDuration: 2.2
|
||||
maxSpreadAngle: 6
|
||||
burstInterval: 0.12
|
||||
approachWeight: 0.35
|
||||
minCombatDistance: 5
|
||||
npcName: Guard
|
||||
persona: You are a grumpy guard protecting gold.
|
||||
talkRange: 5
|
||||
@@ -624,6 +631,8 @@ MonoBehaviour:
|
||||
simMoveSetID: 0
|
||||
sprintThreshold: 0.8
|
||||
dampTime: 0.1
|
||||
forcePlayState:
|
||||
showLayerWeights: 0
|
||||
--- !u!136 &9027690817715396964
|
||||
CapsuleCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -647,6 +656,44 @@ CapsuleCollider:
|
||||
m_Height: 1.8474874
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.92911196, z: -0.24853802}
|
||||
--- !u!114 &204793640880232070
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7522161431095319480}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f56a83ea88140fa4f869bb2f7ffdb184, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Invector.vHealthController
|
||||
openCloseEvents: 0
|
||||
openCloseWindow: 1
|
||||
selectedToolbar: 0
|
||||
_isDead: 1
|
||||
_currentHealth: 0
|
||||
isImmortal: 0
|
||||
fillHealthOnStart: 1
|
||||
_maxHealth: 100
|
||||
_healthRecovery: 0
|
||||
_healthRecoveryDelay: 0
|
||||
checkHealthEvents: []
|
||||
_onStartReceiveDamage:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
_onReceiveDamage:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
_onDead:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onChangeHealth:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onResetHealth:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1001 &7561534673732472622
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -655,10 +702,278 @@ PrefabInstance:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 6442306242859885696}
|
||||
m_Modifications:
|
||||
- target: {fileID: 100000, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100004, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100006, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100008, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100010, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100012, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100014, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100016, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100018, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100022, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100024, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100026, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100030, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100032, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100034, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100038, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100040, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100042, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100046, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100048, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100050, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100054, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100056, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100058, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100062, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100064, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100066, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100068, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100070, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100072, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100074, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100076, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100078, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100082, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100084, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100086, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100090, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100092, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100094, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100098, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100100, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100102, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100106, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100108, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100110, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100114, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100116, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100118, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100122, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100124, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100126, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100128, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100132, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: V-bot@Highpoly
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100132, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100136, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100138, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100140, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100142, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100144, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100146, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100148, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100150, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100152, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100154, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100156, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100158, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100160, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 100162, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 400132, guid: f32cd9f795c1282478d3bc3fbd8b2831, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,12 +25,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 105388}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.049999997, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 422732}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3302298
|
||||
MeshFilter:
|
||||
@@ -51,10 +52,17 @@ MeshRenderer:
|
||||
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:
|
||||
@@ -76,9 +84,12 @@ MeshRenderer:
|
||||
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!1 &115092
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -105,16 +116,17 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 115092}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.59600043, y: 0.23841888, z: -5.476}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 422732}
|
||||
- {fileID: 480898}
|
||||
- {fileID: 488976}
|
||||
- {fileID: 22488062}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!136 &13688376
|
||||
CapsuleCollider:
|
||||
@@ -124,8 +136,17 @@ CapsuleCollider:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 115092}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 1
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.35
|
||||
m_Height: 1.08
|
||||
m_Direction: 1
|
||||
@@ -143,12 +164,13 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
openCloseEvents: 0
|
||||
openCloseWindow: 0
|
||||
selectedToolbar: 0
|
||||
openCloseWindow: 1
|
||||
selectedToolbar: 4
|
||||
inputType: 0
|
||||
actionInput:
|
||||
useInput: 1
|
||||
isAxisInUse: 0
|
||||
isUnityInput: 0
|
||||
keyboard: E
|
||||
keyboardAxis: 0
|
||||
joystick: A
|
||||
@@ -165,6 +187,7 @@ MonoBehaviour:
|
||||
inputDelay: 0.1
|
||||
playAnimationWhileHoldingButton: 1
|
||||
doubleButtomTime: 0.25
|
||||
canDoAction: 1
|
||||
actionName: Action
|
||||
actionTag: Action
|
||||
disableOnStart: 0
|
||||
@@ -177,11 +200,12 @@ MonoBehaviour:
|
||||
destroyDelay: 0
|
||||
customCameraState: Default
|
||||
playAnimation:
|
||||
crossFadeTransition: 0.25
|
||||
animatorLayer: 0
|
||||
endActionManualy: 0
|
||||
endExitTimeAnimation: 0.8
|
||||
animatorActionState: 0
|
||||
resetAnimatorActionState: 1
|
||||
useAnimatorMatchTarget: 1
|
||||
matchTarget: {fileID: 0}
|
||||
avatarTarget: 0
|
||||
useLocalX: 0
|
||||
@@ -285,10 +309,6 @@ MonoBehaviour:
|
||||
m_PreInfinity: 2
|
||||
m_PostInfinity: 2
|
||||
m_RotationOrder: 4
|
||||
matchPos: {x: 0, y: 0, z: 0}
|
||||
matchRot: 0
|
||||
startMatchTarget: 0
|
||||
endMatchTarget: 0
|
||||
onPressActionDelay: 0
|
||||
OnPressActionInput:
|
||||
m_PersistentCalls:
|
||||
@@ -315,6 +335,7 @@ MonoBehaviour:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 128644}
|
||||
m_TargetAssemblyTypeName:
|
||||
m_MethodName: SetActive
|
||||
m_Mode: 6
|
||||
m_Arguments:
|
||||
@@ -332,6 +353,7 @@ MonoBehaviour:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 128644}
|
||||
m_TargetAssemblyTypeName:
|
||||
m_MethodName: SetActive
|
||||
m_Mode: 6
|
||||
m_Arguments:
|
||||
@@ -348,6 +370,9 @@ MonoBehaviour:
|
||||
OnInvalidate:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
OnCancelAction:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
itemListData: {fileID: 11400000, guid: 1493f9d9326e8014494b8cb04de38f25, type: 2}
|
||||
onCollectDelay: 0
|
||||
textDelay: 0.25
|
||||
@@ -400,12 +425,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 121230}
|
||||
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: 422732}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3398494
|
||||
MeshFilter:
|
||||
@@ -426,10 +452,17 @@ MeshRenderer:
|
||||
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:
|
||||
@@ -451,9 +484,12 @@ MeshRenderer:
|
||||
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!1 &127422
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -479,12 +515,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 127422}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.049999997, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 488976}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3382610
|
||||
MeshFilter:
|
||||
@@ -505,10 +542,17 @@ MeshRenderer:
|
||||
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:
|
||||
@@ -530,9 +574,12 @@ MeshRenderer:
|
||||
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!1 &128644
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -563,10 +610,10 @@ RectTransform:
|
||||
m_LocalRotation: {x: 0, y: -1.4210853e-14, z: -0.0000003258414, w: -1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.000713446, y: 0.00071344554, z: 0.00071344554}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 22482840}
|
||||
m_Father: {fileID: 479482}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
@@ -590,7 +637,9 @@ Canvas:
|
||||
m_OverrideSorting: 0
|
||||
m_OverridePixelPerfect: 0
|
||||
m_SortingBucketNormalizedSize: 0
|
||||
m_VertexColorAlwaysGammaSpace: 0
|
||||
m_AdditionalShaderChannelsFlag: 25
|
||||
m_UpdateRectTransformForStandalone: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingOrder: 0
|
||||
m_TargetDisplay: 0
|
||||
@@ -616,6 +665,7 @@ MonoBehaviour:
|
||||
m_FallbackScreenDPI: 96
|
||||
m_DefaultSpriteDPI: 96
|
||||
m_DynamicPixelsPerUnit: 1
|
||||
m_PresetInfoIsWorld: 0
|
||||
--- !u!114 &11473088
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -673,14 +723,15 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 128768}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.707106, z: 0, w: 0.7071076}
|
||||
m_LocalPosition: {x: -0.009500027, y: 0.51312, z: 0.013957024}
|
||||
m_LocalScale: {x: 2.086288, y: 2.44284, z: 2.0862887}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 492078}
|
||||
- {fileID: 474350}
|
||||
m_Father: {fileID: 479482}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &131120
|
||||
GameObject:
|
||||
@@ -705,14 +756,15 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 131120}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.707106, z: 0, w: 0.7071076}
|
||||
m_LocalPosition: {x: -0.00950098, y: 0.51312, z: -0.15503883}
|
||||
m_LocalScale: {x: 2.086288, y: 2.44284, z: 2.0862887}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 448248}
|
||||
- {fileID: 450808}
|
||||
m_Father: {fileID: 479482}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &139748
|
||||
GameObject:
|
||||
@@ -739,12 +791,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 139748}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.049999997, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 480898}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3373558
|
||||
MeshFilter:
|
||||
@@ -765,10 +818,17 @@ MeshRenderer:
|
||||
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:
|
||||
@@ -790,9 +850,12 @@ MeshRenderer:
|
||||
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!1 &152304
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -818,12 +881,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 152304}
|
||||
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: 488976}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3344262
|
||||
MeshFilter:
|
||||
@@ -844,10 +908,17 @@ MeshRenderer:
|
||||
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:
|
||||
@@ -869,9 +940,12 @@ MeshRenderer:
|
||||
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!1 &154240
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -900,9 +974,9 @@ RectTransform:
|
||||
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: 22482840}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
@@ -932,6 +1006,7 @@ MonoBehaviour:
|
||||
m_Material: {fileID: 2100000, guid: a33be1e1efa8ca14286b77d062313a4e, type: 2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
@@ -971,12 +1046,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 164052}
|
||||
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: 480898}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3359494
|
||||
MeshFilter:
|
||||
@@ -997,10 +1073,17 @@ MeshRenderer:
|
||||
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:
|
||||
@@ -1022,9 +1105,12 @@ MeshRenderer:
|
||||
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!1 &164286
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1053,9 +1139,9 @@ RectTransform:
|
||||
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: 22482840}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -1085,6 +1171,7 @@ MonoBehaviour:
|
||||
m_Material: {fileID: 2100000, guid: a33be1e1efa8ca14286b77d062313a4e, type: 2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
@@ -1132,12 +1219,12 @@ RectTransform:
|
||||
m_LocalRotation: {x: -0.000000003090828, y: -1, z: -0.000000028749422, w: 0.00000044703478}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -0.0020311438}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 22489296}
|
||||
- {fileID: 22497104}
|
||||
- {fileID: 22432168}
|
||||
m_Father: {fileID: 22488062}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
@@ -1167,6 +1254,7 @@ MonoBehaviour:
|
||||
m_Material: {fileID: 2100000, guid: a33be1e1efa8ca14286b77d062313a4e, type: 2}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 0.627451}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
@@ -1197,6 +1285,7 @@ MonoBehaviour:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 154240}
|
||||
m_TargetAssemblyTypeName:
|
||||
m_MethodName: SetActive
|
||||
m_Mode: 6
|
||||
m_Arguments:
|
||||
@@ -1208,6 +1297,7 @@ MonoBehaviour:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
- m_Target: {fileID: 196296}
|
||||
m_TargetAssemblyTypeName:
|
||||
m_MethodName: SetActive
|
||||
m_Mode: 6
|
||||
m_Arguments:
|
||||
@@ -1225,6 +1315,7 @@ MonoBehaviour:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 154240}
|
||||
m_TargetAssemblyTypeName:
|
||||
m_MethodName: SetActive
|
||||
m_Mode: 6
|
||||
m_Arguments:
|
||||
@@ -1236,6 +1327,7 @@ MonoBehaviour:
|
||||
m_BoolArgument: 1
|
||||
m_CallState: 2
|
||||
- m_Target: {fileID: 196296}
|
||||
m_TargetAssemblyTypeName:
|
||||
m_MethodName: SetActive
|
||||
m_Mode: 6
|
||||
m_Arguments:
|
||||
@@ -1269,14 +1361,15 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 187208}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.707106, z: 0, w: 0.7071076}
|
||||
m_LocalPosition: {x: -0.009499073, y: 0.51312, z: 0.18504047}
|
||||
m_LocalScale: {x: 2.086288, y: 2.44284, z: 2.0862887}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 451406}
|
||||
- {fileID: 438440}
|
||||
m_Father: {fileID: 479482}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &196296
|
||||
GameObject:
|
||||
@@ -1306,9 +1399,9 @@ RectTransform:
|
||||
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: 22482840}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
@@ -1338,6 +1431,7 @@ MonoBehaviour:
|
||||
m_Material: {fileID: 2100000, guid: a33be1e1efa8ca14286b77d062313a4e, type: 2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,307 +1,199 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using Invector;
|
||||
using Invector.vEventSystems;
|
||||
using System.Collections;
|
||||
|
||||
/// <summary>
|
||||
/// AnimatorAI: Đồng bộ hóa trạng thái của EnemyAI với Animator.
|
||||
/// Tích hợp Simulation Mode để giả lập animation khi chưa có logic di chuyển hoàn chỉnh.
|
||||
/// AnimatorAI: Advanced Invector-style Animator synchronization for EnemyAI.
|
||||
/// Resolves T-pose by ensuring all core Invector parameters are correctly synced.
|
||||
/// </summary>
|
||||
public class AnimatorAI : MonoBehaviour
|
||||
public class AnimatorAI : MonoBehaviour, vIAnimatorStateInfoController
|
||||
{
|
||||
protected Animator animator;
|
||||
protected EnemyAI enemyAI;
|
||||
protected NavMeshAgent agent;
|
||||
protected Rigidbody rb;
|
||||
|
||||
[Header("Debug Settings")]
|
||||
public bool debugMode = true;
|
||||
public Color debugColor = Color.cyan;
|
||||
|
||||
[Header("Simulation Mode (Giả lập)")]
|
||||
public bool useSimulation = false; // Tích chọn để dùng thông số giả lập bên dưới
|
||||
public bool autoCycleSpeed = false; // Tự động chạy/đi bộ/đứng im theo vòng lặp
|
||||
[Range(0, 1)] public float simVerticalVelocity = 0f;
|
||||
public bool simIsSprinting = false;
|
||||
public bool simIsAiming = false;
|
||||
public int simMoveSetID = 0;
|
||||
protected vHealthController healthController;
|
||||
|
||||
[Header("Movement Settings")]
|
||||
public float sprintThreshold = 0.8f;
|
||||
public float dampTime = 0.1f;
|
||||
public float groundDistanceValue = 0.05f;
|
||||
|
||||
public vAnimatorStateInfos animatorStateInfos { get; protected set; }
|
||||
|
||||
#region Animator Parameters (Invector Style)
|
||||
protected vAnimatorParameter isDead;
|
||||
protected vAnimatorParameter isGrounded;
|
||||
protected vAnimatorParameter isCrouching;
|
||||
protected vAnimatorParameter isStrafing;
|
||||
protected vAnimatorParameter isSliding;
|
||||
protected vAnimatorParameter isSprinting;
|
||||
protected vAnimatorParameter isAiming;
|
||||
protected vAnimatorParameter canAim;
|
||||
protected vAnimatorParameter flipAnimation;
|
||||
protected vAnimatorParameter flipEquip;
|
||||
protected vAnimatorParameter groundDistance;
|
||||
protected vAnimatorParameter groundAngle;
|
||||
protected vAnimatorParameter verticalVelocity;
|
||||
protected vAnimatorParameter horizontalVelocity;
|
||||
protected vAnimatorParameter groundDistance;
|
||||
protected vAnimatorParameter moveSet_ID;
|
||||
protected vAnimatorParameter upperBody_ID;
|
||||
protected vAnimatorParameter idleRandom;
|
||||
protected vAnimatorParameter idleRandomTrigger;
|
||||
protected vAnimatorParameter randomAttack;
|
||||
protected vAnimatorParameter weakAttack;
|
||||
protected vAnimatorParameter strongAttack;
|
||||
protected vAnimatorParameter isBlocking;
|
||||
protected vAnimatorParameter attackID;
|
||||
protected vAnimatorParameter defenseID;
|
||||
protected vAnimatorParameter recoilID;
|
||||
protected vAnimatorParameter reactionID;
|
||||
protected vAnimatorParameter triggerRecoil;
|
||||
protected vAnimatorParameter triggerReaction;
|
||||
protected vAnimatorParameter hitDirection;
|
||||
protected vAnimatorParameter reactionID;
|
||||
protected vAnimatorParameter triggerReaction;
|
||||
protected vAnimatorParameter resetState;
|
||||
protected vAnimatorParameter reload;
|
||||
protected vAnimatorParameter cancelReload;
|
||||
protected vAnimatorParameter reloadID;
|
||||
protected vAnimatorParameter shoot;
|
||||
protected vAnimatorParameter shot_ID;
|
||||
protected vAnimatorParameter powerCharger;
|
||||
#endregion
|
||||
|
||||
[Header("Nuclear Diagnostic (Siêu chẩn đoán)")]
|
||||
public string forcePlayState = ""; // Gõ tên State vào đây để ép nó chạy (vd: Idle)
|
||||
public bool showLayerWeights = false;
|
||||
protected Vector3 lastPosition;
|
||||
protected float currentV;
|
||||
protected float currentH;
|
||||
|
||||
protected virtual void Start()
|
||||
protected virtual void Awake()
|
||||
{
|
||||
animator = GetComponentInChildren<Animator>();
|
||||
enemyAI = GetComponent<EnemyAI>();
|
||||
agent = GetComponent<NavMeshAgent>();
|
||||
rb = GetComponent<Rigidbody>();
|
||||
healthController = GetComponent<vHealthController>();
|
||||
|
||||
if (animator == null)
|
||||
if (animator)
|
||||
{
|
||||
Debug.LogError($"<color=red>[AnimatorAI]</color> KHÔNG tìm thấy Animator trên {gameObject.name} hoặc các con của nó!");
|
||||
return;
|
||||
animatorStateInfos = new vAnimatorStateInfos(animator);
|
||||
InitializeParameters();
|
||||
}
|
||||
|
||||
// Chạy chẩn đoán hạt nhân
|
||||
StartCoroutine(NuclearDiagnosticRoutine());
|
||||
|
||||
InitializeParameters();
|
||||
lastPosition = transform.position;
|
||||
}
|
||||
|
||||
private IEnumerator NuclearDiagnosticRoutine()
|
||||
protected virtual void OnEnable()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
yield return new WaitForSeconds(1f);
|
||||
this.Register();
|
||||
if (healthController) healthController.onReceiveDamage.AddListener(OnReceiveDamage);
|
||||
}
|
||||
|
||||
if (animator == null) yield break;
|
||||
|
||||
// 1. Kiểm tra Enabled
|
||||
if (!animator.enabled)
|
||||
Debug.LogError($"<color=red>[NUCLEAR ALERT]</color> Component Animator đang bị TẮT (enabled = false)!");
|
||||
|
||||
// 2. Kiểm tra Rig Type
|
||||
if (animator.isHuman)
|
||||
Debug.Log($"<color=white>[Rig Info]</color> Rig là Humanoid. Hãy chắc chắn các Animation cũng là Humanoid.");
|
||||
else
|
||||
Debug.LogWarning($"<color=yellow>[Rig Info]</color> Rig là Generic/Legacy. Nếu bạn dùng Animation Humanoid nó sẽ không chạy.");
|
||||
|
||||
// 3. Kiểm tra Layer Weight
|
||||
if (showLayerWeights)
|
||||
{
|
||||
for (int i = 0; i < animator.layerCount; i++)
|
||||
{
|
||||
Debug.Log($"Layer {i} ({animator.GetLayerName(i)}): Weight = {animator.GetLayerWeight(i)}");
|
||||
}
|
||||
}
|
||||
|
||||
// 4. Ép chạy State nếu có yêu cầu
|
||||
if (!string.IsNullOrEmpty(forcePlayState))
|
||||
{
|
||||
Debug.Log($"<color=magenta>[Nuclear Force]</color> ÉP CHẠY STATE: {forcePlayState}");
|
||||
animator.Play(forcePlayState);
|
||||
forcePlayState = ""; // Reset sau khi chạy
|
||||
}
|
||||
|
||||
// 5. Kiểm tra vị trí xương (Nếu T-pose thì thường xương không đổi vị trí)
|
||||
Vector3 handPos = animator.GetBoneTransform(HumanBodyBones.RightHand) ? animator.GetBoneTransform(HumanBodyBones.RightHand).position : Vector3.zero;
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
if (handPos != Vector3.zero && Vector3.Distance(handPos, animator.GetBoneTransform(HumanBodyBones.RightHand).position) < 0.001f && animator.speed > 0)
|
||||
{
|
||||
// Nếu xương không nhúc nhích dù tốc độ > 0
|
||||
Debug.LogWarning($"<color=red>[NUCLEAR ALERT]</color> CẢNH BÁO: Xương nhân vật không nhúc nhích! Có thể do Rig lỗi hoặc bị script khác khóa xương.");
|
||||
}
|
||||
|
||||
if (!useSimulation) yield break;
|
||||
}
|
||||
protected virtual void OnDisable()
|
||||
{
|
||||
this.UnRegister();
|
||||
if (healthController) healthController.onReceiveDamage.RemoveListener(OnReceiveDamage);
|
||||
}
|
||||
|
||||
protected virtual void InitializeParameters()
|
||||
{
|
||||
if (animator == null) return;
|
||||
|
||||
// Khởi tạo và kiểm tra từng tham số quan trọng
|
||||
isDead = ValidateAndInit("isDead");
|
||||
isGrounded = ValidateAndInit("IsGrounded");
|
||||
isCrouching = ValidateAndInit("IsCrouching");
|
||||
isStrafing = ValidateAndInit("IsStrafing");
|
||||
isSliding = ValidateAndInit("IsSliding");
|
||||
isSprinting = ValidateAndInit("IsSprinting");
|
||||
isAiming = ValidateAndInit("IsAiming");
|
||||
canAim = ValidateAndInit("CanAim");
|
||||
flipAnimation = ValidateAndInit("FlipAnimation");
|
||||
flipEquip = ValidateAndInit("FlipEquip");
|
||||
groundDistance = ValidateAndInit("GroundDistance");
|
||||
groundAngle = ValidateAndInit("GroundAngle");
|
||||
verticalVelocity = ValidateAndInit("VerticalVelocity");
|
||||
moveSet_ID = ValidateAndInit("MoveSet_ID");
|
||||
upperBody_ID = ValidateAndInit("UpperBody_ID");
|
||||
idleRandom = ValidateAndInit("IdleRandom");
|
||||
idleRandomTrigger = ValidateAndInit("IdleRandomTrigger");
|
||||
randomAttack = ValidateAndInit("RandomAttack");
|
||||
weakAttack = ValidateAndInit("WeakAttack");
|
||||
strongAttack = ValidateAndInit("StrongAttack");
|
||||
isBlocking = ValidateAndInit("IsBlocking");
|
||||
attackID = ValidateAndInit("AttackID");
|
||||
defenseID = ValidateAndInit("DefenseID");
|
||||
recoilID = ValidateAndInit("RecoilID");
|
||||
reactionID = ValidateAndInit("ReactionID");
|
||||
triggerRecoil = ValidateAndInit("TriggerRecoil");
|
||||
triggerReaction = ValidateAndInit("TriggerReaction");
|
||||
hitDirection = ValidateAndInit("HitDirection");
|
||||
resetState = ValidateAndInit("ResetState");
|
||||
reload = ValidateAndInit("Reload");
|
||||
cancelReload = ValidateAndInit("CancelReload");
|
||||
reloadID = ValidateAndInit("ReloadID");
|
||||
shoot = ValidateAndInit("Shoot");
|
||||
shot_ID = ValidateAndInit("Shot_ID");
|
||||
powerCharger = ValidateAndInit("PowerCharger");
|
||||
}
|
||||
|
||||
private vAnimatorParameter ValidateAndInit(string paramName)
|
||||
{
|
||||
vAnimatorParameter p = new vAnimatorParameter(animator, paramName);
|
||||
if (!p.isValid && debugMode)
|
||||
{
|
||||
// Chỉ cảnh báo những biến cốt lõi nếu thiếu
|
||||
if (paramName == "VerticalVelocity" || paramName == "IsGrounded" || paramName == "IsAiming")
|
||||
Debug.LogWarning($"<color=yellow>[AnimatorAI]</color> Cảnh báo: Controller thiếu biến quan trọng: <b>{paramName}</b>");
|
||||
}
|
||||
return p;
|
||||
isDead = new vAnimatorParameter(animator, "isDead");
|
||||
isGrounded = new vAnimatorParameter(animator, "IsGrounded");
|
||||
isStrafing = new vAnimatorParameter(animator, "IsStrafing");
|
||||
isSprinting = new vAnimatorParameter(animator, "IsSprinting");
|
||||
isAiming = new vAnimatorParameter(animator, "IsAiming");
|
||||
verticalVelocity = new vAnimatorParameter(animator, "VerticalVelocity");
|
||||
horizontalVelocity = new vAnimatorParameter(animator, "HorizontalVelocity");
|
||||
groundDistance = new vAnimatorParameter(animator, "GroundDistance");
|
||||
moveSet_ID = new vAnimatorParameter(animator, "MoveSet_ID");
|
||||
attackID = new vAnimatorParameter(animator, "AttackID");
|
||||
hitDirection = new vAnimatorParameter(animator, "HitDirection");
|
||||
reactionID = new vAnimatorParameter(animator, "ReactionID");
|
||||
triggerReaction = new vAnimatorParameter(animator, "TriggerReaction");
|
||||
resetState = new vAnimatorParameter(animator, "ResetState");
|
||||
}
|
||||
|
||||
protected virtual void Update()
|
||||
{
|
||||
if (animator == null) return;
|
||||
if (animator == null || enemyAI == null || agent == null) return;
|
||||
|
||||
if (useSimulation)
|
||||
{
|
||||
RunSimulation();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (enemyAI == null || agent == null) return;
|
||||
UpdateMovementParameters();
|
||||
UpdateCombatParameters();
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void RunSimulation()
|
||||
{
|
||||
// 1. Giả lập tốc độ di chuyển
|
||||
if (autoCycleSpeed)
|
||||
{
|
||||
// Tạo vòng lặp tốc độ từ 0 đến 1 dùng hàm Sin
|
||||
simVerticalVelocity = Mathf.Abs(Mathf.Sin(Time.time * 0.5f));
|
||||
simIsSprinting = simVerticalVelocity > sprintThreshold;
|
||||
}
|
||||
|
||||
SetFloat(verticalVelocity, simVerticalVelocity, "SIM: VerticalVelocity");
|
||||
SetBool(isSprinting, simIsSprinting, "SIM: IsSprinting");
|
||||
SetBool(isGrounded, true, "SIM: IsGrounded"); // Luôn giả lập trên mặt đất
|
||||
|
||||
// 2. Giả lập chiến đấu
|
||||
SetBool(isAiming, simIsAiming, "SIM: IsAiming");
|
||||
SetInt(moveSet_ID, simMoveSetID, "SIM: MoveSet_ID");
|
||||
SetBool(canAim, simIsAiming, "SIM: CanAim");
|
||||
UpdateMovementParameters();
|
||||
UpdateCombatParameters();
|
||||
}
|
||||
|
||||
protected virtual void UpdateMovementParameters()
|
||||
{
|
||||
// 1. Grounded & GroundDistance (Critical for T-pose prevention)
|
||||
bool grounded = agent.isOnNavMesh || agent.enabled;
|
||||
SetBool(isGrounded, grounded, "IsGrounded");
|
||||
SetBool(isGrounded, grounded);
|
||||
SetFloat(groundDistance, grounded ? 0f : groundDistanceValue);
|
||||
|
||||
float speed = agent.velocity.magnitude / enemyAI.moveSpeed;
|
||||
SetFloat(verticalVelocity, speed, "VerticalVelocity");
|
||||
// 2. Responsive Velocity Calculation
|
||||
// Use a mix of agent velocity and position delta for better responsiveness
|
||||
Vector3 worldVelocity = (transform.position - lastPosition) / Time.deltaTime;
|
||||
lastPosition = transform.position;
|
||||
|
||||
bool sprinting = agent.velocity.magnitude > (enemyAI.moveSpeed * sprintThreshold);
|
||||
SetBool(isSprinting, sprinting, "IsSprinting");
|
||||
if (worldVelocity.magnitude < 0.01f) worldVelocity = Vector3.zero;
|
||||
|
||||
bool isDodging = !agent.enabled && !rb.isKinematic;
|
||||
SetBool(flipAnimation, isDodging, "FlipAnimation (Dodge)");
|
||||
Vector3 localVelocity = transform.InverseTransformDirection(worldVelocity);
|
||||
|
||||
float targetV = localVelocity.z / enemyAI.moveSpeed;
|
||||
float targetH = localVelocity.x / enemyAI.moveSpeed;
|
||||
|
||||
// Smooth velocity values
|
||||
currentV = Mathf.Lerp(currentV, targetV, 10f * Time.deltaTime);
|
||||
currentH = Mathf.Lerp(currentH, targetH, 10f * Time.deltaTime);
|
||||
|
||||
SetFloat(verticalVelocity, currentV);
|
||||
SetFloat(horizontalVelocity, currentH);
|
||||
|
||||
// 3. Sprinting
|
||||
bool sprinting = worldVelocity.magnitude > (enemyAI.moveSpeed * sprintThreshold);
|
||||
SetBool(isSprinting, sprinting);
|
||||
|
||||
// 4. Strafing
|
||||
SetBool(isStrafing, enemyAI.playerHasArtifact);
|
||||
}
|
||||
|
||||
protected virtual void UpdateCombatParameters()
|
||||
{
|
||||
bool aiming = enemyAI.playerHasArtifact && agent.isStopped;
|
||||
SetBool(isAiming, aiming, "IsAiming");
|
||||
SetBool(isAiming, enemyAI.playerHasArtifact);
|
||||
SetInt(moveSet_ID, enemyAI.playerHasArtifact ? 1 : 0);
|
||||
|
||||
int moveID = enemyAI.playerHasArtifact ? 1 : 0;
|
||||
SetInt(moveSet_ID, moveID, "MoveSet_ID");
|
||||
// Shooting burst
|
||||
if (enemyAI.IsShootingBurst)
|
||||
SetInt(attackID, 1);
|
||||
else
|
||||
SetInt(attackID, 0);
|
||||
|
||||
SetBool(canAim, enemyAI.playerHasArtifact, "CanAim");
|
||||
}
|
||||
|
||||
#region Optimized Setters with Debug
|
||||
|
||||
protected void SetBool(vAnimatorParameter param, bool value, string name)
|
||||
{
|
||||
if (param.isValid)
|
||||
// Dodge logic
|
||||
if (enemyAI.IsDodging)
|
||||
{
|
||||
bool current = animator.GetBool(param);
|
||||
if (current != value)
|
||||
{
|
||||
animator.SetBool(param, value);
|
||||
if (debugMode) Debug.Log($"<color=cyan>[AnimDebug]</color> {gameObject.name}: <b>{name}</b> -> {value}");
|
||||
}
|
||||
// In Invector, dodges are often handled via triggers or specific IDs
|
||||
SetAnimatorTrigger(triggerReaction);
|
||||
}
|
||||
|
||||
// Death state
|
||||
if (healthController) SetBool(isDead, healthController.isDead);
|
||||
}
|
||||
|
||||
protected void SetFloat(vAnimatorParameter param, float value, string name)
|
||||
protected virtual void OnReceiveDamage(vDamage damage)
|
||||
{
|
||||
if (animator == null || !animator.enabled) return;
|
||||
|
||||
// Sync damage parameters for hit reactions
|
||||
if (hitDirection.isValid && damage.sender)
|
||||
{
|
||||
float angle = transform.HitAngle(damage.sender.position);
|
||||
animator.SetInteger(hitDirection, (int)angle);
|
||||
}
|
||||
|
||||
if (reactionID.isValid) animator.SetInteger(reactionID, damage.reaction_id);
|
||||
|
||||
SetAnimatorTrigger(triggerReaction);
|
||||
SetAnimatorTrigger(resetState);
|
||||
}
|
||||
|
||||
#region Helpers
|
||||
protected void SetBool(vAnimatorParameter param, bool value)
|
||||
{
|
||||
if (param.isValid && animator.GetBool(param) != value)
|
||||
animator.SetBool(param, value);
|
||||
}
|
||||
|
||||
protected void SetFloat(vAnimatorParameter param, float value)
|
||||
{
|
||||
if (param.isValid)
|
||||
{
|
||||
animator.SetFloat(param, value, dampTime, Time.deltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetInt(vAnimatorParameter param, int value, string name)
|
||||
protected void SetInt(vAnimatorParameter param, int value)
|
||||
{
|
||||
if (param.isValid)
|
||||
{
|
||||
int current = animator.GetInteger(param);
|
||||
if (current != value)
|
||||
{
|
||||
animator.SetInteger(param, value);
|
||||
if (debugMode) Debug.Log($"<color=orange>[AnimDebug]</color> {gameObject.name}: <b>{name}</b> -> {value}");
|
||||
}
|
||||
}
|
||||
if (param.isValid && animator.GetInteger(param) != value)
|
||||
animator.SetInteger(param, value);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Helper Methods (Triggers)
|
||||
|
||||
public virtual void SetAnimatorTrigger(vAnimatorParameter trigger, string name = "Trigger")
|
||||
public void SetAnimatorTrigger(vAnimatorParameter trigger)
|
||||
{
|
||||
if (trigger.isValid)
|
||||
{
|
||||
if (debugMode) Debug.Log($"<color=yellow>[AnimDebug]</color> {gameObject.name}: Kích hoạt <b>{name}</b>");
|
||||
StartCoroutine(SetTriggerRoutine(trigger));
|
||||
}
|
||||
if (trigger.isValid) StartCoroutine(SetTriggerRoutine(trigger));
|
||||
}
|
||||
|
||||
private IEnumerator SetTriggerRoutine(int targetHash)
|
||||
@@ -310,6 +202,5 @@ public class AnimatorAI : MonoBehaviour
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
animator.ResetTrigger(targetHash);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -61,6 +61,9 @@ public class EnemyAI : MonoBehaviour
|
||||
private int strafeDirectionSign = 1;
|
||||
private bool isShootingBurst = false;
|
||||
|
||||
public bool IsDodging => isDodging;
|
||||
public bool IsShootingBurst => isShootingBurst;
|
||||
|
||||
[Header("Conversation Settings")]
|
||||
public string npcName = "Guard";
|
||||
[TextArea] public string persona = "You are a bored security guard. You love coffee and hate night shifts.";
|
||||
|
||||
@@ -51,6 +51,9 @@ namespace Invector.vShooter
|
||||
{
|
||||
AddTrailPosition();
|
||||
}
|
||||
|
||||
// Log diagnostic: Kiểm tra Layer mà đạn có thể bắn trúng
|
||||
Debug.Log($"<color=cyan>PROJECTILE SPAWNED:</color> HitLayer Mask: {hitLayer.value}. Đảm bảo Layer của Enemy nằm trong mask này.");
|
||||
}
|
||||
|
||||
protected virtual void Update()
|
||||
@@ -61,6 +64,7 @@ namespace Invector.vShooter
|
||||
transform.rotation = Quaternion.LookRotation(_rigidBody.linearVelocity.normalized, transform.up);
|
||||
}
|
||||
|
||||
// Thực hiện raycast để kiểm tra va chạm
|
||||
if (Physics.Linecast(previousPosition, transform.position + transform.forward * 0.5f, out hitInfo, hitLayer))
|
||||
{
|
||||
if (!hitInfo.collider)
|
||||
@@ -98,11 +102,31 @@ namespace Invector.vShooter
|
||||
damage.hitPosition = hitInfo.point;
|
||||
damage.receiver = hitInfo.collider.transform;
|
||||
damage.force = transform.forward * damage.damageValue * forceMultiplier;
|
||||
|
||||
if (damage.damageValue > 0)
|
||||
{
|
||||
onPassDamage.Invoke(damage);
|
||||
|
||||
hitInfo.collider.gameObject.ApplyDamage(damage, damage.sender ? damage.sender.GetComponent<vIMeleeFighter>() : null);
|
||||
// 1. Log khi trúng bất cứ thứ gì
|
||||
Debug.Log($"<color=yellow>PROJECTILE HIT:</color> {hitInfo.collider.name} | Tag: {hitInfo.collider.tag} | Layer: {LayerMask.LayerToName(hitInfo.collider.gameObject.layer)}");
|
||||
|
||||
// 2. Tìm đối tượng nhận sát thương (ưu tiên tìm ở cha nếu trúng collider con)
|
||||
var damageReceiver = hitInfo.collider.gameObject.GetComponentInParent<vIDamageReceiver>();
|
||||
|
||||
if (damageReceiver != null)
|
||||
{
|
||||
if (hitInfo.collider.CompareTag("Enemy") || damageReceiver.gameObject.CompareTag("Enemy"))
|
||||
{
|
||||
Debug.Log($"<color=green>APPLYING DAMAGE TO ENEMY:</color> {damageReceiver.gameObject.name}. Damage: {damage.damageValue}");
|
||||
}
|
||||
|
||||
// Gửi sát thương đến đối tượng tìm thấy
|
||||
damageReceiver.gameObject.ApplyDamage(damage, damage.sender ? damage.sender.GetComponent<vIMeleeFighter>() : null);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"<color=orange>NO DAMAGE RECEIVER FOUND</color> on {hitInfo.collider.name} or its parents. Đảm bảo Enemy có component vHealthController.");
|
||||
}
|
||||
}
|
||||
|
||||
var rigb = hitInfo.collider.gameObject.GetComponent<Rigidbody>();
|
||||
|
||||
Reference in New Issue
Block a user