diff --git a/.idea/.idea.HALLUCINATE/.idea/workspace.xml b/.idea/.idea.HALLUCINATE/.idea/workspace.xml
index b0fea62f..dc27f1de 100644
--- a/.idea/.idea.HALLUCINATE/.idea/workspace.xml
+++ b/.idea/.idea.HALLUCINATE/.idea/workspace.xml
@@ -4,27 +4,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -145,6 +125,7 @@
+
diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab
index 43488f0e..464d70c3 100644
--- a/Assets/Prefabs/Player.prefab
+++ b/Assets/Prefabs/Player.prefab
@@ -374,6 +374,9 @@ MonoBehaviour:
k__BackingField: {fileID: 5600577104145922999}
k__BackingField: {fileID: 9098752589608501196}
k__BackingField: {fileID: 5811177247042239962}
+ speedParamName: Speed
+ velocityXParamName: Velocity X
+ velocityZParamName: Velocity Z
k__BackingField: 5
k__BackingField: 10
k__BackingField: 9
@@ -393,6 +396,9 @@ MonoBehaviour:
k__BackingField:
serializedVersion: 2
m_Bits: 512
+ _NetworkedCameraRotation: {x: 0, y: 0, z: 0, w: 0}
+ _NetworkedMoveInput: {x: 0, y: 0}
+ _NetworkedSpeed: 0
--- !u!114 &3043298118541876184
MonoBehaviour:
m_ObjectHideFlags: 0
diff --git a/Assets/Scove/DEMO FUSION.unity b/Assets/Scove/DEMO FUSION.unity
index 129740ec..8b283778 100644
--- a/Assets/Scove/DEMO FUSION.unity
+++ b/Assets/Scove/DEMO FUSION.unity
@@ -288,10 +288,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 1956301527}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0.5, y: 0.5}
- m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: -910, y: -490}
- m_SizeDelta: {x: 100, y: 100}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &884186907
MonoBehaviour:
@@ -306,7 +306,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
@@ -341,6 +341,7 @@ GameObject:
m_Component:
- component: {fileID: 966137138}
- component: {fileID: 966137137}
+ - component: {fileID: 966137139}
m_Layer: 0
m_Name: NetworkManager
m_TagString: Untagged
@@ -360,6 +361,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 44bfaa339c82069418e72a14479a0212, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::BasicSpawner
+ LobbyManager: {fileID: 966137139}
_playerPrefab:
RawGuidValue: 761bdf2e5c0cff4488527355acb975e5
--- !u!4 &966137138
@@ -377,6 +379,19 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &966137139
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 966137136}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b5aeb4670d7bf41499d3aaf409820260, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::LobbyManager
+ roomListContent: {fileID: 966137138}
--- !u!1 &1016072950
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/Debug/PlayerDebugProvider.cs b/Assets/Scripts/Debug/PlayerDebugProvider.cs
index 547b7941..7238f62f 100644
--- a/Assets/Scripts/Debug/PlayerDebugProvider.cs
+++ b/Assets/Scripts/Debug/PlayerDebugProvider.cs
@@ -20,12 +20,20 @@ namespace OnlyScove.Scripts
public string GroundedStatus => (stateMachine != null && stateMachine.IsGrounded) ? "YES" : "NO";
public float HorizontalSpeed => stateMachine != null ? new Vector3(stateMachine.Controller.velocity.x, 0, stateMachine.Controller.velocity.z).magnitude : 0f;
public float VerticalSpeed => stateMachine != null ? stateMachine.VelocityY : 0f;
- public Vector2 MoveInput => stateMachine != null ? stateMachine.Input.MoveInput : Vector2.zero;
- public bool IsSprinting => stateMachine != null ? stateMachine.Input.IsSprintHeld : false;
+
+ // Sửa lỗi truy cập InputReader từ StateMachine
+ public Vector2 MoveInput => (stateMachine != null && stateMachine.Input != null) ? stateMachine.Input.MoveInput : Vector2.zero;
+ public bool IsSprinting => (stateMachine != null && stateMachine.Input != null) ? stateMachine.Input.IsSprintHeld : false;
+
public string TargetInteractable => stateMachine != null ? (stateMachine.GetInteractable()?.InteractionPrompt ?? "None") : "N/A";
public IInteractable GetActiveInteractable() => stateMachine?.GetInteractable();
- public Vector3 GetInteractionPoint() => stateMachine != null ? stateMachine.Scanner.GetLastInteractionPoint(stateMachine.InteractionRange, stateMachine.InteractionMask) : Vector3.zero;
+
+ public Vector3 GetInteractionPoint()
+ {
+ if (stateMachine == null || stateMachine.Scanner == null) return Vector3.zero;
+ return stateMachine.Scanner.GetLastInteractionPoint(stateMachine.InteractionRange, stateMachine.InteractionMask);
+ }
private Vector3 currentVelocity;
private Transform cameraTransform;
diff --git a/Assets/Scripts/Fusion/BasicSpawner.cs b/Assets/Scripts/Fusion/BasicSpawner.cs
index 9296e8ec..ebf2d098 100644
--- a/Assets/Scripts/Fusion/BasicSpawner.cs
+++ b/Assets/Scripts/Fusion/BasicSpawner.cs
@@ -1,14 +1,17 @@
using System;
using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Linq;
using Fusion;
using Fusion.Sockets;
using UnityEngine;
using UnityEngine.SceneManagement;
+using Random = UnityEngine.Random;
-// ĐỊNH NGHĨA DỮ LIỆU GỬI QUA MẠNG
-public struct NetworkInputData : INetworkInput
+// Struct input đồng bộ giữa Spawner, Movement và StateMachine
+public struct PlayerInputData : INetworkInput
{
- public Vector2 move;
+ public Vector2 Direction;
public Quaternion rot;
public bool sprint;
}
@@ -16,31 +19,107 @@ public struct NetworkInputData : INetworkInput
public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
{
private NetworkRunner _runner;
+ private string _roomName = "Room1";
+ public LobbyManager LobbyManager;
[SerializeField] private NetworkPrefabRef _playerPrefab;
private Dictionary _spawnedCharacters = new Dictionary();
- async void StartGame(GameMode mode)
+ // Thông tin profile local
+ public PlayerProfile LocalPlayerProfile { get; private set; }
+ public void SetLocalPlayerProfile(PlayerProfile profile)
{
- if (_runner != null) return;
- _runner = gameObject.AddComponent();
- _runner.ProvideInput = true;
+ LocalPlayerProfile = profile;
+ }
+
+ private void Awake()
+ {
+ if (_runner == null) _runner = gameObject.AddComponent();
DontDestroyOnLoad(gameObject);
- await _runner.StartGame(new StartGameArgs()
+ }
+
+ // Khởi tạo Game (Host/Client)
+ public async Task StartGame(GameMode mode, string sessionName = "TestRoom")
+ {
+ Debug.Log($"Fusion: Đang khởi tạo kết nối với Mode: {mode} | Phòng: {sessionName}");
+
+ if (_runner == null) _runner = gameObject.AddComponent();
+ _runner.ProvideInput = true;
+
+ var sceneManager = gameObject.GetComponent();
+ if (sceneManager == null) sceneManager = gameObject.AddComponent();
+
+ var result = await _runner.StartGame(new StartGameArgs()
{
GameMode = mode,
- SessionName = "TestRoom",
+ SessionName = sessionName,
Scene = SceneRef.FromIndex(1),
- SceneManager = gameObject.AddComponent()
+ SceneManager = sceneManager
});
+
+ if (result.Ok)
+ {
+ Debug.Log($"Fusion thành công: Đã vào phòng {sessionName}");
+ }
+ else
+ {
+ Debug.LogError($"Fusion thất bại: Lý do: {result.ShutdownReason}");
+ if (_runner != null)
+ {
+ Destroy(_runner);
+ _runner = null;
+ }
+ }
}
private void OnGUI()
{
- if (_runner == null)
+ if (_runner == null || !_runner.IsRunning)
{
- if (GUI.Button(new Rect(10, 10, 200, 40), "Host (Tạo phòng)")) StartGame(GameMode.AutoHostOrClient);
- if (GUI.Button(new Rect(10, 60, 200, 40), "Join (Vào phòng)")) StartGame(GameMode.Client);
+ float width = 400;
+ float height = 300;
+ float x = (Screen.width - width) / 2f;
+ float y = (Screen.height - height) / 2f;
+
+ GUI.Box(new Rect(x, y, width, height), "FUSION MULTIPLAYER");
+
+ float innerX = x + 20;
+ float innerY = y + 40;
+ float contentWidth = width - 40;
+
+ GUI.Label(new Rect(innerX, innerY, 100, 30), "Tên phòng:");
+ _roomName = GUI.TextField(new Rect(innerX + 100, innerY, contentWidth - 100, 30), _roomName);
+
+ if (GUI.Button(new Rect(innerX, innerY + 50, contentWidth, 60), "VÀO PHÒNG\n(Tự động Host/Client)"))
+ {
+ _ = StartGame(GameMode.AutoHostOrClient, _roomName);
+ }
+
+ if (GUI.Button(new Rect(innerX, innerY + 120, (contentWidth / 2) - 5, 50), "Tạo phòng\n(Host)"))
+ {
+ _ = StartGame(GameMode.Host, _roomName);
+ }
+
+ if (GUI.Button(new Rect(innerX + (contentWidth / 2) + 5, innerY + 120, (contentWidth / 2) - 5, 50), "Tham gia\n(Client)"))
+ {
+ _ = StartGame(GameMode.Client, _roomName);
+ }
+
+ GUI.Label(new Rect(innerX, innerY + 180, contentWidth, 50), "Gợi ý: Nhập cùng tên phòng để chơi chung.\nNếu phòng chưa có, máy sẽ tự tạo mới.");
+ }
+ else
+ {
+ string region = (_runner.SessionInfo != null && _runner.SessionInfo.IsValid) ? _runner.SessionInfo.Region : "Connecting...";
+ int playerCount = 0;
+ foreach (var p in _runner.ActivePlayers) playerCount++;
+
+ string info = $"Mode: {_runner.GameMode} | Region: {region} | Players: {playerCount}";
+ GUI.Box(new Rect(10, 10, 400, 30), info);
+
+ if (GUI.Button(new Rect(10, 50, 100, 30), "Thoát"))
+ {
+ _runner.Shutdown();
+ }
}
}
@@ -48,34 +127,15 @@ public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
{
if (runner.IsServer)
{
- Vector3 spawnPosition = new Vector3((player.RawEncoded % 10) * 2, 1, 0);
- NetworkObject networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
+ Vector3 spawnPosition = new Vector3(Random.Range(-10f, 10f), 2f, Random.Range(-10f, 10f));
+ spawnPosition += new Vector3(player.RawEncoded % 3, 0, player.RawEncoded % 3);
+
+ var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
runner.SetPlayerObject(player, networkPlayerObject);
_spawnedCharacters.Add(player, networkPlayerObject);
}
}
- public void OnInput(NetworkRunner runner, NetworkInput input)
- {
- var data = new NetworkInputData();
-
- // Lấy dữ liệu từ nhân vật local của chính mình
- if (OnlyScove.Scripts.PlayerStateMachine.Local != null)
- {
- var sm = OnlyScove.Scripts.PlayerStateMachine.Local;
- data.move = sm.Input.MoveInput;
- data.sprint = sm.Input.IsSprintHeld;
-
- // Lấy hướng xoay từ Camera (nếu có)
- if (sm.Cam != null)
- data.rot = sm.Cam.PlanarRotation;
- else
- data.rot = sm.NetworkedCameraRotation; // Fallback
- }
-
- input.Set(data);
- }
-
public void OnPlayerLeft(NetworkRunner runner, PlayerRef player)
{
if (_spawnedCharacters.TryGetValue(player, out NetworkObject networkObject))
@@ -85,6 +145,29 @@ public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
}
}
+ public void OnInput(NetworkRunner runner, NetworkInput input)
+ {
+ var data = new PlayerInputData();
+
+ // ĐỌC TRỰC TIẾP: Không dùng Buffer để tránh bị trôi phím
+ data.Direction = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
+ data.sprint = Input.GetKey(KeyCode.LeftShift);
+
+ if (OnlyScove.Scripts.PlayerStateMachine.Local != null)
+ {
+ var sm = OnlyScove.Scripts.PlayerStateMachine.Local;
+ if (sm.Cam != null) data.rot = sm.Cam.PlanarRotation;
+ else data.rot = sm.NetworkedCameraRotation;
+ }
+
+ input.Set(data);
+ }
+
+ public void OnSessionListUpdated(NetworkRunner runner, List sessionList)
+ {
+ if (LobbyManager != null) LobbyManager.DisplayRoomList(sessionList);
+ }
+
public void OnInputMissing(NetworkRunner runner, PlayerRef player, NetworkInput input) { }
public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason) { }
public void OnConnectedToServer(NetworkRunner runner) { }
@@ -92,7 +175,6 @@ public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
public void OnConnectRequest(NetworkRunner runner, NetworkRunnerCallbackArgs.ConnectRequest request, byte[] token) { }
public void OnConnectFailed(NetworkRunner runner, NetAddress remoteAddress, NetConnectFailedReason reason) { }
public void OnUserSimulationMessage(NetworkRunner runner, SimulationMessagePtr message) { }
- public void OnSessionListUpdated(NetworkRunner runner, List sessionList) { }
public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary data) { }
public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken) { }
public void OnSceneLoadDone(NetworkRunner runner) { }
@@ -101,4 +183,4 @@ public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
public void OnObjectEnterAOI(NetworkRunner runner, NetworkObject obj, PlayerRef player) { }
public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ReliableKey key, ArraySegment data) { }
public void OnReliableDataProgress(NetworkRunner runner, PlayerRef player, ReliableKey key, float progress) { }
-}
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Fusion/LobbyHelper.cs b/Assets/Scripts/Fusion/LobbyHelper.cs
new file mode 100644
index 00000000..e129507a
--- /dev/null
+++ b/Assets/Scripts/Fusion/LobbyHelper.cs
@@ -0,0 +1 @@
+// File này hiện tại không còn nội dung, có thể xóa đi hoặc để trống.
diff --git a/Assets/Scripts/Fusion/LobbyHelper.cs.meta b/Assets/Scripts/Fusion/LobbyHelper.cs.meta
new file mode 100644
index 00000000..ce238440
--- /dev/null
+++ b/Assets/Scripts/Fusion/LobbyHelper.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 2bf2c7f159565794b87d6f3ca2eb2976
\ No newline at end of file
diff --git a/Assets/Scripts/Fusion/LobbyManager.cs b/Assets/Scripts/Fusion/LobbyManager.cs
new file mode 100644
index 00000000..996e94ec
--- /dev/null
+++ b/Assets/Scripts/Fusion/LobbyManager.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using Fusion;
+using UnityEngine;
+
+public class LobbyManager : MonoBehaviour
+{
+ [Header("UI References")]
+ public Transform roomListContent; // Ô chứa danh sách phòng (nếu có)
+
+ public void DisplayRoomList(List sessionList)
+ {
+ Debug.Log($"Lobby Update: Đang tìm thấy {sessionList.Count} phòng.");
+
+ // Xóa danh sách cũ (nếu bạn làm UI)
+ /*
+ foreach (Transform child in roomListContent) {
+ Destroy(child.gameObject);
+ }
+ */
+
+ // Hiển thị danh sách mới
+ foreach (var session in sessionList)
+ {
+ Debug.Log($"- Phòng: {session.Name} | Người chơi: {session.PlayerCount}/{session.MaxPlayers}");
+ // Ở đây bạn sẽ Instantiate các Button đại diện cho mỗi phòng
+ }
+ }
+}
diff --git a/Assets/Scripts/Fusion/LobbyManager.cs.meta b/Assets/Scripts/Fusion/LobbyManager.cs.meta
new file mode 100644
index 00000000..a269a8c8
--- /dev/null
+++ b/Assets/Scripts/Fusion/LobbyManager.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: b5aeb4670d7bf41499d3aaf409820260
\ No newline at end of file
diff --git a/Assets/Scripts/Fusion/PlayerProfile.cs b/Assets/Scripts/Fusion/PlayerProfile.cs
new file mode 100644
index 00000000..14fb3da9
--- /dev/null
+++ b/Assets/Scripts/Fusion/PlayerProfile.cs
@@ -0,0 +1,17 @@
+using UnityEngine;
+
+// Enum các loại nhân vật
+public enum CharacterClass
+{
+ Warrior,
+ Mage,
+ Archer
+}
+
+// Lớp quản lý thông tin nhân vật local
+[System.Serializable]
+public class PlayerProfile
+{
+ public string Name = "Player";
+ public CharacterClass Class = CharacterClass.Warrior;
+}
diff --git a/Assets/Scripts/Fusion/PlayerProfile.cs.meta b/Assets/Scripts/Fusion/PlayerProfile.cs.meta
new file mode 100644
index 00000000..2b9acb62
--- /dev/null
+++ b/Assets/Scripts/Fusion/PlayerProfile.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 8a1452ae101af8e43b94c2c778a70fe0
\ No newline at end of file
diff --git a/Assets/Scripts/Player Controller/PlayerAirDashState.cs b/Assets/Scripts/Player Controller/PlayerAirDashState.cs
index 261fb982..afebed27 100644
--- a/Assets/Scripts/Player Controller/PlayerAirDashState.cs
+++ b/Assets/Scripts/Player Controller/PlayerAirDashState.cs
@@ -1,11 +1,10 @@
-using UnityEngine;
+using UnityEngine;
namespace OnlyScove.Scripts
{
public class PlayerAirDashState : PlayerBaseState
{
- private readonly int airDashHash = Animator.StringToHash("AirDash");
- private float dashDuration = 0.2f;
+ private float dashDuration = 0.3f;
private float dashTimer;
private Vector3 dashDirection;
@@ -14,39 +13,31 @@ namespace OnlyScove.Scripts
public override void Enter()
{
dashTimer = dashDuration;
- stateMachine.Anim.SetTrigger(airDashHash);
+ stateMachine.Anim.SetTrigger("Dash");
- // Reset vertical velocity so we don't carry falling momentum into the dash
- stateMachine.VelocityY = 0f;
-
- // Determine dash direction
- Vector2 input = stateMachine.Input.MoveInput;
+ // ĐÚNG: Sử dụng MoveInput đã đồng bộ
+ Vector2 input = stateMachine.MoveInput;
if (input != Vector2.zero)
{
- dashDirection = new Vector3(input.x, 0f, input.y).normalized;
-
- if (stateMachine.Cam != null)
- {
- dashDirection = stateMachine.Cam.PlanarRotation * dashDirection;
- }
-
- stateMachine.transform.rotation = Quaternion.LookRotation(dashDirection);
+ dashDirection = new Vector3(input.x, 0, input.y).normalized;
+ dashDirection = stateMachine.NetworkedCameraRotation * dashDirection;
}
else
{
dashDirection = stateMachine.transform.forward;
}
+ dashDirection.y = 0;
+ dashDirection.Normalize();
}
public override void Tick(float deltaTime)
{
dashTimer -= deltaTime;
- // Move horizontally, ignoring gravity for this brief moment
- stateMachine.Controller.Move(dashDirection * stateMachine.DashForce * deltaTime);
+ // Sử dụng hàm Move tập trung
+ stateMachine.Move(dashDirection * stateMachine.DashForce, 1.0f, deltaTime);
- // When the air dash ends, return to falling
- if (dashTimer <= 0f)
+ if (dashTimer <= 0)
{
stateMachine.SwitchState(new PlayerFallState(stateMachine));
}
diff --git a/Assets/Scripts/Player Controller/PlayerDashState.cs b/Assets/Scripts/Player Controller/PlayerDashState.cs
index 03891e85..7315a190 100644
--- a/Assets/Scripts/Player Controller/PlayerDashState.cs
+++ b/Assets/Scripts/Player Controller/PlayerDashState.cs
@@ -20,16 +20,14 @@ namespace OnlyScove.Scripts
stateMachine.Input.OnJumpEvent += OnJump;
- // Determine dash direction based on input, or default to forward if no input
- Vector2 input = stateMachine.Input.MoveInput;
+ // ĐÚNG: Sử dụng MoveInput đã đồng bộ mạng (Quan trọng để Client không bị phụ thuộc vào phím của Host)
+ Vector2 input = stateMachine.MoveInput;
if (input != Vector2.zero)
{
dashDirection = new Vector3(input.x, 0f, input.y).normalized;
-
- if (stateMachine.Cam != null)
- {
- dashDirection = stateMachine.Cam.PlanarRotation * dashDirection;
- }
+ dashDirection = stateMachine.NetworkedCameraRotation * dashDirection;
+ dashDirection.y = 0;
+ dashDirection.Normalize();
// Instantly snap rotation to face the dash direction
stateMachine.transform.rotation = Quaternion.LookRotation(dashDirection);
@@ -45,17 +43,18 @@ namespace OnlyScove.Scripts
dashTimer -= deltaTime;
// Apply high speed for the dash (Burst speed)
- stateMachine.Controller.Move(dashDirection * stateMachine.SprintSpeed * deltaTime);
+ // Sử dụng Move tập trung để đồng bộ mạng
+ stateMachine.Move(dashDirection * stateMachine.SprintSpeed, 1.0f, deltaTime);
// When the dash finishes, decide the next state
if (dashTimer <= 0f)
{
- if (stateMachine.Input.IsSprintHeld && stateMachine.Input.MoveInput != Vector2.zero)
+ if (stateMachine.IsSprintHeld && stateMachine.MoveInput != Vector2.zero)
{
// Kept holding Shift -> Go to Sprint
stateMachine.SwitchState(new PlayerRunState(stateMachine));
}
- else if (stateMachine.Input.MoveInput != Vector2.zero)
+ else if (stateMachine.MoveInput != Vector2.zero)
{
// Released Shift but still moving -> Go to Walk
stateMachine.SwitchState(new PlayerMoveState(stateMachine));
diff --git a/Assets/Scripts/Player Controller/PlayerDodgeState.cs b/Assets/Scripts/Player Controller/PlayerDodgeState.cs
index 1a1adc18..c673a942 100644
--- a/Assets/Scripts/Player Controller/PlayerDodgeState.cs
+++ b/Assets/Scripts/Player Controller/PlayerDodgeState.cs
@@ -1,11 +1,11 @@
-using UnityEngine;
+using UnityEngine;
namespace OnlyScove.Scripts
{
public class PlayerDodgeState : PlayerBaseState
{
private readonly int dodgeHash = Animator.StringToHash("Dodge");
- private float dodgeDuration = 0.4f; // Adjust based on your dodge animation length
+ private float dodgeDuration = 0.5f;
private float dodgeTimer;
private Vector3 dodgeDirection;
@@ -16,46 +16,32 @@ namespace OnlyScove.Scripts
dodgeTimer = dodgeDuration;
stateMachine.Anim.SetTrigger(dodgeHash);
- // Calculate dodge direction based on current input
- Vector2 input = stateMachine.Input.MoveInput;
+ Vector2 input = stateMachine.MoveInput;
if (input != Vector2.zero)
{
- // Dodge in the input direction (Left, Right, Back, Forward)
- dodgeDirection = new Vector3(input.x, 0f, input.y).normalized;
-
- if (stateMachine.Cam != null)
- {
- dodgeDirection = stateMachine.Cam.PlanarRotation * dodgeDirection;
- }
-
- // Instantly rotate the player to face the dodge direction
- stateMachine.transform.rotation = Quaternion.LookRotation(dodgeDirection);
+ dodgeDirection = new Vector3(input.x, 0, input.y).normalized;
+ dodgeDirection = stateMachine.NetworkedCameraRotation * dodgeDirection;
}
else
{
- // If no input, just roll straight forward
- dodgeDirection = stateMachine.transform.forward;
+ dodgeDirection = -stateMachine.transform.forward;
}
+ dodgeDirection.y = 0;
+ dodgeDirection.Normalize();
+
+ stateMachine.transform.rotation = Quaternion.LookRotation(dodgeDirection);
}
public override void Tick(float deltaTime)
{
dodgeTimer -= deltaTime;
- // Apply movement force for the dodge (usually slightly slower than a Dash)
- stateMachine.Controller.Move(dodgeDirection * (stateMachine.DashForce * 0.8f) * deltaTime);
+ // Sử dụng hàm Move tập trung
+ stateMachine.Move(dodgeDirection * (stateMachine.DashForce * 0.8f), 1.0f, deltaTime);
- // Once the roll finishes, transition back to Idle or Move
- if (dodgeTimer <= 0f)
+ if (dodgeTimer <= 0)
{
- if (stateMachine.Input.MoveInput != Vector2.zero)
- {
- stateMachine.SwitchState(new PlayerMoveState(stateMachine));
- }
- else
- {
- stateMachine.SwitchState(new PlayerIdleState(stateMachine));
- }
+ stateMachine.SwitchState(new PlayerIdleState(stateMachine));
}
}
diff --git a/Assets/Scripts/Player Controller/PlayerFallState.cs b/Assets/Scripts/Player Controller/PlayerFallState.cs
index ca842684..2646549b 100644
--- a/Assets/Scripts/Player Controller/PlayerFallState.cs
+++ b/Assets/Scripts/Player Controller/PlayerFallState.cs
@@ -32,36 +32,25 @@ namespace OnlyScove.Scripts
public override void Tick(float deltaTime)
{
- stateMachine.VelocityY += Physics.gravity.y * deltaTime;
+ stateMachine.VelocityY += stateMachine.Gravity * deltaTime;
- Vector2 input = stateMachine.Input.MoveInput;
+ // ĐÚNG: Sử dụng MoveInput đã đồng bộ mạng
+ Vector2 input = stateMachine.MoveInput;
Vector3 inputDir = new Vector3(input.x, 0, input.y).normalized;
- Vector3 moveDirection = stateMachine.Cam != null ? stateMachine.Cam.PlanarRotation * inputDir : inputDir;
+ Vector3 moveDirection = stateMachine.NetworkedCameraRotation * inputDir;
+ moveDirection.y = 0;
+ moveDirection.Normalize();
Vector3 velocity = moveDirection * fallSpeed;
velocity.y = stateMachine.VelocityY;
- stateMachine.Controller.Move(velocity * deltaTime);
-
- // Cập nhật Animator cho việc rơi trên không
- float multiplier = stateMachine.Input.IsSprintHeld ? 2f : 0.5f;
- stateMachine.Anim.SetFloat(speedHash, stateMachine.Input.IsSprintHeld ? 1f : 0.7f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedXHash, input.x * multiplier, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedZHash, input.y * multiplier, stateMachine.AnimationDamping, deltaTime);
-
- if (moveDirection != Vector3.zero)
- {
- Quaternion targetRot = Quaternion.LookRotation(moveDirection);
- stateMachine.transform.rotation = Quaternion.RotateTowards(
- stateMachine.transform.rotation,
- targetRot,
- stateMachine.RotationSpeed * deltaTime
- );
- }
+ // Sử dụng hàm Move tập trung của StateMachine để đồng bộ
+ stateMachine.Move(velocity, 0.5f, deltaTime);
+ stateMachine.Rotate(moveDirection, deltaTime);
if (stateMachine.IsGrounded)
{
- // Landing Shake from PlayerController.cs
+ // Landing Shake
if (!stateMachine.WasGrounded && stateMachine.VelocityY < -1f)
{
if (stateMachine.Cam != null)
@@ -76,8 +65,7 @@ namespace OnlyScove.Scripts
stateMachine.SwitchState(new PlayerIdleState(stateMachine));
else
{
- // Return to the appropriate movement state based on sprint input
- if (stateMachine.Input.IsSprintHeld)
+ if (stateMachine.IsSprintHeld)
stateMachine.SwitchState(new PlayerRunState(stateMachine));
else
stateMachine.SwitchState(new PlayerMoveState(stateMachine));
diff --git a/Assets/Scripts/Player Controller/PlayerIdleState.cs b/Assets/Scripts/Player Controller/PlayerIdleState.cs
index 3b7e7acf..45fdba93 100644
--- a/Assets/Scripts/Player Controller/PlayerIdleState.cs
+++ b/Assets/Scripts/Player Controller/PlayerIdleState.cs
@@ -10,8 +10,9 @@ namespace OnlyScove.Scripts
public override void Enter()
{
- stateMachine.Anim.ResetTrigger("Jump");
- stateMachine.Anim.ResetTrigger("Fall");
+ // Tạm thời bỏ ResetTrigger nếu chúng không tồn tại trong Animator của bạn
+ // stateMachine.Anim.ResetTrigger("Jump");
+ // stateMachine.Anim.ResetTrigger("Fall");
stateMachine.Input.OnJumpEvent += OnJump;
stateMachine.Input.OnDodgeEvent += OnDodge;
@@ -23,26 +24,25 @@ namespace OnlyScove.Scripts
public override void Tick(float deltaTime)
{
- stateMachine.Anim.SetFloat(speedHash, 0f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedXHash, 0f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedZHash, 0f, stateMachine.AnimationDamping, deltaTime);
-
- if (stateMachine.Input.MoveInput != Vector2.zero)
- {
- stateMachine.SwitchState(new PlayerMoveState(stateMachine));
- return;
- }
-
+ // Cập nhật trọng lực
if (stateMachine.IsGrounded && stateMachine.VelocityY < 0)
{
stateMachine.VelocityY = -2f;
}
else
{
- stateMachine.VelocityY += Physics.gravity.y * deltaTime;
+ stateMachine.VelocityY += stateMachine.Gravity * deltaTime;
+ }
+
+ // Sử dụng hàm Move tập trung để đồng bộ Animator và Vị trí
+ stateMachine.Move(new Vector3(0, stateMachine.VelocityY, 0), 0f, deltaTime);
+
+ // QUAN TRỌNG: Đọc dữ liệu đã đồng bộ từ mạng (stateMachine.MoveInput)
+ if (stateMachine.MoveInput != Vector2.zero)
+ {
+ stateMachine.SwitchState(new PlayerMoveState(stateMachine));
+ return;
}
-
- stateMachine.Controller.Move(new Vector3(0, stateMachine.VelocityY, 0) * deltaTime);
}
public override void PhysicsTick(float fixedDeltaTime) {}
diff --git a/Assets/Scripts/Player Controller/PlayerJumpState.cs b/Assets/Scripts/Player Controller/PlayerJumpState.cs
index 0abe819d..268bb046 100644
--- a/Assets/Scripts/Player Controller/PlayerJumpState.cs
+++ b/Assets/Scripts/Player Controller/PlayerJumpState.cs
@@ -25,51 +25,34 @@ namespace OnlyScove.Scripts
public override void Enter()
{
- // Set initial velocity for the Jump Blend Tree (2D Freeform)
- Vector2 input = stateMachine.Input.MoveInput;
- stateMachine.Anim.SetFloat(speedXHash, input.x);
- stateMachine.Anim.SetFloat(speedZHash, input.y);
-
- // Set Speed parameter to help distinguish between Idle Jump (0) and Run Jump (0.7+)
- float moveAmount = input.magnitude;
- stateMachine.Anim.SetFloat(speedHash, moveAmount > 0.1f ? 1.0f : 0f);
-
+ // Sử dụng dữ liệu đồng bộ
+ Vector2 input = stateMachine.MoveInput;
+
stateMachine.Anim.ResetTrigger(jumpHash);
stateMachine.Anim.SetTrigger(jumpHash);
// Physic formula: v = sqrt(h * -2 * g)
- stateMachine.VelocityY = Mathf.Sqrt(stateMachine.JumpHeight * -2f * Physics.gravity.y);
+ stateMachine.VelocityY = Mathf.Sqrt(stateMachine.JumpHeight * -2f * stateMachine.Gravity);
stateMachine.Input.OnSprintEvent += OnAirDash;
}
public override void Tick(float deltaTime)
{
- stateMachine.VelocityY += Physics.gravity.y * deltaTime;
+ stateMachine.VelocityY += stateMachine.Gravity * deltaTime;
- Vector2 input = stateMachine.Input.MoveInput;
+ Vector2 input = stateMachine.MoveInput;
Vector3 inputDir = new Vector3(input.x, 0, input.y).normalized;
- Vector3 moveDirection = stateMachine.Cam != null ? stateMachine.Cam.PlanarRotation * inputDir : inputDir;
+ Vector3 moveDirection = stateMachine.NetworkedCameraRotation * inputDir;
+ moveDirection.y = 0;
+ moveDirection.Normalize();
Vector3 velocity = moveDirection * jumpSpeed;
velocity.y = stateMachine.VelocityY;
- stateMachine.Controller.Move(velocity * deltaTime);
-
- // Cập nhật Animator cho việc di chuyển trên không (Blend Tree sẽ tự mượt mà theo các giá trị này)
- float multiplier = stateMachine.Input.IsSprintHeld ? 1f : 0.5f;
- stateMachine.Anim.SetFloat(speedXHash, input.x * multiplier, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedZHash, input.y * multiplier, stateMachine.AnimationDamping, deltaTime);
-
- if (moveDirection != Vector3.zero)
- {
- Quaternion targetRot = Quaternion.LookRotation(moveDirection);
- stateMachine.transform.rotation = Quaternion.RotateTowards(
- stateMachine.transform.rotation,
- targetRot,
- stateMachine.RotationSpeed * deltaTime
- );
- }
+ // Đồng bộ di chuyển và xoay
+ stateMachine.Move(velocity, 1.0f, deltaTime);
+ stateMachine.Rotate(moveDirection, deltaTime);
if (stateMachine.VelocityY <= 0f)
{
diff --git a/Assets/Scripts/Player Controller/PlayerMoveState.cs b/Assets/Scripts/Player Controller/PlayerMoveState.cs
index 38024e87..bd9dddec 100644
--- a/Assets/Scripts/Player Controller/PlayerMoveState.cs
+++ b/Assets/Scripts/Player Controller/PlayerMoveState.cs
@@ -20,7 +20,8 @@ namespace OnlyScove.Scripts
public override void Tick(float deltaTime)
{
- Vector2 input = stateMachine.Input.MoveInput;
+ // QUAN TRỌNG: Đọc trực tiếp từ stateMachine (Dữ liệu đã đồng bộ mạng)
+ Vector2 input = stateMachine.MoveInput;
float moveAmount = Mathf.Clamp01(Mathf.Abs(input.x) + Mathf.Abs(input.y));
if (moveAmount <= 0.01f)
@@ -29,25 +30,17 @@ namespace OnlyScove.Scripts
return;
}
- if (stateMachine.Input.IsSprintHeld)
+ if (stateMachine.IsSprintHeld)
{
stateMachine.SwitchState(new PlayerDashState(stateMachine));
return;
}
Vector3 inputDir = new Vector3(input.x, 0, input.y).normalized;
-
- // DÙNG HƯỚNG CAMERA TỪ MẠNG ĐỂ ĐỒNG BỘ MÁY CHỦ
Vector3 moveDirection = stateMachine.NetworkedCameraRotation * inputDir;
- moveDirection.y = 0; // Đảm bảo không bay lên trời
+ moveDirection.y = 0;
moveDirection.Normalize();
- if (stateMachine.Cam != null && stateMachine.Object.HasInputAuthority)
- {
- // Log chỉ hiện ở máy khách để debug hướng xoay
- // Debug.Log($"[Move] Input: {inputDir}, MoveDir: {moveDirection}");
- }
-
Vector3 velocity = moveDirection * stateMachine.WalkSpeed;
if (stateMachine.IsGrounded && stateMachine.VelocityY < 0)
@@ -56,25 +49,13 @@ namespace OnlyScove.Scripts
}
else
{
- stateMachine.VelocityY += Physics.gravity.y * deltaTime;
+ stateMachine.VelocityY += stateMachine.Gravity * deltaTime;
}
velocity.y = stateMachine.VelocityY;
- stateMachine.Controller.Move(velocity * deltaTime);
-
- if (moveDirection != Vector3.zero)
- {
- Quaternion targetRot = Quaternion.LookRotation(moveDirection);
- stateMachine.transform.rotation = Quaternion.RotateTowards(
- stateMachine.transform.rotation,
- targetRot,
- stateMachine.RotationSpeed * deltaTime
- );
- }
-
- stateMachine.Anim.SetFloat(speedHash, 0.7f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedXHash, input.x * 0.5f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedZHash, input.y * 0.5f, stateMachine.AnimationDamping, deltaTime);
+ // Sử dụng hàm Move tập trung (0.7f là giá trị Speed cho Animator khi đi bộ)
+ stateMachine.Move(velocity, 0.7f, deltaTime);
+ stateMachine.Rotate(moveDirection, deltaTime);
}
public override void PhysicsTick(float fixedDeltaTime) {}
diff --git a/Assets/Scripts/Player Controller/PlayerParkourState.cs b/Assets/Scripts/Player Controller/PlayerParkourState.cs
index 6e7b8a42..c6eb2979 100644
--- a/Assets/Scripts/Player Controller/PlayerParkourState.cs
+++ b/Assets/Scripts/Player Controller/PlayerParkourState.cs
@@ -12,12 +12,13 @@ namespace OnlyScove.Scripts
public override void Enter()
{
- // Play the Parkour animation (Step Up)
- stateMachine.Anim.CrossFadeInFixedTime(parkourHash, 0.1f);
+ if (stateMachine.Anim != null && stateMachine.Anim.layerCount > 0)
+ {
+ // Play the Parkour animation (Step Up)
+ // Use the overload with layer index 0 to be explicit
+ stateMachine.Anim.CrossFadeInFixedTime(parkourHash, 0.1f, 0);
+ }
- // We'll wait for the animation to finish.
- // In a real project, you might get the exact duration from the Animator.
- // For now, we'll assume a fixed duration or check state.
timer = 0f;
}
diff --git a/Assets/Scripts/Player Controller/PlayerRunState.cs b/Assets/Scripts/Player Controller/PlayerRunState.cs
index 9b8b1dd6..234dedf7 100644
--- a/Assets/Scripts/Player Controller/PlayerRunState.cs
+++ b/Assets/Scripts/Player Controller/PlayerRunState.cs
@@ -19,7 +19,8 @@ namespace OnlyScove.Scripts
public override void Tick(float deltaTime)
{
- Vector2 input = stateMachine.Input.MoveInput;
+ // ĐÚNG: Sử dụng dữ liệu đã đồng bộ qua mạng
+ Vector2 input = stateMachine.MoveInput;
float moveAmount = Mathf.Clamp01(Mathf.Abs(input.x) + Mathf.Abs(input.y));
if (moveAmount <= 0.01f)
@@ -28,14 +29,16 @@ namespace OnlyScove.Scripts
return;
}
- if (!stateMachine.Input.IsSprintHeld)
+ if (!stateMachine.IsSprintHeld)
{
stateMachine.SwitchState(new PlayerMoveState(stateMachine));
return;
}
Vector3 inputDir = new Vector3(input.x, 0, input.y).normalized;
- Vector3 moveDirection = stateMachine.Cam != null ? stateMachine.Cam.PlanarRotation * inputDir : inputDir;
+ Vector3 moveDirection = stateMachine.NetworkedCameraRotation * inputDir;
+ moveDirection.y = 0;
+ moveDirection.Normalize();
Vector3 velocity = moveDirection * stateMachine.SprintSpeed;
@@ -45,25 +48,13 @@ namespace OnlyScove.Scripts
}
else
{
- stateMachine.VelocityY += Physics.gravity.y * deltaTime;
+ stateMachine.VelocityY += stateMachine.Gravity * deltaTime;
}
velocity.y = stateMachine.VelocityY;
- stateMachine.Controller.Move(velocity * deltaTime);
-
- if (moveDirection != Vector3.zero)
- {
- Quaternion targetRot = Quaternion.LookRotation(moveDirection);
- stateMachine.transform.rotation = Quaternion.RotateTowards(
- stateMachine.transform.rotation,
- targetRot,
- stateMachine.RotationSpeed * deltaTime
- );
- }
-
- stateMachine.Anim.SetFloat(speedHash, 1f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedXHash, input.x * 2f, stateMachine.AnimationDamping, deltaTime);
- stateMachine.Anim.SetFloat(speedZHash, input.y * 2f, stateMachine.AnimationDamping, deltaTime);
+ // Sử dụng hàm Move tập trung (1.0f là giá trị Speed cho Animator khi chạy)
+ stateMachine.Move(velocity, 1.0f, deltaTime);
+ stateMachine.Rotate(moveDirection, deltaTime);
}
public override void PhysicsTick(float fixedDeltaTime) {}
diff --git a/Assets/Scripts/Player Controller/PlayerStateMachine.cs b/Assets/Scripts/Player Controller/PlayerStateMachine.cs
index 0694a900..715a5b7b 100644
--- a/Assets/Scripts/Player Controller/PlayerStateMachine.cs
+++ b/Assets/Scripts/Player Controller/PlayerStateMachine.cs
@@ -14,10 +14,19 @@ namespace OnlyScove.Scripts
[field: SerializeField] public EnvironmentScanner Scanner { get; private set; }
public CameraController Cam { get; private set; }
+ [field: Header("Animator Settings")]
+ [SerializeField] private string speedParamName = "Speed";
+ [SerializeField] private string velocityXParamName = "Velocity X";
+ [SerializeField] private string velocityZParamName = "Velocity Z";
+
+ private int speedHash;
+ private int velocityXHash;
+ private int velocityZHash;
+
[field: Header("Movement Settings")]
[field: SerializeField] public float WalkSpeed { get; private set; } = 3f;
[field: SerializeField] public float RunSpeed { get; private set; } = 6f;
- [field: SerializeField] public float SprintSpeed { get; private set; } = 9f; // 150% of RunSpeed
+ [field: SerializeField] public float SprintSpeed { get; private set; } = 9f;
[field: SerializeField] public float SneakSpeed { get; private set; } = 1.5f;
[field: SerializeField] public float DashForce { get; private set; } = 10f;
[field: SerializeField] public float RotationSpeed { get; private set; } = 500f;
@@ -25,7 +34,7 @@ namespace OnlyScove.Scripts
[field: Header("Airborne Settings")]
[field: SerializeField] public float JumpHeight { get; private set; } = 2f;
- [field: SerializeField] public float Gravity { get; private set; } = -9.81f;
+ [field: SerializeField] public float Gravity { get; private set; } = -15f;
[field: SerializeField] public float ThrustDownwardForce { get; private set; } = -20f;
[field: Header("Ground Check")]
@@ -38,7 +47,12 @@ namespace OnlyScove.Scripts
[field: SerializeField] public LayerMask InteractionMask { get; private set; }
[Networked] public Quaternion NetworkedCameraRotation { get; set; }
+ [Networked] public Vector2 NetworkedMoveInput { get; set; }
+ [Networked] public float NetworkedSpeed { get; set; }
+ [Networked] public Vector3 NetworkedPosition { get; set; }
+ public Vector2 MoveInput { get; private set; }
+ public bool IsSprintHeld { get; private set; }
public float VelocityY { get; set; }
public bool IsGrounded { get; private set; }
public bool WasGrounded { get; private set; }
@@ -48,22 +62,40 @@ namespace OnlyScove.Scripts
public string CurrentStateName => currentState != null ? currentState.GetType().Name : "None";
- public static PlayerStateMachine Local { get; private set; } // THÊM DÒNG NÀY
+ public static PlayerStateMachine Local { get; private set; }
private PlayerBaseState currentState;
private bool hasControl = true;
+ private bool hasSpeedParam;
+ private bool hasVelocityXParam;
+ private bool hasVelocityZParam;
+
protected virtual void Awake()
{
Controller = GetComponent();
Input = GetComponent();
Anim = GetComponentInChildren();
Scanner = GetComponent();
+
+ // Kiểm tra tham số có tồn tại trong Animator không để tránh lỗi log gây Disconnect
+ if (Anim != null)
+ {
+ foreach (AnimatorControllerParameter param in Anim.parameters)
+ {
+ if (param.name == speedParamName) hasSpeedParam = true;
+ if (param.name == velocityXParamName) hasVelocityXParam = true;
+ if (param.name == velocityZParamName) hasVelocityZParam = true;
+ }
+ }
+
+ speedHash = Animator.StringToHash(speedParamName);
+ velocityXHash = Animator.StringToHash(velocityXParamName);
+ velocityZHash = Animator.StringToHash(velocityZParamName);
}
public override void Spawned()
{
- // BẮT BUỘC: Mọi máy (Server và Client) đều phải khởi tạo trạng thái ban đầu
SwitchState(new PlayerIdleState(this));
if (Object.HasInputAuthority)
@@ -74,42 +106,125 @@ namespace OnlyScove.Scripts
if (cameraController != null)
{
Cam = cameraController;
- Cam.followTarget = this.transform;
- Cam.inputReader = this.Input;
+ Cam.followTarget = transform;
+ Cam.inputReader = Input;
}
Input.OnNextInteractEvent += OnNextInteract;
Input.OnPreviousInteractEvent += OnPreviousInteract;
}
+ else
+ {
+ // Vô hiệu hóa Controller của người chơi khác trên máy khách để tránh xung đột vật lý
+ if (Runner.IsClient && Controller != null) Controller.enabled = false;
+ }
+ }
+
+ private float localAnimatorSpeed;
+
+ public void Rotate(Vector3 moveDirection, float deltaTime)
+ {
+ if (moveDirection == Vector3.zero) return;
+
+ Quaternion targetRot = Quaternion.LookRotation(moveDirection);
+ transform.rotation = Quaternion.RotateTowards(
+ transform.rotation,
+ targetRot,
+ RotationSpeed * deltaTime
+ );
+ }
+
+ public void Move(Vector3 velocity, float animatorSpeed, float deltaTime)
+ {
+ // CHỈ thực hiện di chuyển nếu có quyền điều khiển hoặc là Server
+ if (!Object.HasInputAuthority && !Runner.IsServer) return;
+
+ if (Controller != null && Controller.enabled)
+ {
+ Controller.Move(velocity * deltaTime);
+ // Cập nhật vị trí mạng ngay sau khi di chuyển để tick sau quay lại đây
+ NetworkedPosition = transform.position;
+ }
+
+ localAnimatorSpeed = animatorSpeed;
+
+ if (Object.HasStateAuthority)
+ {
+ NetworkedSpeed = animatorSpeed;
+ NetworkedMoveInput = MoveInput;
+ }
+
+ UpdateAnimator(deltaTime);
+ }
+
+ private void UpdateAnimator(float deltaTime)
+ {
+ if (Anim == null) return;
+
+ float speedValue;
+ Vector2 inputVector;
+
+ if (Object.HasInputAuthority)
+ {
+ speedValue = localAnimatorSpeed;
+ inputVector = MoveInput;
+ }
+ else
+ {
+ speedValue = NetworkedSpeed;
+ inputVector = NetworkedMoveInput;
+ }
+
+ // Chỉ Set nếu tham số thực sự tồn tại (Tránh lỗi Hash does not exist)
+ if (hasSpeedParam) Anim.SetFloat(speedHash, speedValue, AnimationDamping, deltaTime);
+ if (hasVelocityXParam) Anim.SetFloat(velocityXHash, inputVector.x * speedValue, AnimationDamping, deltaTime);
+ if (hasVelocityZParam) Anim.SetFloat(velocityZHash, inputVector.y * speedValue, AnimationDamping, deltaTime);
}
public override void FixedUpdateNetwork()
{
if (Object == null) return;
- // 1. NHẬN DỮ LIỆU TỪ MẠNG
- if (GetInput(out NetworkInputData data))
+ // ĐỒNG BỘ VỊ TRÍ: Ép nhân vật về vị trí mạng trước khi tính toán tick mới
+ // Điều này cực kỳ quan trọng để CharacterController không bị nhân đôi vận tốc khi Resimulation
+ if (NetworkedPosition != Vector3.zero)
{
- // Gán phím bấm vào InputReader để các State (Move, Jump...) sử dụng
- Input.ApplyNetworkInput(data.move, data.sprint);
-
- // CẬP NHẬT HƯỚNG CAMERA (Cho cả Server và Client)
- // Đây là mấu chốt để Server tính toán hướng chạy đúng
- NetworkedCameraRotation = data.rot;
+ if (Controller != null)
+ {
+ // Tạm thời tắt Controller để dịch chuyển Transform chính xác
+ Controller.enabled = false;
+ transform.position = NetworkedPosition;
+ Controller.enabled = true;
+ }
}
- // 2. CHẶN MÁY KHÁCH KHÁC, NHƯNG CHO PHÉP SERVER VÀ LOCAL PLAYER CHẠY LOGIC
- if (!Object.HasInputAuthority && !Runner.IsServer) return;
+ if (GetInput(out PlayerInputData data))
+ {
+ MoveInput = data.Direction;
+ IsSprintHeld = data.sprint;
+ NetworkedCameraRotation = data.rot;
+ }
+ else
+ {
+ MoveInput = Vector2.zero;
+ IsSprintHeld = false;
+ }
+
+ if (!Object.HasInputAuthority && !Runner.IsServer)
+ {
+ UpdateAnimator(Runner.DeltaTime);
+ return;
+ }
+
if (!hasControl) return;
WasGrounded = IsGrounded;
CheckGround();
UpdateInteractablesList();
+
currentState?.Tick(Runner.DeltaTime);
}
- protected virtual void Update() { }
-
private void CheckGround()
{
IsGrounded = Physics.CheckSphere(transform.TransformPoint(GroundCheckOffset), GroundCheckRadius, GroundMask);
@@ -158,8 +273,8 @@ namespace OnlyScove.Scripts
public void SetControl(bool control)
{
hasControl = control;
- Controller.enabled = control;
- if (!control) Anim.SetFloat("Speed", 0f);
+ if (Controller != null) Controller.enabled = control;
+ if (!control && Anim != null) Anim.SetFloat(speedHash, 0f);
}
private void OnDrawGizmosSelected()
@@ -168,4 +283,4 @@ namespace OnlyScove.Scripts
Gizmos.DrawSphere(transform.TransformPoint(GroundCheckOffset), GroundCheckRadius);
}
}
-}
+}
\ No newline at end of file
diff --git a/Assets/_Recovery.meta b/Assets/_Recovery.meta
new file mode 100644
index 00000000..be43cdba
--- /dev/null
+++ b/Assets/_Recovery.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d2a193aae7ad2c940be4fc9041026670
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/_Recovery/0.unity b/Assets/_Recovery/0.unity
new file mode 100644
index 00000000..3ad3f26c
--- /dev/null
+++ b/Assets/_Recovery/0.unity
@@ -0,0 +1,2008 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 2100000, guid: dce25ada87405a64c943cc71f7db0f05, type: 2}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 2
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 1
+ m_PVRFilteringGaussRadiusAO: 1
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &75539241
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 75539245}
+ - component: {fileID: 75539244}
+ - component: {fileID: 75539243}
+ - component: {fileID: 75539242}
+ m_Layer: 7
+ m_Name: Cube (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &75539242
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 75539241}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &75539243
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 75539241}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &75539244
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 75539241}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &75539245
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 75539241}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.02398076, y: -0.031742785, z: -0.60231304, w: 0.7972681}
+ m_LocalPosition: {x: 0, y: -2.04, z: 8}
+ m_LocalScale: {x: 10, y: 10, z: 10}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: -4.56, z: -74.14}
+--- !u!1001 &88921825
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 1534469393933210, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: 1831504449878450, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_Name
+ value: Door_1_Black
+ objectReference: {fileID: 0}
+ - target: {fileID: 1831504449878450, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: 1875921088058430, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: 1957651719448814, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -5.49
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.00000014088721
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -4.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4970741399400872, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents:
+ - targetCorrespondingSourceObject: {fileID: 1534469393933210, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 1771364116}
+ m_SourcePrefab: {fileID: 100100000, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+--- !u!1 &153890423
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 153890428}
+ - component: {fileID: 153890427}
+ - component: {fileID: 153890426}
+ - component: {fileID: 153890425}
+ - component: {fileID: 153890424}
+ m_Layer: 9
+ m_Name: lamp
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &153890424
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 153890423}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8ad2ce50b06995b49b7380826f67114d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.LampInteractable
+ interactionData: {fileID: 11400000, guid: 98c37fb56635fdf4cad54d755f7a66f5, type: 2}
+ targetLights:
+ - {fileID: 200732283}
+ isOn: 1
+ lampRenderer: {fileID: 0}
+ materialIndex: 0
+ emissionColorProperty: _EmissionColor
+--- !u!65 &153890425
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 153890423}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &153890426
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 153890423}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &153890427
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 153890423}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &153890428
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 153890423}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -1.91, y: 1.08189, z: 2.564}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &200732282
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 200732284}
+ - component: {fileID: 200732283}
+ - component: {fileID: 200732285}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &200732283
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 200732282}
+ m_Enabled: 1
+ serializedVersion: 12
+ m_Type: 1
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize2D: {x: 0.5, y: 0.5}
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
+--- !u!4 &200732284
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 200732282}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!114 &200732285
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 200732282}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData
+ m_UsePipelineSettings: 1
+ m_AdditionalLightsShadowResolutionTier: 2
+ m_CustomShadowLayers: 0
+ m_LightCookieSize: {x: 1, y: 1}
+ m_LightCookieOffset: {x: 0, y: 0}
+ m_SoftShadowQuality: 0
+ m_RenderingLayersMask:
+ serializedVersion: 0
+ m_Bits: 1
+ m_ShadowRenderingLayersMask:
+ serializedVersion: 0
+ m_Bits: 1
+ m_Version: 4
+ m_LightLayerMask: 1
+ m_ShadowLayerMask: 1
+ m_RenderingLayers: 1
+ m_ShadowRenderingLayers: 1
+--- !u!1001 &305111309
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -5076913349690967641, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: SortKey
+ value: 1166195333
+ objectReference: {fileID: 0}
+ - target: {fileID: 1054594849095937263, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_Name
+ value: Player
+ objectReference: {fileID: 0}
+ - target: {fileID: 3010251870038942475, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_Camera
+ value:
+ objectReference: {fileID: 795248394}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -11.564954
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.00000044506328
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 5.4807034
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+--- !u!1 &731807201
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 731807205}
+ - component: {fileID: 731807204}
+ - component: {fileID: 731807203}
+ - component: {fileID: 731807202}
+ m_Layer: 7
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &731807202
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 731807201}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &731807203
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 731807201}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &731807204
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 731807201}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &731807205
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 731807201}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.05, z: -8.97}
+ m_LocalScale: {x: 10, y: 10, z: 10}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!20 &795248394 stripped
+Camera:
+ m_CorrespondingSourceObject: {fileID: 452500236988029996, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ m_PrefabInstance: {fileID: 3886963620680427248}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1 &830381275 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 4300131081491030878, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ m_PrefabInstance: {fileID: 1937191200}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &830381277
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 830381275}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData
+ m_UsePipelineSettings: 1
+ m_AdditionalLightsShadowResolutionTier: 2
+ m_CustomShadowLayers: 0
+ m_LightCookieSize: {x: 1, y: 1}
+ m_LightCookieOffset: {x: 0, y: 0}
+ m_SoftShadowQuality: 0
+ m_RenderingLayersMask:
+ serializedVersion: 0
+ m_Bits: 1
+ m_ShadowRenderingLayersMask:
+ serializedVersion: 0
+ m_Bits: 1
+ m_Version: 4
+ m_LightLayerMask: 1
+ m_ShadowLayerMask: 1
+ m_RenderingLayers: 1
+ m_ShadowRenderingLayers: 1
+--- !u!108 &830381278 stripped
+Light:
+ m_CorrespondingSourceObject: {fileID: 3593740734441989150, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ m_PrefabInstance: {fileID: 1937191200}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1 &874617061 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 5789896249604009285, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ m_PrefabInstance: {fileID: 1937191200}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &874617062
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 874617061}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8ad2ce50b06995b49b7380826f67114d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.LampInteractable
+ interactionData: {fileID: 11400000, guid: 98c37fb56635fdf4cad54d755f7a66f5, type: 2}
+ targetLights:
+ - {fileID: 902790737}
+ - {fileID: 830381278}
+ isOn: 1
+ lampRenderer: {fileID: 874617065}
+ materialIndex: 0
+ emissionColorProperty: _EmissionColor
+--- !u!23 &874617065 stripped
+MeshRenderer:
+ m_CorrespondingSourceObject: {fileID: 113122630693524848, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ m_PrefabInstance: {fileID: 1937191200}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1 &902790734 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 447340888338295645, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ m_PrefabInstance: {fileID: 1937191200}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &902790736
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 902790734}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData
+ m_UsePipelineSettings: 1
+ m_AdditionalLightsShadowResolutionTier: 2
+ m_CustomShadowLayers: 0
+ m_LightCookieSize: {x: 1, y: 1}
+ m_LightCookieOffset: {x: 0, y: 0}
+ m_SoftShadowQuality: 0
+ m_RenderingLayersMask:
+ serializedVersion: 0
+ m_Bits: 1
+ m_ShadowRenderingLayersMask:
+ serializedVersion: 0
+ m_Bits: 1
+ m_Version: 4
+ m_LightLayerMask: 1
+ m_ShadowLayerMask: 1
+ m_RenderingLayers: 1
+ m_ShadowRenderingLayers: 1
+--- !u!108 &902790737 stripped
+Light:
+ m_CorrespondingSourceObject: {fileID: 6703942919109676015, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ m_PrefabInstance: {fileID: 1937191200}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1 &921031368
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 921031371}
+ - component: {fileID: 921031370}
+ - component: {fileID: 921031369}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &921031369
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 921031368}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.UI.InputSystemUIInputModule
+ m_SendPointerHoverToParent: 1
+ m_MoveRepeatDelay: 0.5
+ m_MoveRepeatRate: 0.1
+ m_XRTrackingOrigin: {fileID: 0}
+ m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
+ m_DeselectOnBackgroundClick: 1
+ m_PointerBehavior: 0
+ m_CursorLockBehavior: 0
+ m_ScrollDeltaPerTick: 6
+--- !u!114 &921031370
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 921031368}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.EventSystems.EventSystem
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &921031371
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 921031368}
+ 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: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1100930032
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1100930034}
+ - component: {fileID: 1100930033}
+ m_Layer: 0
+ m_Name: Lamp
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1100930033
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1100930032}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d41bcdbf11a6d6c4bb61a32e85d1635f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.DoorInteractable
+ interactionData: {fileID: 11400000, guid: 98c37fb56635fdf4cad54d755f7a66f5, type: 2}
+ woodDoorScript: {fileID: 0}
+ animator: {fileID: 0}
+ boolParameterName: IsOpen
+--- !u!4 &1100930034
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1100930032}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.39242, y: -0.95, z: 2.07}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1185172173
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1185172175}
+ - component: {fileID: 1185172174}
+ m_Layer: 0
+ m_Name: Global Volume
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1185172174
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1185172173}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Unity.RenderPipelines.Core.Runtime::UnityEngine.Rendering.Volume
+ m_IsGlobal: 1
+ priority: 0
+ blendDistance: 0
+ weight: 1
+ sharedProfile: {fileID: 11400000, guid: 66d4e46db74eed8459b64c8476ecb24a, type: 2}
+--- !u!4 &1185172175
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1185172173}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -5.340607, y: 5.437105, z: 5.723578}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1222728863
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1222728864}
+ - component: {fileID: 1222728866}
+ - component: {fileID: 1222728865}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1222728864
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1222728863}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1880766867}
+ m_Father: {fileID: 1579856156}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -140}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1222728865
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1222728863}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ 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:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 18
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 1
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: PRESS "E"
+--- !u!222 &1222728866
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1222728863}
+ m_CullTransparentMesh: 1
+--- !u!1 &1333385347
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1333385348}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1333385348
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1333385347}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -62.34701, y: 0, z: 37.91954}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1437922948
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1437922952}
+ - component: {fileID: 1437922951}
+ - component: {fileID: 1437922950}
+ - component: {fileID: 1437922949}
+ m_Layer: 6
+ m_Name: Ground
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!64 &1437922949
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1437922948}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1437922950
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1437922948}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: e2e2684e969402049b87d7f81417c603, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1437922951
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1437922948}
+ m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1437922952
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1437922948}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0, z: 0}
+ m_LocalScale: {x: 20, y: 1, z: 20}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1579856151
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1579856156}
+ - component: {fileID: 1579856155}
+ - component: {fileID: 1579856154}
+ - component: {fileID: 1579856153}
+ - component: {fileID: 1579856152}
+ m_Layer: 5
+ m_Name: Gui
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1579856152
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1579856151}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: cd13c5c96000414397dd7d41a73edd62, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::UI.MyUIDisplay
+ playerDebugProvider: {fileID: 0}
+ interactionPromptContainer: {fileID: 1222728863}
+ interactionPromptText: {fileID: 0}
+--- !u!114 &1579856153
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1579856151}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1579856154
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1579856151}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &1579856155
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1579856151}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1579856156
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1579856151}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1222728864}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &1600734456 stripped
+MonoBehaviour:
+ m_CorrespondingSourceObject: {fileID: 5600577104145922999, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ m_PrefabInstance: {fileID: 305111309}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5962d8f2c8e40e240a4a4907c7b539fa, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.InputReader
+--- !u!4 &1600734460 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3154409663696148700, guid: 761bdf2e5c0cff4488527355acb975e5, type: 3}
+ m_PrefabInstance: {fileID: 305111309}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1 &1667007657
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1667007662}
+ - component: {fileID: 1667007661}
+ - component: {fileID: 1667007660}
+ - component: {fileID: 1667007659}
+ - component: {fileID: 1667007658}
+ m_Layer: 9
+ m_Name: door
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1667007658
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1667007657}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d41bcdbf11a6d6c4bb61a32e85d1635f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.DoorInteractable
+ interactionData: {fileID: 11400000, guid: d3011be1ae644ac4e8430e89705cf443, type: 2}
+ woodDoorScript: {fileID: 0}
+ animator: {fileID: 0}
+ boolParameterName: IsOpen
+--- !u!65 &1667007659
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1667007657}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1667007660
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1667007657}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1667007661
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1667007657}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1667007662
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1667007657}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -9.26, y: 0.31, z: -13.12}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1738061767
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1738061771}
+ - component: {fileID: 1738061770}
+ - component: {fileID: 1738061769}
+ - component: {fileID: 1738061768}
+ m_Layer: 8
+ m_Name: Cube (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &1738061768
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1738061767}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1738061769
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1738061767}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_ForceMeshLod: -1
+ m_MeshLodSelectionBias: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: d7e691e02b41b9a47b417cc138d6f1bc, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_GlobalIlluminationMeshLod: 0
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_MaskInteraction: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1738061770
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1738061767}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1738061771
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1738061767}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -25.13, y: 0.15, z: -8.97}
+ m_LocalScale: {x: 10, y: 10, z: 10}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1771364109 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 1534469393933210, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ m_PrefabInstance: {fileID: 88921825}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &1771364116
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1771364109}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d41bcdbf11a6d6c4bb61a32e85d1635f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.DoorInteractable
+ interactionData: {fileID: 11400000, guid: d3011be1ae644ac4e8430e89705cf443, type: 2}
+ woodDoorScript: {fileID: 1771364118}
+ animator: {fileID: 0}
+ boolParameterName: IsOpen
+--- !u!114 &1771364118 stripped
+MonoBehaviour:
+ m_CorrespondingSourceObject: {fileID: 114024263972142150, guid: b5a5a17dc3a6d9e47bd468828a2dec34, type: 3}
+ m_PrefabInstance: {fileID: 88921825}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1771364109}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 731917776111cfd4e8e238be7a676f44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1880766866
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1880766867}
+ - component: {fileID: 1880766869}
+ - component: {fileID: 1880766868}
+ m_Layer: 5
+ m_Name: Image
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1880766867
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880766866}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1.3500221, y: 0.4000003, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1222728864}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 6}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1880766868
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880766866}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.428}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1880766869
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880766866}
+ m_CullTransparentMesh: 1
+--- !u!1 &1907283843
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1907283845}
+ - component: {fileID: 1907283844}
+ m_Layer: 0
+ m_Name: Door
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1907283844
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1907283843}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d41bcdbf11a6d6c4bb61a32e85d1635f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.DoorInteractable
+ interactionData: {fileID: 11400000, guid: d3011be1ae644ac4e8430e89705cf443, type: 2}
+ woodDoorScript: {fileID: 0}
+ animator: {fileID: 0}
+ boolParameterName: IsOpen
+--- !u!4 &1907283845
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1907283843}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.39242, y: 5.05, z: -4.11053}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1937191200
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 447340888338295645, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: 3593740734441989150, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_Range
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 3593740734441989150, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_Intensity
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 3593740734441989150, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_InnerSpotAngle
+ value: 40
+ objectReference: {fileID: 0}
+ - target: {fileID: 3593740734441989150, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_BounceIntensity
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4300131081491030878, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -17.546873
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.00000013599492
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 2.941327
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4989481681060946092, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5789896249604009285, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_Name
+ value: StreetLampRound2A
+ objectReference: {fileID: 0}
+ - target: {fileID: 5789896249604009285, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ propertyPath: m_Layer
+ value: 9
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents:
+ - targetCorrespondingSourceObject: {fileID: 5789896249604009285, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 874617062}
+ - targetCorrespondingSourceObject: {fileID: 447340888338295645, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 902790736}
+ - targetCorrespondingSourceObject: {fileID: 4300131081491030878, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 830381277}
+ m_SourcePrefab: {fileID: 100100000, guid: 120d7631bf5b4b94f8271411b1868e06, type: 3}
+--- !u!1001 &3886963620680427248
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -10
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2771692228748849855, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_Name
+ value: Main Camera
+ objectReference: {fileID: 0}
+ - target: {fileID: 2771692228748849855, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_Layer
+ value: 8
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: fpvTarget
+ value:
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: inputReader
+ value:
+ objectReference: {fileID: 1600734456}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: sensitivity
+ value: 10
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: followTarget
+ value:
+ objectReference: {fileID: 1600734460}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: zoomHandler.distance
+ value: 7.602974
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: fpvPositionSmoothTime
+ value: -0.05
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: dynamicFOV.useDynamicFOV
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: zoomHandler.zoomSensitivity
+ value: 50
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: 'characterRenderers.Array.data[0]'
+ value:
+ objectReference: {fileID: 0}
+ - target: {fileID: 3657229949309460766, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: 'characterFading.characterRenderers.Array.data[0]'
+ value:
+ objectReference: {fileID: 0}
+ - target: {fileID: 8391577239842762580, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+ propertyPath: m_RenderPostProcessing
+ value: 1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 3886963620680427248}
+ - {fileID: 200732284}
+ - {fileID: 1333385348}
+ - {fileID: 1437922952}
+ - {fileID: 731807205}
+ - {fileID: 75539245}
+ - {fileID: 1738061771}
+ - {fileID: 1185172175}
+ - {fileID: 1907283845}
+ - {fileID: 1100930034}
+ - {fileID: 921031371}
+ - {fileID: 1667007662}
+ - {fileID: 88921825}
+ - {fileID: 1579856156}
+ - {fileID: 153890428}
+ - {fileID: 1937191200}
+ - {fileID: 305111309}
diff --git a/Assets/_Recovery/0.unity.meta b/Assets/_Recovery/0.unity.meta
new file mode 100644
index 00000000..2e34eb58
--- /dev/null
+++ b/Assets/_Recovery/0.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b6727156c95850341911776ca68a1086
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant: