Compare commits

2 Commits

Author SHA1 Message Date
67910bf6c8 Update 2026-06-04 23:01:39 +07:00
45d3fe8c21 update 2026-06-04 21:26:19 +07:00
70 changed files with 6365 additions and 424 deletions

View File

@@ -4,20 +4,79 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="f9183c68-daf0-43b8-be4c-fad79983f91b" name="Changes" comment="" />
<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/POLY STYLE - Fantasy Treasure Chest.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon/Fusion.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon/Fusion/Assemblies.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon/FusionDemos.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon/FusionMenu.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon/PhotonLibs.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Photon/PhotonLibs/netstandard2.0.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Complete Balloons Set.pdf" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Complete Balloons Set.pdf.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Demo.unity" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Demo.unity.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloon1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloon1.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloon2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloon2.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloonLong1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloonLong1.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloonLong2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Pixel/PixelBalloonLong2.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_1.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_10.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_10.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_2.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_3.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_3.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_4.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_4.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_5.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_5.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_6.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_6.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_7.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_7.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_8.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_8.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_9.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Realistic/balloon_9.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_heart1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_heart1.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_heart2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_heart2.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_star1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_star1.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_star2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Qookie Games/Balloons Free/Shapes/balloon_star2.png.meta" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Camera/vThirdPersonCamera.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Camera/vThirdPersonCamera.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Camera/vThirdPersonCameraState.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Camera/vThirdPersonCameraState.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Player/CharacterController/vThirdPersonInput.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Player/CharacterController/vThirdPersonInput.cs" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="EmbeddingIndexingInfo">
<option name="cachedIndexableFilesCount" value="80" />
<option name="cachedIndexableFilesCount" value="76" />
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$PROJECT_DIR$/Assets/InventoryData.json" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Assets/Scripts/Audio/AudioManager.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Assets/Scripts/Network/BasicSpawner.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Assets/Scripts/UI/LobbyController.cs" root0="FORCE_HIGHLIGHTING" />
@@ -25,6 +84,7 @@
<setting file="file://$PROJECT_DIR$/Assets/UI/MainPanelSettings.asset" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Library/PackageCache/com.unity.render-pipelines.core@04ab0eefa0c3/Editor/Utilities/LocalizationHelper.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Library/PackageCache/com.unity.timeline@7f8b2fb101b6/Editor/Localization/Localization.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Library/PackageCache/com.unity.ugui@bb329a87fcdc/Runtime/UGUI/EventSystem/EventSystem.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Library/PackageCache/com.wooshii.foldericons@201a18f355d3/FolderIcons/Editor/FolderIcons.cs" root0="SKIP_HIGHLIGHTING" />
</component>
<component name="McpProjectServerCommands">
@@ -95,7 +155,7 @@
<option name="MIXED_MODE_DEBUG" value="0" />
<method v="2" />
</configuration>
<configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
<configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost" useMixedMode="false">
<option name="allowRunningInParallel" value="false" />
<option name="listenPortForConnections" value="false" />
<option name="pid" />
@@ -106,7 +166,6 @@
<option name="selectedOptions">
<list />
</option>
<option name="useMixedMode" value="false" />
<method v="2" />
</configuration>
<configuration name="Attach to" type="UnityDevicePlayer" factoryName="UnityAttachToDevicePlayer">
@@ -172,7 +231,6 @@
<workItem from="1780364354282" duration="4357000" />
<workItem from="1780409218377" duration="9852000" />
<workItem from="1780494322686" duration="643000" />
<workItem from="1780565492235" duration="309000" />
</task>
<servers />
</component>

75
Assets/InventoryData.json Normal file
View File

@@ -0,0 +1,75 @@
{
"itemReferences": [
{
"amount": 1,
"id": 10,
"attributes": [
{
"name": 2,
"value": 36,
"isOpen": false,
"isBool": false
},
{
"name": 6,
"value": 8,
"isOpen": false,
"isBool": false
}
]
}
],
"equipAreas": [
{
"slotsData": [
{
"hasItem": true,
"indexOfItem": 0
},
{
"hasItem": false,
"indexOfItem": 0
},
{
"hasItem": false,
"indexOfItem": 0
}
],
"indexOfSelectedSlot": 0
},
{
"slotsData": [
{
"hasItem": false,
"indexOfItem": 0
},
{
"hasItem": false,
"indexOfItem": 0
},
{
"hasItem": false,
"indexOfItem": 0
}
],
"indexOfSelectedSlot": 0
},
{
"slotsData": [
{
"hasItem": false,
"indexOfItem": 0
},
{
"hasItem": false,
"indexOfItem": 0
},
{
"hasItem": false,
"indexOfItem": 0
}
],
"indexOfSelectedSlot": 0
}
]
}

View File

@@ -1,7 +1,6 @@
fileFormatVersion: 2
guid: ea7d09efcbeafdd4690e2b2b3236d043
folderAsset: yes
DefaultImporter:
guid: 760274f8c30c80848a1fb1c5dc64a2d5
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 921c5d99d764f7e4184745c7ab001a30
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: c862e7051fa82514e8cb688cd9667d93
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: ed59a5af28246c141afd7603a3a94af3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 2fdd0acc5f279f54299e93076a7ad92d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: da4f77c9ec1cc314ca268a68c1441354
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 2c2915ce8b97ca744bfd4f5ea2471af1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: f934eecf73f7e0e438ff1a0fffa1893e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -3271,9 +3271,9 @@ GameObject:
- component: {fileID: 114525927984870190}
- component: {fileID: 832688648}
- component: {fileID: 6688537537024804213}
- component: {fileID: 1505227404007521061}
- component: {fileID: -3829962440237222997}
- component: {fileID: -3602722895466718484}
- component: {fileID: 1505227404007521061}
m_Layer: 8
m_Name: vShooterMelee_Inventory
m_TagString: Player
@@ -4686,6 +4686,20 @@ MonoBehaviour:
defaultDamageEffects:
- {fileID: 120346, guid: b8f2fe1ee1a01724cb72f5b0e6bd2eef, type: 3}
customDamageEffects: []
--- !u!114 &1505227404007521061
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 146720}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 16509f68a17b8004096bcf4acce328d6, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerInventory
treasuresCollected: 0
totalTreasuresNeeded: 3
--- !u!114 &-3829962440237222997
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -5065,20 +5079,6 @@ MonoBehaviour:
m_DefaultActionMap: Player
m_SplitScreenIndex: -1
m_Camera: {fileID: 0}
--- !u!114 &1505227404007521061
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 146720}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 16509f68a17b8004096bcf4acce328d6, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerInventory
treasuresCollected: 0
totalTreasuresNeeded: 3
--- !u!1 &149606
GameObject:
m_ObjectHideFlags: 0
@@ -6981,8 +6981,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 479055091}
serializedVersion: 2
m_LocalRotation: {x: 0.1953007, y: 0.3776701, z: -0.08181581, w: 0.90140396}
m_LocalPosition: {x: -3.63204, y: 2.8947582, z: 1.3276315}
m_LocalRotation: {x: 0.1953007, y: 0.37767014, z: -0.081815824, w: 0.90140396}
m_LocalPosition: {x: -3.632039, y: 2.8947582, z: 1.3276312}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@@ -7001,7 +7001,109 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1a1bfe72fbc87d04e885296b53e91c66, type: 3}
m_Name:
m_EditorClassIdentifier:
mainTarget: {fileID: 0}
mainTarget: {fileID: 404034}
inputReader: {fileID: -3829962440237222997}
fpvTarget: {fileID: 463090}
fpvFOV: 80
transitionDuration: 0.3
characterFading:
useCharacterFading: 1
minVisibleDistance: 1.2
fullyHiddenDistance: 0.6
characterRenderers: []
occlusionTransparency:
useTransparency: 1
transparencyLayers:
serializedVersion: 2
m_Bits: 0
fadeAlpha: 0.3
dynamicFOV:
useDynamicFOV: 1
tpvSprintFOV: 70
fpvSprintFOV: 95
fovSmoothTime: 5
shakeManager:
useShake: 1
shakeFrequency: 25
decayCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
enableFallImpactShake: 1
minFallHeightForShake: 2
maxFallHeightForShake: 10
minFallShakeIntensity: 0.5
maxFallShakeIntensity: 3
minFallShakeDuration: 0.2
maxFallShakeDuration: 0.8
fallHeightToIntensityCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 1
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
fallHeightToDurationCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 1
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 1
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
_smoothBetweenState: 6
_smoothCameraRotation: 12
_smoothSwitchSide: 2
@@ -7021,7 +7123,7 @@ MonoBehaviour:
behindTargetSmoothRotation: 1
lockCamera: 0
offsetMouse: {x: 0, y: 0}
indexList: 1
indexList: 12
indexLookPoint: 0
offSetPlayerPivot: 0
distance: 5

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,7 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI; // Cần thiết để dùng NavMesh
using Hallucinate.Audio;
[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có
public class EnemyAI : MonoBehaviour
@@ -28,6 +29,11 @@ public class EnemyAI : MonoBehaviour
public float minShootDelay = 1f;
public float maxShootDelay = 3f;
[Header("Audio")]
public string alertSound = "Enemy_Alert";
public string shootSound = "Enemy_Shoot";
private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần
private float nextShootTime;
private NavMeshAgent agent;
@@ -37,10 +43,10 @@ public class EnemyAI : MonoBehaviour
{
agent = GetComponent<NavMeshAgent>();
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;
nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);
InitBehaviorTree();
FindPlayer();
@@ -109,9 +115,15 @@ public class EnemyAI : MonoBehaviour
if (distance <= detectRange)
{
if (!hasSpottedPlayer)
{
hasSpottedPlayer = true;
AudioManager.Instance?.Play(alertSound, position: transform.position);
}
return NodeState.Success;
}
hasSpottedPlayer = false; // Reset nếu player ra khỏi tầm mắt
return NodeState.Failure;
}
@@ -122,6 +134,8 @@ public class EnemyAI : MonoBehaviour
private NodeState ActionPatrol()
{
// Debug.Log("Patrolling...");
if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) 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
@@ -137,7 +151,7 @@ public class EnemyAI : MonoBehaviour
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))
{
@@ -155,7 +169,9 @@ public class EnemyAI : MonoBehaviour
if (player == null) return NodeState.Failure;
// Debug.Log("Chasing Player");
if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;
agent.isStopped = false;
agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi
agent.SetDestination(player.position);
@@ -168,7 +184,9 @@ public class EnemyAI : MonoBehaviour
if (player == null) return NodeState.Failure;
// Debug.Log("Focus and Shoot!");
if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;
// Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt
agent.isStopped = true;
@@ -196,6 +214,7 @@ 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!");
}

View File

@@ -4,6 +4,7 @@ using System.Text;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Networking;
using Hallucinate.Audio;
[Serializable]
public class Part
@@ -44,12 +45,17 @@ public class GerminiNPC : MonoBehaviour
public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện
public Transform playerTransform; // Gán transform của Player vào đây
[Header("Audio")]
public string startTalkSound = "NPC_Interact";
public string responseSound = "NPC_Response";
private void Update()
{
if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)
{
if (CanSeePlayer())
{
AudioManager.Instance?.Play(startTalkSound, position: transform.position);
StartCoroutine(GetGerminiReponse());
}
else
@@ -121,6 +127,7 @@ public class GerminiNPC : MonoBehaviour
{
var npcResponse = geminiResponse.candidates[0].content.parts[0].text;
Debug.Log($"<color=green>Tom:</color> {npcResponse}");
AudioManager.Instance?.Play(responseSound, position: transform.position);
}
}
catch (Exception e)

View File

@@ -1,10 +1,14 @@
using UnityEngine;
using Hallucinate.Audio;
public class LaserProjectile : MonoBehaviour
{
public float speed = 5f;
public float lifeTime = 5f;
[Header("Audio")]
public string hitSound = "Laser_Hit";
private void Start()
{
Destroy(gameObject, lifeTime);
@@ -24,6 +28,8 @@ public class LaserProjectile : MonoBehaviour
{
Debug.Log("Player Hit");
AudioManager.Instance?.Play(hitSound, position: transform.position);
Destroy(gameObject);
}
}

View File

@@ -1,6 +1,8 @@
using Invector.vCharacterController;
using Invector;
using Invector.vCharacterController;
using System.Collections;
using UnityEngine;
using OnlyScove.Scripts;
namespace Invector.vCamera
{
@@ -28,6 +30,19 @@ namespace Invector.vCamera
#region inspector properties
public Transform mainTarget;
public InputReader inputReader;
[Header("First Person View")]
public Transform fpvTarget;
[SerializeField] protected float fpvFOV = 80f;
[SerializeField] protected float transitionDuration = 0.3f;
[Header("Modular Features")]
[SerializeField] protected CameraCharacterFading characterFading = new CameraCharacterFading();
[SerializeField] protected CameraOcclusionTransparency occlusionTransparency = new CameraOcclusionTransparency();
[SerializeField] protected CameraDynamicFOV dynamicFOV = new CameraDynamicFOV();
[SerializeField] protected CameraShakeManager shakeManager = new CameraShakeManager();
[Tooltip("Lerp speed between Camera States")]
[SerializeField] protected float _smoothBetweenState = 6f;
public virtual float smoothBetweenState { get { return _smoothBetweenState; } set { _smoothBetweenState = value; } }
@@ -195,10 +210,68 @@ namespace Invector.vCamera
protected virtual void Start()
{
Init();
}
protected virtual void OnEnable()
{
if (inputReader != null)
{
inputReader.OnToggleViewEvent += ToggleCameraView;
inputReader.OnSwitchSideEvent += ToggleSwitchSide;
}
}
protected virtual void OnDisable()
{
if (inputReader != null)
{
inputReader.OnToggleViewEvent -= ToggleCameraView;
inputReader.OnSwitchSideEvent -= ToggleSwitchSide;
}
}
public virtual void ToggleSwitchSide()
{
SwitchRight(switchRight > 0);
}
public virtual void ToggleCameraView()
{
Debug.Log($"[vThirdPersonCamera] ToggleCameraView called. Current Mode: {currentState.cameraMode}");
if (currentState.cameraMode == TPCameraMode.FirstPerson)
{
Debug.Log("[vThirdPersonCamera] Switching to Default (TPV)");
ChangeState("Default");
}
else
{
Debug.Log("[vThirdPersonCamera] Switching to FirstPerson");
ChangeState("FirstPerson");
// If the state was not found in the list, Invector might have reverted it to Default.
// We force it here by creating a temporary state if necessary.
if (currentState.cameraMode != TPCameraMode.FirstPerson)
{
Debug.Log("[vThirdPersonCamera] FirstPerson state not found in list, creating a temporary one to prevent revert.");
vThirdPersonCameraState fpState = new vThirdPersonCameraState("FirstPerson");
fpState.cameraMode = TPCameraMode.FirstPerson;
fpState.defaultDistance = 0;
fpState.height = 0;
fpState.fov = fpvFOV;
lerpState = fpState;
currentState.CopyState(fpState);
currentStateName = "FirstPerson";
}
}
}
public virtual void TriggerFallImpactShake(float fallHeight)
{
shakeManager.TriggerFallImpactShake(fallHeight);
}
/// <summary>
/// Init camera.
/// </summary>
@@ -209,6 +282,9 @@ namespace Invector.vCamera
return;
}
if (inputReader == null) inputReader = mainTarget.GetComponent<InputReader>();
if (inputReader == null) inputReader = GameObject.FindObjectOfType<InputReader>();
firstUpdated = true;
useSmooth = true;
targetLookAt.rotation = startUsingTargetRotation ? mainTarget.rotation : transform.rotation;
@@ -256,6 +332,8 @@ namespace Invector.vCamera
currentTargetPos = new Vector3(currentTarget.position.x, currentTarget.position.y + offSetPlayerPivot, currentTarget.position.z) + currentTarget.transform.up * lerpState.height;
targetLookAt.position = currentTargetPos;
dynamicFOV.Initialize(currentState.fov, fpvFOV);
isInit = true;
}
@@ -292,7 +370,19 @@ namespace Invector.vCamera
case TPCameraMode.FixedPoint:
CameraFixed();
break;
case TPCameraMode.FirstPerson:
CameraMovement();
break;
}
// Modular Features
if (inputReader != null)
{
dynamicFOV.HandleDynamicFOV(targetCamera, inputReader,
currentState.cameraMode == TPCameraMode.FirstPerson ? CameraController.CameraViewMode.FirstPerson : CameraController.CameraViewMode.ThirdPerson);
}
shakeManager.HandleShake();
transform.position += shakeManager.ShakeOffset;
}
/// <summary>
@@ -799,6 +889,12 @@ namespace Invector.vCamera
currentState.CopyState(lerpState);
}
if (currentState.cameraMode == TPCameraMode.FirstPerson)
{
HandleFirstPersonMovement();
return;
}
if (currentState.useZoom)
{
currentZoom = Mathf.Clamp(currentZoom, currentState.minDistance, currentState.maxDistance);
@@ -918,9 +1014,44 @@ namespace Invector.vCamera
_euler.z = 0;
var _rot = Quaternion.Euler(_euler + currentState.rotationOffSet);
selfRigidbody.MoveRotation(Quaternion.Lerp(startRotation, _rot, transformWeight));
// Apply Fading and Transparency
characterFading.HandleCharacterFading(distance);
occlusionTransparency.HandleTransparency(transform, targetPos);
movementSpeed = Vector2.zero;
}
protected virtual void HandleFirstPersonMovement()
{
if (fpvTarget == null) return;
distance = 0;
targetCamera.fieldOfView = fpvFOV;
// Position
current_cPos = fpvTarget.position;
targetLookAt.position = current_cPos;
selfRigidbody.MovePosition(current_cPos);
// Rotation
float _mouseY = Mathf.LerpAngle(mouseYStart, mouseY, transformWeight);
float _mouseX = Mathf.LerpAngle(mouseXStart, mouseX, transformWeight);
Quaternion newRot = Quaternion.Euler(_mouseY + offsetMouse.y, _mouseX + offsetMouse.x, 0);
targetLookAt.rotation = useSmooth ? Quaternion.Lerp(targetLookAt.rotation, newRot, smoothCameraRotation * Time.fixedDeltaTime) : newRot;
selfRigidbody.MoveRotation(targetLookAt.rotation);
// Sync player body rotation (Yaw only)
if (mainTarget != null)
{
mainTarget.rotation = Quaternion.Euler(0, targetLookAt.eulerAngles.y, 0);
}
characterFading.HandleCharacterFading(0); // Fully hide character head if desired, or set to distance 0 for full hidden
occlusionTransparency.HandleTransparency(transform, fpvTarget.position);
}
protected virtual void CameraFixed()
{
if (useSmooth)

View File

@@ -1,8 +1,16 @@
using UnityEngine;
using UnityEngine;
using System.Collections.Generic;
namespace Invector
{
public enum TPCameraMode
{
FreeDirectional,
FixedAngle,
FixedPoint,
FirstPerson
}
[System.Serializable]
public class vThirdPersonCameraState
{
@@ -56,6 +64,60 @@ namespace Invector
fixedAngle = Vector2.zero;
cameraMode = TPCameraMode.FreeDirectional;
}
public void CopyState(vThirdPersonCameraState state)
{
this.Name = state.Name;
this.forward = state.forward;
this.right = state.right;
this.defaultDistance = state.defaultDistance;
this.maxDistance = state.maxDistance;
this.minDistance = state.minDistance;
this.height = state.height;
this.smooth = state.smooth;
this.smoothDamp = state.smoothDamp;
this.xMouseSensitivity = state.xMouseSensitivity;
this.yMouseSensitivity = state.yMouseSensitivity;
this.yMinLimit = state.yMinLimit;
this.yMaxLimit = state.yMaxLimit;
this.xMinLimit = state.xMinLimit;
this.xMaxLimit = state.xMaxLimit;
this.rotationOffSet = state.rotationOffSet;
this.cullingHeight = state.cullingHeight;
this.cullingMinDist = state.cullingMinDist;
this.fov = state.fov;
this.useZoom = state.useZoom;
this.fixedAngle = state.fixedAngle;
this.lookPoints = state.lookPoints;
this.cameraMode = state.cameraMode;
}
public void Slerp(vThirdPersonCameraState state, float t)
{
this.Name = state.Name;
this.forward = Mathf.Lerp(this.forward, state.forward, t);
this.right = Mathf.Lerp(this.right, state.right, t);
this.defaultDistance = Mathf.Lerp(this.defaultDistance, state.defaultDistance, t);
this.maxDistance = Mathf.Lerp(this.maxDistance, state.maxDistance, t);
this.minDistance = Mathf.Lerp(this.minDistance, state.minDistance, t);
this.height = Mathf.Lerp(this.height, state.height, t);
this.smooth = Mathf.Lerp(this.smooth, state.smooth, t);
this.smoothDamp = Mathf.Lerp(this.smoothDamp, state.smoothDamp, t);
this.xMouseSensitivity = Mathf.Lerp(this.xMouseSensitivity, state.xMouseSensitivity, t);
this.yMouseSensitivity = Mathf.Lerp(this.yMouseSensitivity, state.yMouseSensitivity, t);
this.yMinLimit = Mathf.Lerp(this.yMinLimit, state.yMinLimit, t);
this.yMaxLimit = Mathf.Lerp(this.yMaxLimit, state.yMaxLimit, t);
this.xMinLimit = Mathf.Lerp(this.xMinLimit, state.xMinLimit, t);
this.xMaxLimit = Mathf.Lerp(this.xMaxLimit, state.xMaxLimit, t);
this.rotationOffSet = Vector3.Lerp(this.rotationOffSet, state.rotationOffSet, t);
this.cullingHeight = Mathf.Lerp(this.cullingHeight, state.cullingHeight, t);
this.cullingMinDist = Mathf.Lerp(this.cullingMinDist, state.cullingMinDist, t);
this.fov = Mathf.Lerp(this.fov, state.fov, t);
this.useZoom = state.useZoom;
this.fixedAngle = Vector2.Lerp(this.fixedAngle, state.fixedAngle, t);
this.lookPoints = state.lookPoints;
this.cameraMode = state.cameraMode;
}
}
[System.Serializable]
@@ -66,11 +128,4 @@ namespace Invector
public Vector3 eulerAngle;
public bool freeRotation;
}
public enum TPCameraMode
{
FreeDirectional,
FixedAngle,
FixedPoint
}
}

View File

@@ -1,6 +1,7 @@
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
using Hallucinate.Audio; // Import namespace for AudioManager
public class FinishGate : MonoBehaviour
{
@@ -18,6 +19,11 @@ public class FinishGate : MonoBehaviour
public GameObject winStar2;
public GameObject winStar3;
[Header("Cài đặt Âm thanh")]
public string winSound = "UI_Win";
public string warningSound = "UI_Warning";
public string clickSound = "UI_Click";
private void Start()
{
Time.timeScale = 1f;
@@ -76,6 +82,8 @@ public class FinishGate : MonoBehaviour
winPanel.SetActive(true);
UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc
}
AudioManager.PlayGlobal(winSound); // Chạy âm thanh thắng cuộc
Time.timeScale = 0f;
Cursor.lockState = CursorLockMode.None;
@@ -86,18 +94,23 @@ public class FinishGate : MonoBehaviour
{
if (ui == null) yield break;
ui.SetActive(true);
if (ui == warningUI) AudioManager.PlayGlobal(warningSound); // Chạy âm thanh cảnh báo
yield return new WaitForSeconds(3f);
ui.SetActive(false);
}
public void RestartGame()
{
AudioManager.PlayGlobal(clickSound); // Âm thanh click nút
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void QuitGame()
{
AudioManager.PlayGlobal(clickSound); // Âm thanh click nút
Application.Quit();
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;

View File

@@ -1,11 +1,15 @@
using UnityEngine;
using System.Collections;
using Hallucinate.Audio;
public class TreasureItem : MonoBehaviour
{
[Header("Cài đặt UI thông báo")]
public GameObject notificationText; // Text "Đã nhặt Cổ vật"
[Header("Cài đặt Âm thanh")]
public string pickupSound = "Item_Pickup";
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
@@ -29,6 +33,12 @@ public class TreasureItem : MonoBehaviour
// 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI
SetEnemiesAlertState(true);
// 4. Chạy âm thanh nhặt đồ
if (AudioManager.Instance != null)
{
AudioManager.Instance.Play(pickupSound, position: transform.position);
}
if (notificationText != null)
{
StopAllCoroutines();

View File

@@ -164,6 +164,7 @@ namespace OnlyScove.Scripts
{
if (context.performed)
{
Debug.Log("[InputReader] ToggleView Action Performed!");
wasToggleViewPressed = true;
OnToggleViewEvent?.Invoke();
}

View File

@@ -1,4 +1,5 @@
using System.Collections;
using Invector;
using OnlyScove.Scripts;
using UnityEngine;
using UnityEngine.Events;
@@ -485,10 +486,7 @@ namespace Invector.vCharacterController
public virtual void StrafeInput()
{
if (inputReader != null && inputReader.ConsumeToggleView())
{
cc.Strafe();
}
// Removed inputReader.ConsumeToggleView() logic that was incorrectly triggering Strafe
}
public virtual void SprintInput()
@@ -610,6 +608,10 @@ namespace Invector.vCharacterController
{
tpCamera.ChangeState(customCameraState, customlookAtPoint, smoothCameraState);
}
else if (tpCamera.currentState.cameraMode == TPCameraMode.FirstPerson)
{
// Do nothing, let FirstPerson mode stay active
}
else if (cc.isCrouching)
{
tpCamera.ChangeState("Crouch", true);

View File

@@ -310,3 +310,30 @@ MonoBehaviour:
eulerAngle: {x: 24.449335, y: 135.46579, z: 0.001277386}
freeRotation: 1
cameraMode: 2
- Name: FirstPerson
forward: 70
right: 0
defaultDistance: 0
maxDistance: 0
minDistance: 0
height: 0
smooth: 10
smoothDamp: 0
xMouseSensitivity: 3
yMouseSensitivity: 3
yMinLimit: -40
yMaxLimit: 80
xMinLimit: -360
xMaxLimit: 360
rotationOffSet: {x: 0, y: 0, z: 0}
cullingHeight: 0.2
cullingMinDist: 0.1
fov: 113.1
useZoom: 0
fixedAngle: {x: 0, y: 0}
lookPoints:
- pointName: point_01
positionPoint: {x: 6.950366, y: 2.8947582, z: -24.111038}
eulerAngle: {x: 24.449337, y: 315.46573, z: 0.0012745722}
freeRotation: 1
cameraMode: 3

View File

@@ -171,7 +171,7 @@
],
"bindings": [
{
"name": "",
"name": "Gamepad",
"id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403",
"path": "<Gamepad>/leftStick",
"interactions": "",
@@ -281,7 +281,7 @@
"isPartOfComposite": true
},
{
"name": "",
"name": "Gamepad",
"id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235",
"path": "<Gamepad>/rightStick",
"interactions": "",
@@ -292,7 +292,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Pointer",
"id": "8c8e490b-c610-4785-884f-f04217b23ca4",
"path": "<Pointer>/delta",
"interactions": "",
@@ -303,7 +303,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91",
"path": "<Gamepad>/rightShoulder",
"interactions": "",
@@ -314,7 +314,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "05f6913d-c316-48b2-a6bb-e225f14c7960",
"path": "<Mouse>/leftButton",
"interactions": "",
@@ -325,7 +325,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6",
"path": "<Gamepad>/leftStickPress",
"interactions": "",
@@ -336,7 +336,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "f2e9ba44-c423-42a7-ad56-f20975884794",
"path": "<Keyboard>/leftShift",
"interactions": "",
@@ -347,7 +347,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "eb40bb66-4559-4dfa-9a2f-820438abb426",
"path": "<Keyboard>/space",
"interactions": "",
@@ -358,7 +358,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6",
"path": "<Gamepad>/buttonSouth",
"interactions": "",
@@ -369,7 +369,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "1c04ea5f-b012-41d1-a6f7-02e963b52893",
"path": "<Keyboard>/e",
"interactions": "",
@@ -380,7 +380,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "b3f66d0b-7751-423f-908b-a11c5bd95930",
"path": "<Gamepad>/buttonNorth",
"interactions": "",
@@ -391,7 +391,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "36e52cba-0905-478e-a818-f4bfcb9f3b9a",
"path": "<Keyboard>/c",
"interactions": "",
@@ -402,7 +402,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "a2b3c4d5-e6f7-a8b9-c0d1-e2f3a4b5c6d7",
"path": "<Gamepad>/rightStickPress",
"interactions": "",
@@ -413,7 +413,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e6",
"path": "<Keyboard>/q",
"interactions": "",
@@ -424,7 +424,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "c1d2e3f4-a5b6-c7d8-e9f0-a1b2c3d4e5f6",
"path": "<Gamepad>/buttonEast",
"interactions": "",
@@ -435,7 +435,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "d1e2f3a4-b5c6-d7e8-f9a0-b1c2d3e4f5a6",
"path": "<Keyboard>/alpha1",
"interactions": "",
@@ -446,7 +446,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "e1f2a3b4-c5d6-e7f8-a9b0-c1d2e3f4a5b6",
"path": "<Keyboard>/leftAlt",
"interactions": "",
@@ -457,7 +457,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "f1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6",
"path": "<Gamepad>/rightTrigger",
"interactions": "",
@@ -468,7 +468,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6",
"path": "<Mouse>/rightButton",
"interactions": "",
@@ -479,7 +479,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e7",
"path": "<Gamepad>/leftShoulder",
"interactions": "",
@@ -490,7 +490,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "c1d2e3f4-a5b6-c7d8-e9f0-a1b2c3d4e5f7",
"path": "<Mouse>/rightButton",
"interactions": "",
@@ -501,7 +501,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "d1e2f3a4-b5c6-d7e8-f9a0-b1c2d3e4f5a7",
"path": "<Gamepad>/leftTrigger",
"interactions": "",
@@ -512,7 +512,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "e1f2a3b4-c5d6-e7f8-a9b0-c1d2e3f4a5b7",
"path": "<Keyboard>/r",
"interactions": "",
@@ -523,7 +523,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "f1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c7",
"path": "<Gamepad>/leftShoulder",
"interactions": "",
@@ -534,7 +534,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d7",
"path": "<Keyboard>/tab",
"interactions": "",
@@ -545,7 +545,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e8",
"path": "<Gamepad>/dpad/down",
"interactions": "",
@@ -556,7 +556,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "c1d2e3f4-a5b6-c7d8-e9f0-a1b2c3d4e5f8",
"path": "<Keyboard>/z",
"interactions": "",
@@ -567,7 +567,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "d1e2f3a4-b5c6-d7e8-f9a0-b1c2d3e4f5a8",
"path": "<Gamepad>/dpad/up",
"interactions": "",
@@ -578,7 +578,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "1534dc16-a6aa-499d-9c3a-22b47347b52a",
"path": "<Keyboard>/1",
"interactions": "",
@@ -589,7 +589,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "25060bbd-a3a6-476e-8fba-45ae484aad05",
"path": "<Gamepad>/dpad/left",
"interactions": "",
@@ -600,7 +600,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "cbac6039-9c09-46a1-b5f2-4e5124ccb5ed",
"path": "<Keyboard>/2",
"interactions": "",
@@ -611,7 +611,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "e15ca19d-e649-4852-97d5-7fe8ccc44e94",
"path": "<Gamepad>/dpad/right",
"interactions": "",
@@ -622,7 +622,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "530195d8-9983-48c9-b5cf-305ee78dd292",
"path": "<Mouse>/scroll",
"interactions": "",
@@ -633,9 +633,9 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Keyboard",
"id": "f365517f-5a04-4d18-afa0-369ab80e0c54",
"path": "<Keyboard>/f2",
"path": "<Keyboard>/f1",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
@@ -644,8 +644,8 @@
"isPartOfComposite": false
},
{
"name": "",
"id": "f1g2h3i4-j5k6-l7m8-n9o0-p1q2r3s4t5u6",
"name": "Mouse",
"id": "8d4f7e2a-1b6c-4903-a5d2-f8c9b1e0a3d6",
"path": "<Mouse>/middleButton",
"interactions": "",
"processors": "",
@@ -655,7 +655,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Gamepad",
"id": "048282c5-5a5b-4ab2-9777-a20889af4532",
"path": "<Gamepad>/rightStickPress",
"interactions": "",
@@ -881,7 +881,7 @@
"isPartOfComposite": true
},
{
"name": "",
"name": "Gamepad",
"id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90",
"path": "<Gamepad>/dpad",
"interactions": "",
@@ -1046,7 +1046,7 @@
"isPartOfComposite": true
},
{
"name": "",
"name": "Submit",
"id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc",
"path": "*/{Submit}",
"interactions": "",
@@ -1057,7 +1057,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Cancel",
"id": "82627dcc-3b13-4ba9-841d-e4b746d6553e",
"path": "*/{Cancel}",
"interactions": "",
@@ -1068,7 +1068,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86",
"path": "<Mouse>/position",
"interactions": "",
@@ -1079,7 +1079,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Pen",
"id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7",
"path": "<Pen>/position",
"interactions": "",
@@ -1090,7 +1090,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Touch",
"id": "5693e57a-238a-46ed-b5ae-e64e6e574302",
"path": "<Touchscreen>/touch*/position",
"interactions": "",
@@ -1101,7 +1101,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5",
"path": "<Mouse>/leftButton",
"interactions": "",
@@ -1112,7 +1112,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Pen",
"id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace",
"path": "<Pen>/tip",
"interactions": "",
@@ -1123,7 +1123,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Touch",
"id": "47c2a644-3ebc-4dae-a106-589b7ca75b59",
"path": "<Touchscreen>/touch*/press",
"interactions": "",
@@ -1134,7 +1134,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "XR",
"id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677",
"path": "<XRController>/trigger",
"interactions": "",
@@ -1145,7 +1145,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "38c99815-14ea-4617-8627-164d27641299",
"path": "<Mouse>/scroll",
"interactions": "",
@@ -1156,7 +1156,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "4c191405-5738-4d4b-a523-c6a301dbf754",
"path": "<Mouse>/rightButton",
"interactions": "",
@@ -1167,7 +1167,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "Mouse",
"id": "24066f69-da47-44f3-a07e-0015fb02eb2e",
"path": "<Mouse>/middleButton",
"interactions": "",
@@ -1178,7 +1178,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "XR",
"id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77",
"path": "<XRController>/devicePosition",
"interactions": "",
@@ -1189,7 +1189,7 @@
"isPartOfComposite": false
},
{
"name": "",
"name": "XR",
"id": "23e01e3a-f935-4948-8d8b-9bcac77714fb",
"path": "<XRController>/deviceRotation",
"interactions": "",
@@ -1233,7 +1233,7 @@
"isPartOfComposite": true
},
{
"name": "",
"name": "Keyboard",
"id": "7b81fba6-40c0-412f-8836-6385914c8a3f",
"path": "<Keyboard>/escape",
"interactions": "",

View File

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 292 B

View File

Before

Width:  |  Height:  |  Size: 324 B

After

Width:  |  Height:  |  Size: 324 B

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -30,6 +30,7 @@ TagManager:
- CoverPoint
- Interactable
- AIAction
- Check
layers:
- Default
- TransparentFX