├── Assets ├── _Project │ ├── Scripts │ │ ├── Enemy.cs.meta │ │ ├── Annulus.cs.meta │ │ ├── Projectile.cs.meta │ │ ├── Reticle.cs.meta │ │ ├── EnemyBuilder.cs.meta │ │ ├── EnemyFactory.cs.meta │ │ ├── EnemySpawner.cs.meta │ │ ├── PlayerFollow.cs.meta │ │ ├── RailFollower.cs.meta │ │ ├── WeaponSystem.cs.meta │ │ ├── FlightPathFactory.cs.meta │ │ ├── PlayerController.cs.meta │ │ ├── Utils │ │ │ ├── Extensions │ │ │ │ ├── Vector3Extensions.cs.meta │ │ │ │ ├── GameObjectExtensions.cs.meta │ │ │ │ ├── GameObjectExtensions.cs │ │ │ │ └── Vector3Extensions.cs │ │ │ ├── Hotkeys │ │ │ │ ├── Editor │ │ │ │ │ ├── CloseWindowTab.cs.meta │ │ │ │ │ ├── LockInspector.cs.meta │ │ │ │ │ ├── ForceSaveSceneAndProject.cs.meta │ │ │ │ │ ├── ForceSaveSceneAndProject.cs │ │ │ │ │ ├── CloseWindowTab.cs │ │ │ │ │ └── LockInspector.cs │ │ │ │ └── Editor.meta │ │ │ ├── Attributes │ │ │ │ ├── Editor │ │ │ │ │ ├── LayerAttributeDrawer.cs.meta │ │ │ │ │ └── LayerAttributeDrawer.cs │ │ │ │ ├── LayerAttribute.cs │ │ │ │ ├── Editor.meta │ │ │ │ └── LayerAttribute.cs.meta │ │ │ ├── Hotkeys.meta │ │ │ ├── Attributes.meta │ │ │ ├── Extensions.meta │ │ │ ├── Helpers.cs │ │ │ └── Helpers.cs.meta │ │ ├── Utils.meta │ │ ├── InputReader.cs.meta │ │ ├── Projectile.cs │ │ ├── Reticle.cs │ │ ├── EnemyFactory.cs │ │ ├── RailFollower.cs │ │ ├── EnemySpawner.cs │ │ ├── Annulus.cs │ │ ├── Enemy.cs │ │ ├── FlightPathFactory.cs │ │ ├── InputReader.cs │ │ ├── EnemyBuilder.cs │ │ ├── WeaponSystem.cs │ │ ├── PlayerFollow.cs │ │ └── PlayerController.cs │ ├── Prefabs │ │ ├── Enemy.prefab.meta │ │ ├── Projectile.prefab.meta │ │ ├── Projectile.prefab │ │ └── Enemy.prefab │ ├── Scenes │ │ └── Level1.unity.meta │ ├── Prefabs.meta │ ├── Scenes.meta │ ├── Scripts.meta │ ├── Settings.meta │ ├── Materials.meta │ ├── Materials │ │ ├── New Material.mat.meta │ │ └── New Material.mat │ └── Settings │ │ ├── PlayerInputActions.inputactions.meta │ │ └── PlayerInputActions.inputactions ├── Settings.meta ├── _Project.meta ├── Settings │ ├── URP-Balanced.asset.meta │ ├── URP-HighFidelity.asset.meta │ ├── URP-Performant.asset.meta │ ├── URP-Balanced-Renderer.asset.meta │ ├── URP-HighFidelity-Renderer.asset.meta │ ├── URP-Performant-Renderer.asset.meta │ ├── URP-Performant-Renderer.asset │ ├── URP-Balanced-Renderer.asset │ ├── URP-Balanced.asset │ ├── URP-Performant.asset │ ├── URP-HighFidelity.asset │ └── URP-HighFidelity-Renderer.asset ├── UniversalRenderPipelineGlobalSettings.asset.meta └── UniversalRenderPipelineGlobalSettings.asset ├── ProjectSettings ├── ProjectVersion.txt ├── CommonBurstAotSettings.json ├── ClusterInputManager.asset ├── PresetManager.asset ├── XRSettings.asset ├── VersionControlSettings.asset ├── TimeManager.asset ├── EditorBuildSettings.asset ├── BurstAotSettings_StandaloneWindows.json ├── URPProjectSettings.asset ├── AudioManager.asset ├── ShaderGraphSettings.asset ├── TagManager.asset ├── VFXManager.asset ├── UnityConnectSettings.asset ├── PackageManagerSettings.asset ├── Packages │ └── com.eflatun.scenereference │ │ └── Settings.json ├── MemorySettings.asset ├── DynamicsManager.asset ├── EditorSettings.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── GraphicsSettings.asset ├── QualitySettings.asset ├── SceneTemplateSettings.json ├── InputManager.asset └── ProjectSettings.asset ├── README.md ├── Packages ├── manifest.json └── packages-lock.json └── .gitignore /Assets/_Project/Scripts/Enemy.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f88345bda7d748dd9d50f615fe6831f0 3 | timeCreated: 1687016208 -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.2.14f1 2 | m_EditorVersionWithRevision: 2022.2.14f1 (b2c9b1ac6cc0) 3 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Annulus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6677de743c145b096b41915ad1d501d 3 | timeCreated: 1687015657 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Projectile.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79ffd31bf4334fb3a2845dac7b644779 3 | timeCreated: 1686355625 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Reticle.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b992a26b53f4e82a77664da388d3659 3 | timeCreated: 1686356137 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/EnemyBuilder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 300e4af133134556b630b837a1cd843b 3 | timeCreated: 1687020269 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/EnemyFactory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 575a6e83ca3d4f12b3c8551e4d486840 3 | timeCreated: 1687019474 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/EnemySpawner.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a49b841f72b045c2aa53d697d18563a0 3 | timeCreated: 1687015666 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/PlayerFollow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: de2dee6150c840f99a125973865f9b56 3 | timeCreated: 1687529023 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/RailFollower.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 89bd308e1b12e604198044ed0787f067 3 | timeCreated: 1686352355 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/WeaponSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8aa04a6cf20b4ac3a1229a61183dc31b 3 | timeCreated: 1686353227 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/FlightPathFactory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5dd385ccaa3142ef9eddd9673fe99bdf 3 | timeCreated: 1687019469 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/PlayerController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fca1047bd4643248002344c691abf78 3 | timeCreated: 1685816741 -------------------------------------------------------------------------------- /ProjectSettings/CommonBurstAotSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 3, 4 | "DisabledWarnings": "" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Extensions/Vector3Extensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51ffb2ab49f042649219ec7c47ec2ab2 3 | timeCreated: 1683404071 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor/CloseWindowTab.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ffbde7d2052425191ab40650d3e7299 3 | timeCreated: 1668858186 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Extensions/GameObjectExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51863119228d4969b551a16a0781508e 3 | timeCreated: 1682725600 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Attributes/Editor/LayerAttributeDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 57c291b625454775b6264c8e9ad501f5 3 | timeCreated: 1683399790 -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Attributes/LayerAttribute.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Utilities { 4 | public class LayerAttribute : PropertyAttribute { 5 | } 6 | } -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /Assets/_Project/Prefabs/Enemy.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e21910a3beb6944abab2f9ff1b9b4c2 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_Project/Scenes/Level1.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21a60f962d5ab5346b7cdcd5a4cb3a4e 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 709f11a7f3c4041caa4ef136ea32d874 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35e1fd5dc9e686447be83a3453bc2d05 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Prefabs/Projectile.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 89acdea99b4b40e48825a5fa2e683923 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_Project/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0441860015648ab4e9260efb05f82489 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ec6313315f8a9c4bb967bd2c646f9ca 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c1fb43c6c0459f428037fdca8324860 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d26b644f494761d47b7c34f68df694e5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b90b7913ee41be4eba2dad8a90507b8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e4d11b9b6e39cb34d9cccb164bddd7e6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51bcb39f19d58b84e90231b8eb73982f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Balanced.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1260c1148f6143b28bae5ace5e9c5d1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Attributes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68edbbed1b6ed95409a9392dd14b0ec4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Extensions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85b4151de2a891944b9cd2ea9e88e85d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f3a4d76d810bd74b81ad784d91bd92d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/URP-HighFidelity.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b7fd9122c28c4d15b667c7040e3b3fd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Performant.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0e2fc18fe036412f8223b3b3d9ad574 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Attributes/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bef59328a2904814999ad96c8e671399 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_Project/Materials/New Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97449ff3f1784cf45b7379d7b70ca67d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Balanced-Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e634585d5c4544dd297acaee93dc2beb 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/URP-HighFidelity-Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c40be3174f62c4acf8c1216858c64956 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Performant-Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 707360a9c581a4bd7aa53bfeb1429f71 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineGlobalSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18dc0cd2c080841dea60987a38ce93fa 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Helpers.cs: -------------------------------------------------------------------------------- 1 | namespace Utilities { 2 | public static class Helpers { 3 | public static void QuitGame() { 4 | #if UNITY_EDITOR 5 | UnityEditor.EditorApplication.isPlaying = false; 6 | #else 7 | Application.Quit(); 8 | #endif 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/InputReader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9036b50948f63fd4caf47dbdd259dc7e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Projectile.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace RailShooter { 4 | public class Projectile : MonoBehaviour { 5 | [SerializeField] float speed = 10f; 6 | 7 | void Update() { 8 | transform.position += transform.forward * (speed * Time.deltaTime); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Helpers.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed9d52fd6b148b84c9823bcd640c1e9d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Attributes/LayerAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00e2a419b90748e9ad177ddbf5efb8c8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor/LockInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 644c97d20dc9092429b60cea1a67ead6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor/ForceSaveSceneAndProject.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a52f36a7b96261648a4771f56cc90527 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Reticle.cs: -------------------------------------------------------------------------------- 1 | using KBCore.Refs; 2 | using UnityEngine; 3 | 4 | namespace RailShooter { 5 | public class Reticle : ValidatedMonoBehaviour { 6 | [SerializeField] Transform targetPoint; 7 | [SerializeField, Self] RectTransform rectTransform; 8 | 9 | void Update() => rectTransform.position = Camera.main.WorldToScreenPoint(targetPoint.position); 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Extensions/GameObjectExtensions.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Utilities { 4 | public static class GameObjectExtensions { 5 | public static T GetOrAdd(this GameObject gameObject) where T : Component { 6 | T component = gameObject.GetComponent(); 7 | return component != null ? component : gameObject.AddComponent(); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 0 9 | path: 10 | guid: 00000000000000000000000000000000 11 | - enabled: 1 12 | path: Assets/_Project/Scenes/Level1.unity 13 | guid: 21a60f962d5ab5346b7cdcd5a4cb3a4e 14 | m_configObjects: {} 15 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Attributes/Editor/LayerAttributeDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace Utilities { 5 | [CustomPropertyDrawer(typeof(LayerAttribute))] 6 | public class LayerAttributeDrawer : PropertyDrawer { 7 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { 8 | property.intValue = EditorGUI.LayerField(position, label, property.intValue); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor/ForceSaveSceneAndProject.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | 4 | public class ForceSaveSceneAndProject : MonoBehaviour { 5 | [MenuItem("File/Save Scene And Project %#&s")] 6 | static void FunctionForceSaveSceneAndProject() { 7 | EditorApplication.ExecuteMenuItem("File/Save"); 8 | EditorApplication.ExecuteMenuItem("File/Save Project"); 9 | Debug.Log("Saved scene and project"); 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/_Project/Settings/PlayerInputActions.inputactions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc65c794fa6b3e945982f020d0aaa07e 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} 11 | generateWrapperCode: 0 12 | wrapperCodePath: 13 | wrapperClassName: 14 | wrapperCodeNamespace: 15 | -------------------------------------------------------------------------------- /ProjectSettings/BurstAotSettings_StandaloneWindows.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 3, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "UsePlatformSDKLinker": false, 9 | "CpuMinTargetX32": 0, 10 | "CpuMaxTargetX32": 0, 11 | "CpuMinTargetX64": 0, 12 | "CpuMaxTargetX64": 0, 13 | "CpuTargetsX32": 6, 14 | "CpuTargetsX64": 72 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ProjectSettings/URPProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_LastMaterialVersion: 7 16 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 0 20 | -------------------------------------------------------------------------------- /ProjectSettings/ShaderGraphSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de02f9e1d18f588468e474319d09a723, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | customInterpolatorErrorThreshold: 32 16 | customInterpolatorWarningThreshold: 16 17 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/EnemyFactory.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Splines; 3 | 4 | namespace RailShooter { 5 | public static class EnemyFactory { 6 | public static Enemy GenerateEnemy(Enemy enemyPrefab, SplineContainer flightPath, Transform enemyParent, Transform flightPathParent) { 7 | return new EnemyBuilder() 8 | .withPrefab(enemyPrefab) 9 | .withFlightPath(flightPath) 10 | .withFlightPathParent(flightPathParent) 11 | .build(enemyParent); 12 | } 13 | 14 | // Add other static methods for different enemy types here... 15 | } 16 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor/CloseWindowTab.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace Utilities.Editor { 5 | public class CloseWindowTab : UnityEditor.Editor { 6 | [MenuItem("File/Close Window Tab")] 7 | static void CloseTab() { 8 | var focusedWindow = EditorWindow.focusedWindow; 9 | if (focusedWindow != null) { 10 | CloseTab(focusedWindow); 11 | } else { 12 | Debug.LogWarning("Found no focused window to close"); 13 | } 14 | } 15 | 16 | static void CloseTab(EditorWindow editorWindow) { 17 | editorWindow.Close(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 7200000, guid: 84a17cfa13e40ae4082ef42714f0a81c, type: 3} 7 | m_CopyBufferShader: {fileID: 7200000, guid: 23c51f21a3503f6428b527b01f8a2f4e, type: 3} 8 | m_SortShader: {fileID: 7200000, guid: ea257ca3cfb12a642a5025e612af6b2a, type: 3} 9 | m_StripUpdateShader: {fileID: 7200000, guid: 8fa6c4009fe2a4d4486c62736fc30ad8, type: 3} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | m_MaxScrubTime: 30 14 | m_CompiledVersion: 6 15 | m_RuntimeVersion: 32 16 | m_RuntimeResources: {fileID: 11400000, guid: bc10b42afe3813544bffd38ae2cd893d, type: 2} 17 | m_BatchEmptyLifetime: 300 18 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Extensions/Vector3Extensions.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Utilities { 4 | public static class Vector3Extensions { 5 | /// 6 | /// Sets any values of the Vector3 7 | /// 8 | public static Vector3 With(this Vector3 vector, float? x = null, float? y = null, float? z = null) { 9 | return new Vector3(x ?? vector.x, y ?? vector.y, z ?? vector.z); 10 | } 11 | 12 | /// 13 | /// Adds to any values of the Vector3 14 | /// 15 | public static Vector3 Add(this Vector3 vector, float? x = null, float? y = null, float? z = null) { 16 | return new Vector3(vector.x + (x ?? 0), vector.y + (y ?? 0), vector.z + (z ?? 0)); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/RailFollower.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace RailShooter { 4 | public class RailFollower : MonoBehaviour { 5 | [SerializeField] Transform player; 6 | [SerializeField] Transform followTarget; 7 | [SerializeField] float followDistance = 22f; 8 | [SerializeField] float smoothTime = 0.2f; 9 | 10 | Vector3 velocity; 11 | 12 | void Update() { 13 | Vector3 targetPos = followTarget.position + followTarget.forward * -followDistance; 14 | transform.position = Vector3.SmoothDamp(transform.position, targetPos, ref velocity, smoothTime); 15 | 16 | // Set the camera's rotation to match the player's rotation 17 | transform.rotation = player.rotation; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/EnemySpawner.cs: -------------------------------------------------------------------------------- 1 | using Shapes; 2 | using UnityEngine; 3 | using Utilities; 4 | 5 | namespace RailShooter { 6 | public class EnemySpawner : MonoBehaviour { 7 | [SerializeField] Annulus[] annuli; 8 | [SerializeField] Enemy enemyPrefab; 9 | [SerializeField] float spawnInterval = 5f; 10 | 11 | [SerializeField] Transform enemyParent; 12 | [SerializeField] Transform flightPathParent; 13 | 14 | float spawnTimer; 15 | 16 | void Update() { 17 | if (spawnTimer > spawnInterval) { 18 | spawnTimer = 0f; 19 | SpawnEnemy(); 20 | } 21 | spawnTimer += Time.deltaTime; 22 | } 23 | 24 | void SpawnEnemy() { 25 | var flightPath = FlightPathFactory.GenerateFlightPath(annuli); 26 | EnemyFactory.GenerateEnemy(enemyPrefab, flightPath, enemyParent, flightPathParent); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Annulus.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace RailShooter { 4 | [System.Serializable] 5 | public class Annulus { 6 | public float distance; // Distance of the annulus center from the spawner 7 | public float innerRadius; // Inner radius of the annulus 8 | public float outerRadius; // Outer radius of the annulus 9 | 10 | public Vector3 GetRandomPoint() { 11 | // Random angle between 0 and 180 degrees 12 | float angle = Random.Range(0f, Mathf.PI); // full circle would be 2PI 13 | 14 | // Random radius between inner and outer radius 15 | float radius = Random.Range(innerRadius, outerRadius); 16 | 17 | // Calculate the x and y coordinates of the point 18 | float x = radius * Mathf.Cos(angle); 19 | float y = radius * Mathf.Sin(angle); 20 | 21 | // Return the point 22 | return new Vector3(x, y, distance); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | UnityAdsSettings: 27 | m_Enabled: 0 28 | m_InitializeOnStartup: 1 29 | m_TestMode: 0 30 | m_IosGameId: 31 | m_AndroidGameId: 32 | m_GameIds: {} 33 | m_GameId: 34 | PerformanceReportingSettings: 35 | m_Enabled: 0 36 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Enemy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using KBCore.Refs; 3 | using UnityEngine; 4 | using UnityEngine.Splines; 5 | 6 | namespace RailShooter { 7 | public class Enemy : ValidatedMonoBehaviour { 8 | [SerializeField, Self] SplineAnimate splineAnimate; 9 | [SerializeField] GameObject explosionPrefab; 10 | 11 | SplineContainer flightPath; 12 | 13 | public SplineContainer FlightPath { 14 | get => flightPath; 15 | set => flightPath = value; 16 | } 17 | 18 | void Update() { 19 | if (splineAnimate != null && splineAnimate.ElapsedTime >= splineAnimate.Duration) { 20 | Destroy(gameObject); 21 | } 22 | } 23 | 24 | void OnTriggerEnter(Collider other) { 25 | var explosion = Instantiate(explosionPrefab, transform.position, Quaternion.identity); 26 | Destroy(gameObject); 27 | Destroy(explosion, 5f); 28 | } 29 | 30 | void OnDestroy() { 31 | if (flightPath != null) { 32 | Destroy(flightPath.gameObject); 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 0 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.com 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity 3D Rail Shooter 2 | 3 | A rail shooter game inspired by StarFox ca. 1980s and other Rail Shooter games. 4 | 5 | ## Dependencies 6 | 7 | To use this repository, you'll need to have the following dependencies installed: 8 | 9 | - [DOTween (Free Version)](https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676) 10 | - NEW Unity Input System 11 | - Unity Splines Package 12 | - TextMesh Pro 13 | 14 | ## Installation 15 | 16 | To get started with the Rail Shooter game development tutorial series, create your own URP project in Unity and follow along with the video. This repository will serve as a reference for anyone who gets stuck, or if any mistakes are found in the video recording. Once you have created your project, be sure to install the dependencies listed above. 17 | 18 | ## Contributing 19 | 20 | If you find a bug or would like to contribute to the development of this repository, please feel free to submit a pull request. We're always looking for ways to improve the tutorial series and make it more accessible to developers of all skill levels. 21 | 22 | [**Watch the tutorial video here**](https://youtu.be/dct5vaLfyt4) 23 | 24 | You can also check out my [YouTube channel](https://www.youtube.com/@git-amend?sub_confirmation=1) for more Unity content. 25 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/FlightPathFactory.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Splines; 3 | 4 | namespace RailShooter { 5 | public static class FlightPathFactory { 6 | public static SplineContainer GenerateFlightPath(Annulus[] annuli) { 7 | Vector3[] pathPoints = new Vector3[annuli.Length]; 8 | 9 | for (int i = 0; i < annuli.Length; i++) { 10 | pathPoints[i] = annuli[i].GetRandomPoint(); 11 | } 12 | 13 | return CreateFlightPath(pathPoints); 14 | } 15 | 16 | static SplineContainer CreateFlightPath(Vector3[] pathPoints) { 17 | GameObject flightPath = new GameObject("Flight Path"); 18 | 19 | var container = flightPath.AddComponent(); 20 | var spline = container.AddSpline(); 21 | var knots = new BezierKnot[pathPoints.Length]; 22 | 23 | for (int i = 0; i < pathPoints.Length; i++) { 24 | knots[i] = new BezierKnot( 25 | pathPoints[i], 26 | -30 * Vector3.forward, 27 | 30 * Vector3.forward); 28 | } 29 | 30 | spline.Knots = knots; 31 | 32 | return container; 33 | } 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /ProjectSettings/Packages/com.eflatun.scenereference/Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "m_Dictionary": { 3 | "m_DictionaryValues": [ 4 | { 5 | "type": "Eflatun.SceneReference.Editor.SceneGuidToPathMapGenerationTriggers, Eflatun.SceneReference.Editor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", 6 | "key": "SceneGuidToPathMap.GenerationTriggers", 7 | "value": "{\"m_Value\":-1}" 8 | }, 9 | { 10 | "type": "Newtonsoft.Json.Formatting, Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=null", 11 | "key": "SceneGuidToPathMap.JsonFormatting", 12 | "value": "{\"m_Value\":1}" 13 | }, 14 | { 15 | "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", 16 | "key": "PropertyDrawer.ShowInlineSceneInBuildUtility", 17 | "value": "{\"m_Value\":true}" 18 | }, 19 | { 20 | "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", 21 | "key": "PropertyDrawer.ColorBasedOnSceneInBuildState", 22 | "value": "{\"m_Value\":true}" 23 | } 24 | ] 25 | } 26 | } -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineGlobalSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3} 13 | m_Name: UniversalRenderPipelineGlobalSettings 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 3 16 | m_RenderingLayerNames: 17 | - Light Layer default 18 | - Light Layer 1 19 | - Light Layer 2 20 | - Light Layer 3 21 | - Light Layer 4 22 | - Light Layer 5 23 | - Light Layer 6 24 | - Light Layer 7 25 | m_ValidRenderingLayers: 255 26 | lightLayerName0: Light Layer default 27 | lightLayerName1: Light Layer 1 28 | lightLayerName2: Light Layer 2 29 | lightLayerName3: Light Layer 3 30 | lightLayerName4: Light Layer 4 31 | lightLayerName5: Light Layer 5 32 | lightLayerName6: Light Layer 6 33 | lightLayerName7: Light Layer 7 34 | m_StripDebugVariants: 1 35 | m_StripUnusedPostProcessingVariants: 1 36 | m_StripUnusedVariants: 1 37 | m_StripUnusedLODCrossFadeVariants: 1 38 | m_StripScreenCoordOverrideVariants: 1 39 | supportRuntimeDebugDisplay: 0 40 | m_ShaderVariantLogLevel: 0 41 | m_ExportShaderVariants: 1 42 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/Utils/Hotkeys/Editor/LockInspector.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using UnityEditor; 3 | using UnityEngine; 4 | 5 | namespace Utilties.Editor { 6 | class LockInspector : MonoBehaviour { 7 | [MenuItem("Edit/Toggle Inspector Lock %l")] 8 | public static void Lock () { 9 | ActiveEditorTracker.sharedTracker.isLocked = !ActiveEditorTracker.sharedTracker.isLocked; 10 | 11 | foreach (var activeEditor in ActiveEditorTracker.sharedTracker.activeEditors) { 12 | if (activeEditor.target is not Transform) continue; 13 | 14 | var transform = (Transform)activeEditor.target; 15 | 16 | var propInfo = transform.GetType().GetProperty("constrainProportionsScale", BindingFlags.NonPublic | BindingFlags.Instance); 17 | if (propInfo == null) continue; 18 | 19 | var currentValue = (bool)propInfo.GetValue(transform, null); 20 | propInfo.SetValue(transform, !currentValue, null); 21 | } 22 | 23 | ActiveEditorTracker.sharedTracker.ForceRebuild(); 24 | } 25 | 26 | [MenuItem("Edit/Toggle Inspector Lock %l", true)] 27 | public static bool Valid () { 28 | return ActiveEditorTracker.sharedTracker.activeEditors.Length != 0; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0.1 18 | m_ClothInterCollisionStiffness: 0.2 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 0 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 26 | m_ContactPairsMode: 0 27 | m_BroadphaseType: 0 28 | m_WorldBounds: 29 | m_Center: {x: 0, y: 0, z: 0} 30 | m_Extent: {x: 250, y: 250, z: 250} 31 | m_WorldSubdivisions: 8 32 | m_FrictionType: 0 33 | m_EnableEnhancedDeterminism: 0 34 | m_EnableUnifiedHeightmaps: 1 35 | m_SolverType: 0 36 | m_DefaultMaxAngularSpeed: 50 37 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.eflatun.scenereference": "https://github.com/starikcetin/Eflatun.SceneReference.git#2.1.0", 4 | "com.kylewbanks.scenerefattribute": "https://github.com/KyleBanks/scene-ref-attribute.git", 5 | "com.unity.ai.navigation": "1.1.3", 6 | "com.unity.ide.rider": "3.0.21", 7 | "com.unity.inputsystem": "1.6.1", 8 | "com.unity.render-pipelines.universal": "14.0.8", 9 | "com.unity.splines": "2.2.1", 10 | "com.unity.textmeshpro": "3.0.6", 11 | "com.unity.timeline": "1.7.4", 12 | "com.unity.ugui": "1.0.0", 13 | "com.unity.visualeffectgraph": "14.0.8", 14 | "com.unity.modules.ai": "1.0.0", 15 | "com.unity.modules.androidjni": "1.0.0", 16 | "com.unity.modules.animation": "1.0.0", 17 | "com.unity.modules.assetbundle": "1.0.0", 18 | "com.unity.modules.audio": "1.0.0", 19 | "com.unity.modules.director": "1.0.0", 20 | "com.unity.modules.imageconversion": "1.0.0", 21 | "com.unity.modules.imgui": "1.0.0", 22 | "com.unity.modules.jsonserialize": "1.0.0", 23 | "com.unity.modules.particlesystem": "1.0.0", 24 | "com.unity.modules.physics": "1.0.0", 25 | "com.unity.modules.physics2d": "1.0.0", 26 | "com.unity.modules.screencapture": "1.0.0", 27 | "com.unity.modules.terrain": "1.0.0", 28 | "com.unity.modules.terrainphysics": "1.0.0", 29 | "com.unity.modules.tilemap": "1.0.0", 30 | "com.unity.modules.ui": "1.0.0", 31 | "com.unity.modules.uielements": "1.0.0" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 2 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerCacheSize: 10 14 | m_SpritePackerPaddingPower: 1 15 | m_Bc7TextureCompressor: 0 16 | m_EtcTextureCompressorBehavior: 1 17 | m_EtcTextureFastCompressor: 1 18 | m_EtcTextureNormalCompressor: 2 19 | m_EtcTextureBestCompressor: 4 20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp 21 | m_ProjectGenerationRootNamespace: RailShooter 22 | m_EnableTextureStreamingInEditMode: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | m_EnableEditorAsyncCPUTextureLoading: 0 25 | m_AsyncShaderCompilation: 1 26 | m_PrefabModeAllowAutoSave: 1 27 | m_EnterPlayModeOptionsEnabled: 1 28 | m_EnterPlayModeOptions: 3 29 | m_GameObjectNamingDigits: 1 30 | m_GameObjectNamingScheme: 0 31 | m_AssetNamingUsesSpace: 1 32 | m_InspectorUseIMGUIDefaultInspector: 0 33 | m_UseLegacyProbeSampleCount: 0 34 | m_SerializeInlineMappingsOnOneLine: 0 35 | m_DisableCookiesInLightmapper: 1 36 | m_AssetPipelineMode: 1 37 | m_RefreshImportMode: 0 38 | m_CacheServerMode: 0 39 | m_CacheServerEndpoint: 40 | m_CacheServerNamespacePrefix: default 41 | m_CacheServerEnableDownload: 1 42 | m_CacheServerEnableUpload: 1 43 | m_CacheServerEnableAuth: 0 44 | m_CacheServerEnableTls: 0 45 | m_CacheServerValidationMode: 2 46 | m_CacheServerDownloadBatchSize: 128 47 | m_EnableEnlightenBakedGI: 0 48 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uildFullScreen/ 10 | /[Bb]uilds/ 11 | /[Ll]ogs/ 12 | /[Uu]ser[Ss]ettings/ 13 | 14 | # MemoryCaptures can get excessive in size. 15 | # They also could contain extremely sensitive data 16 | /[Mm]emoryCaptures/ 17 | 18 | # Recordings can get excessive in size 19 | /[Rr]ecordings/ 20 | 21 | # Uncomment this line if you wish to ignore the asset store tools plugin 22 | # /[Aa]ssets/AssetStoreTools* 23 | 24 | # Autogenerated Jetbrains Rider plugin 25 | /[Aa]ssets/Plugins/Editor/JetBrains* 26 | 27 | # Visual Studio cache directory 28 | .vs/ 29 | 30 | # Gradle cache directory 31 | .gradle/ 32 | 33 | # Autogenerated VS/MD/Consulo solution and project files 34 | ExportedObj/ 35 | .consulo/ 36 | *.csproj 37 | *.unityproj 38 | *.sln 39 | *.suo 40 | *.tmp 41 | *.user 42 | *.userprefs 43 | *.pidb 44 | *.booproj 45 | *.svd 46 | *.pdb 47 | *.mdb 48 | *.opendb 49 | *.VC.db 50 | 51 | # Unity3D generated meta files 52 | *.pidb.meta 53 | *.pdb.meta 54 | *.mdb.meta 55 | 56 | # Unity3D generated file on crash reports 57 | sysinfo.txt 58 | 59 | # Builds 60 | *.apk 61 | *.aab 62 | *.unitypackage 63 | *.app 64 | 65 | # Crashlytics generated file 66 | crashlytics-build.properties 67 | 68 | # Packed Addressables 69 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 70 | 71 | # Temporary auto-generated Android Assets 72 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 73 | /[Aa]ssets/[Ss]treamingAssets/aa/* 74 | 75 | # Custom 76 | Assets/SceneDependencyCache* 77 | Assets/NetCodeGenerated* 78 | .idea/ 79 | .DS_Store 80 | RiderScriptEditorPersistedState.asset 81 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Performant-Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 13 | m_Name: URP-Performant-Renderer 14 | m_EditorClassIdentifier: 15 | debugShaders: 16 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, 17 | type: 3} 18 | m_RendererFeatures: [] 19 | m_RendererFeatureMap: 20 | m_UseNativeRenderPass: 0 21 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 22 | shaders: 23 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 24 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 25 | screenSpaceShadowPS: {fileID: 0} 26 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 27 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 28 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 29 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} 30 | coreBlitPS: {fileID: 0} 31 | coreBlitColorAndDepthPS: {fileID: 0} 32 | cameraMotionVector: {fileID: 0} 33 | objectMotionVector: {fileID: 0} 34 | m_OpaqueLayerMask: 35 | serializedVersion: 2 36 | m_Bits: 4294967295 37 | m_TransparentLayerMask: 38 | serializedVersion: 2 39 | m_Bits: 4294967295 40 | m_DefaultStencilState: 41 | overrideStencilState: 0 42 | stencilReference: 0 43 | stencilCompareFunction: 8 44 | passOperation: 2 45 | failOperation: 0 46 | zFailOperation: 0 47 | m_ShadowTransparentReceive: 1 48 | m_RenderingMode: 0 49 | m_DepthPrimingMode: 0 50 | m_AccurateGbufferNormals: 0 51 | m_ClusteredRendering: 0 52 | m_TileSize: 32 53 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/InputReader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using KBCore.Refs; 3 | using UnityEngine; 4 | using UnityEngine.InputSystem; 5 | 6 | namespace RailShooter { 7 | [RequireComponent(typeof(PlayerInput))] 8 | public class InputReader : ValidatedMonoBehaviour { 9 | [SerializeField, Self] PlayerInput playerInput; 10 | [SerializeField] float doubleTapTime = 0.5f; 11 | 12 | InputAction moveAction; 13 | InputAction aimAction; 14 | InputAction fireAction; 15 | 16 | float lastMoveTime; 17 | float lastMoveDirection; 18 | 19 | public event Action LeftTap; 20 | public event Action RightTap; 21 | public event Action Fire; 22 | 23 | public Vector2 Move => moveAction.ReadValue(); 24 | public Vector2 Aim => aimAction.ReadValue(); 25 | 26 | void Awake() { 27 | moveAction = playerInput.actions["Move"]; 28 | aimAction = playerInput.actions["Aim"]; 29 | fireAction = playerInput.actions["Fire"]; 30 | } 31 | 32 | void OnEnable() { 33 | moveAction.performed += OnMovePerformed; 34 | fireAction.performed += OnFire; 35 | } 36 | 37 | void OnDisable() { 38 | moveAction.performed -= OnMovePerformed; 39 | fireAction.performed -= OnFire; 40 | } 41 | 42 | void OnFire(InputAction.CallbackContext ctx) => Fire?.Invoke(); 43 | 44 | void OnMovePerformed(InputAction.CallbackContext ctx) { 45 | float currentDirection = Move.x; 46 | 47 | if (Time.time - lastMoveTime < doubleTapTime && currentDirection == lastMoveDirection) { 48 | if (currentDirection < 0) { 49 | LeftTap?.Invoke(); 50 | } else if (currentDirection > 0) { 51 | RightTap?.Invoke(); 52 | } 53 | } 54 | 55 | lastMoveTime = Time.time; 56 | lastMoveDirection = currentDirection; 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/EnemyBuilder.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Splines; 3 | 4 | namespace RailShooter { 5 | public class EnemyBuilder { 6 | Transform flightPathParent; 7 | Enemy enemyPrefab; 8 | SplineContainer flightPath; 9 | SplineAnimate.LoopMode loopMode = SplineAnimate.LoopMode.Once; 10 | 11 | public EnemyBuilder withFlightPathParent(Transform flightPathParent) { 12 | this.flightPathParent = flightPathParent; 13 | return this; 14 | } 15 | 16 | public EnemyBuilder withPrefab(Enemy enemyPrefab) { 17 | this.enemyPrefab = enemyPrefab; 18 | return this; 19 | } 20 | 21 | public EnemyBuilder withFlightPath(SplineContainer flightPath) { 22 | this.flightPath = flightPath; 23 | return this; 24 | } 25 | 26 | public EnemyBuilder withLoopMode(SplineAnimate.LoopMode loopMode) { 27 | this.loopMode = loopMode; 28 | return this; 29 | } 30 | 31 | public Enemy build(Transform enemyParent) { 32 | var enemy = Object.Instantiate(enemyPrefab, enemyParent); 33 | 34 | enemy.FlightPath = flightPath; 35 | 36 | if (flightPath != null) { 37 | var splineAnimate = enemy.GetComponent(); 38 | splineAnimate.Container = flightPath; 39 | splineAnimate.Loop = loopMode; 40 | splineAnimate.ElapsedTime = 0f; 41 | } 42 | 43 | if (flightPathParent != null && flightPath != null) { 44 | Transform transform; 45 | (transform = flightPath.transform).SetParent(flightPathParent); 46 | // reset local position and rotation 47 | transform.localPosition = Vector3.zero; 48 | transform.localRotation = Quaternion.identity; 49 | } 50 | 51 | return enemy; 52 | } 53 | 54 | 55 | 56 | 57 | 58 | } 59 | } -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 0 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Balanced-Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-1878332245247344467 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3} 13 | m_Name: SSAO 14 | m_EditorClassIdentifier: 15 | m_Active: 1 16 | m_Shader: {fileID: 0} 17 | m_Settings: 18 | Downsample: 1 19 | AfterOpaque: 0 20 | Source: 0 21 | NormalSamples: 0 22 | Intensity: 0.5 23 | DirectLightingStrength: 0.25 24 | Radius: 0.25 25 | SampleCount: 4 26 | --- !u!114 &11400000 27 | MonoBehaviour: 28 | m_ObjectHideFlags: 0 29 | m_CorrespondingSourceObject: {fileID: 0} 30 | m_PrefabInstance: {fileID: 0} 31 | m_PrefabAsset: {fileID: 0} 32 | m_GameObject: {fileID: 0} 33 | m_Enabled: 1 34 | m_EditorHideFlags: 0 35 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 36 | m_Name: URP-Balanced-Renderer 37 | m_EditorClassIdentifier: 38 | debugShaders: 39 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, 40 | type: 3} 41 | m_RendererFeatures: 42 | - {fileID: -1878332245247344467} 43 | m_RendererFeatureMap: adc0de57c6d2eee5 44 | m_UseNativeRenderPass: 0 45 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 46 | shaders: 47 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 48 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 49 | screenSpaceShadowPS: {fileID: 0} 50 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 51 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 52 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 53 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} 54 | coreBlitPS: {fileID: 0} 55 | coreBlitColorAndDepthPS: {fileID: 0} 56 | cameraMotionVector: {fileID: 0} 57 | objectMotionVector: {fileID: 0} 58 | m_OpaqueLayerMask: 59 | serializedVersion: 2 60 | m_Bits: 4294967295 61 | m_TransparentLayerMask: 62 | serializedVersion: 2 63 | m_Bits: 4294967295 64 | m_DefaultStencilState: 65 | overrideStencilState: 0 66 | stencilReference: 0 67 | stencilCompareFunction: 8 68 | passOperation: 2 69 | failOperation: 0 70 | zFailOperation: 0 71 | m_ShadowTransparentReceive: 1 72 | m_RenderingMode: 0 73 | m_DepthPrimingMode: 0 74 | m_AccurateGbufferNormals: 0 75 | m_ClusteredRendering: 0 76 | m_TileSize: 32 77 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/WeaponSystem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using KBCore.Refs; 3 | using UnityEngine; 4 | 5 | namespace RailShooter { 6 | public class WeaponSystem : ValidatedMonoBehaviour { 7 | [SerializeField, Self] InputReader input; 8 | 9 | [SerializeField] Transform targetPoint; 10 | [SerializeField] float targetDistance = 50f; 11 | [SerializeField] float smoothTime = 0.2f; 12 | [SerializeField] Vector2 aimLimit = new Vector2(50f, 20f); 13 | [SerializeField] float aimSpeed = 10f; 14 | [SerializeField] float aimReturnSpeed = 0.2f; 15 | 16 | [SerializeField] GameObject projectilePrefab; 17 | [SerializeField] Transform firePoint; 18 | 19 | Vector3 velocity; 20 | Vector2 aimOffset; 21 | 22 | void Awake() { 23 | input.Fire += OnFire; 24 | } 25 | 26 | void Start() { 27 | Cursor.visible = false; 28 | Cursor.lockState = CursorLockMode.Locked; 29 | } 30 | 31 | void Update() { 32 | // Set the targetPosition ahead of the player's local position by the target distance 33 | Vector3 targetPosition = transform.position + transform.forward * targetDistance; 34 | Vector3 localPos = transform.InverseTransformPoint(targetPosition); 35 | 36 | // If there is Aim input 37 | if (input.Aim != Vector2.zero) { 38 | // Add the aim input to the aim offset 39 | aimOffset += input.Aim * aimSpeed * Time.deltaTime; 40 | 41 | // Clamp the aim offset 42 | aimOffset.x = Mathf.Clamp(aimOffset.x, -aimLimit.x, aimLimit.x); 43 | aimOffset.y = Mathf.Clamp(aimOffset.y, -aimLimit.y, aimLimit.y); 44 | } 45 | else { 46 | // Otherwise, return the aim offset to zero 47 | aimOffset = Vector2.Lerp(aimOffset, Vector2.zero, Time.deltaTime * aimReturnSpeed); 48 | } 49 | 50 | // Apply the aim offset to the local position 51 | localPos.x += aimOffset.x; 52 | localPos.y += aimOffset.y; 53 | 54 | var desiredPosition = transform.TransformPoint(localPos); 55 | 56 | // Smooth damp to the desired position 57 | targetPoint.position = Vector3.SmoothDamp(targetPoint.position, desiredPosition, ref velocity, smoothTime); 58 | } 59 | 60 | void OnFire() { 61 | var projectile = Instantiate(projectilePrefab, firePoint.position, Quaternion.LookRotation(targetPoint.position - firePoint.position)); 62 | Destroy(projectile, 5f); 63 | } 64 | 65 | void OnDestroy() { 66 | input.Fire -= OnFire; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 14 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_VideoShadersIncludeMode: 2 32 | m_AlwaysIncludedShaders: 33 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_PreloadShadersBatchTimeLimit: -1 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 11400000, guid: 7b7fd9122c28c4d15b667c7040e3b3fd, 45 | type: 2} 46 | m_TransparencySortMode: 0 47 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 48 | m_DefaultRenderingPath: 1 49 | m_DefaultMobileRenderingPath: 1 50 | m_TierSettings: [] 51 | m_LightmapStripping: 0 52 | m_FogStripping: 0 53 | m_InstancingStripping: 0 54 | m_LightmapKeepPlain: 1 55 | m_LightmapKeepDirCombined: 1 56 | m_LightmapKeepDynamicPlain: 1 57 | m_LightmapKeepDynamicDirCombined: 1 58 | m_LightmapKeepShadowMask: 1 59 | m_LightmapKeepSubtractive: 1 60 | m_FogKeepLinear: 1 61 | m_FogKeepExp: 1 62 | m_FogKeepExp2: 1 63 | m_AlbedoSwatchInfos: [] 64 | m_LightsUseLinearIntensity: 1 65 | m_LightsUseColorTemperature: 1 66 | m_DefaultRenderingLayerMask: 1 67 | m_LogWhenShaderIsCompiled: 0 68 | m_SRPDefaultSettings: 69 | UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, 70 | type: 2} 71 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Balanced.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: URP-Balanced 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 11 16 | k_AssetPreviousVersion: 11 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: e634585d5c4544dd297acaee93dc2beb, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 1 27 | m_HDRColorBufferPrecision: 0 28 | m_MSAA: 1 29 | m_RenderScale: 1 30 | m_UpscalingFilter: 0 31 | m_FsrOverrideSharpness: 0 32 | m_FsrSharpness: 0.92 33 | m_EnableLODCrossFade: 1 34 | m_LODCrossFadeDitheringType: 1 35 | m_ShEvalMode: 0 36 | m_MainLightRenderingMode: 1 37 | m_MainLightShadowsSupported: 1 38 | m_MainLightShadowmapResolution: 1024 39 | m_AdditionalLightsRenderingMode: 1 40 | m_AdditionalLightsPerObjectLimit: 2 41 | m_AdditionalLightShadowsSupported: 0 42 | m_AdditionalLightsShadowmapResolution: 512 43 | m_AdditionalLightsShadowResolutionTierLow: 128 44 | m_AdditionalLightsShadowResolutionTierMedium: 256 45 | m_AdditionalLightsShadowResolutionTierHigh: 512 46 | m_ReflectionProbeBlending: 0 47 | m_ReflectionProbeBoxProjection: 0 48 | m_ShadowDistance: 50 49 | m_ShadowCascadeCount: 1 50 | m_Cascade2Split: 0.25 51 | m_Cascade3Split: {x: 0.1, y: 0.3} 52 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 53 | m_CascadeBorder: 0.1 54 | m_ShadowDepthBias: 1 55 | m_ShadowNormalBias: 1 56 | m_AnyShadowsSupported: 1 57 | m_SoftShadowsSupported: 1 58 | m_ConservativeEnclosingSphere: 0 59 | m_NumIterationsEnclosingSphere: 64 60 | m_SoftShadowQuality: 2 61 | m_AdditionalLightsCookieResolution: 512 62 | m_AdditionalLightsCookieFormat: 1 63 | m_UseSRPBatcher: 1 64 | m_SupportsDynamicBatching: 0 65 | m_MixedLightingSupported: 1 66 | m_SupportsLightCookies: 1 67 | m_SupportsLightLayers: 0 68 | m_DebugLevel: 0 69 | m_StoreActionsOptimization: 0 70 | m_EnableRenderGraph: 0 71 | m_UseAdaptivePerformance: 1 72 | m_ColorGradingMode: 0 73 | m_ColorGradingLutSize: 32 74 | m_UseFastSRGBLinearConversion: 0 75 | m_ShadowType: 1 76 | m_LocalShadowsSupported: 0 77 | m_LocalShadowsAtlasResolution: 256 78 | m_MaxPixelLights: 0 79 | m_ShadowAtlasResolution: 256 80 | m_VolumeFrameworkUpdateMode: 0 81 | m_Textures: 82 | blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} 83 | bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} 84 | m_ShaderVariantLogLevel: 0 85 | m_ShadowCascades: 0 86 | -------------------------------------------------------------------------------- /Assets/Settings/URP-Performant.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: URP-Performant 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 11 16 | k_AssetPreviousVersion: 11 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: 707360a9c581a4bd7aa53bfeb1429f71, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 0 27 | m_HDRColorBufferPrecision: 0 28 | m_MSAA: 1 29 | m_RenderScale: 1 30 | m_UpscalingFilter: 0 31 | m_FsrOverrideSharpness: 0 32 | m_FsrSharpness: 0.92 33 | m_EnableLODCrossFade: 1 34 | m_LODCrossFadeDitheringType: 1 35 | m_ShEvalMode: 0 36 | m_MainLightRenderingMode: 1 37 | m_MainLightShadowsSupported: 0 38 | m_MainLightShadowmapResolution: 1024 39 | m_AdditionalLightsRenderingMode: 0 40 | m_AdditionalLightsPerObjectLimit: 4 41 | m_AdditionalLightShadowsSupported: 0 42 | m_AdditionalLightsShadowmapResolution: 512 43 | m_AdditionalLightsShadowResolutionTierLow: 128 44 | m_AdditionalLightsShadowResolutionTierMedium: 256 45 | m_AdditionalLightsShadowResolutionTierHigh: 512 46 | m_ReflectionProbeBlending: 0 47 | m_ReflectionProbeBoxProjection: 0 48 | m_ShadowDistance: 50 49 | m_ShadowCascadeCount: 1 50 | m_Cascade2Split: 0.25 51 | m_Cascade3Split: {x: 0.1, y: 0.3} 52 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 53 | m_CascadeBorder: 0.1 54 | m_ShadowDepthBias: 1 55 | m_ShadowNormalBias: 1 56 | m_AnyShadowsSupported: 1 57 | m_SoftShadowsSupported: 0 58 | m_ConservativeEnclosingSphere: 0 59 | m_NumIterationsEnclosingSphere: 64 60 | m_SoftShadowQuality: 2 61 | m_AdditionalLightsCookieResolution: 2048 62 | m_AdditionalLightsCookieFormat: 3 63 | m_UseSRPBatcher: 1 64 | m_SupportsDynamicBatching: 0 65 | m_MixedLightingSupported: 1 66 | m_SupportsLightCookies: 1 67 | m_SupportsLightLayers: 0 68 | m_DebugLevel: 0 69 | m_StoreActionsOptimization: 0 70 | m_EnableRenderGraph: 0 71 | m_UseAdaptivePerformance: 1 72 | m_ColorGradingMode: 0 73 | m_ColorGradingLutSize: 16 74 | m_UseFastSRGBLinearConversion: 0 75 | m_ShadowType: 1 76 | m_LocalShadowsSupported: 0 77 | m_LocalShadowsAtlasResolution: 256 78 | m_MaxPixelLights: 0 79 | m_ShadowAtlasResolution: 256 80 | m_VolumeFrameworkUpdateMode: 0 81 | m_Textures: 82 | blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} 83 | bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} 84 | m_ShaderVariantLogLevel: 0 85 | m_ShadowCascades: 0 86 | -------------------------------------------------------------------------------- /Assets/Settings/URP-HighFidelity.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: URP-HighFidelity 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 11 16 | k_AssetPreviousVersion: 11 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: c40be3174f62c4acf8c1216858c64956, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 1 27 | m_HDRColorBufferPrecision: 0 28 | m_MSAA: 4 29 | m_RenderScale: 1 30 | m_UpscalingFilter: 0 31 | m_FsrOverrideSharpness: 0 32 | m_FsrSharpness: 0.92 33 | m_EnableLODCrossFade: 1 34 | m_LODCrossFadeDitheringType: 1 35 | m_ShEvalMode: 0 36 | m_MainLightRenderingMode: 1 37 | m_MainLightShadowsSupported: 1 38 | m_MainLightShadowmapResolution: 4096 39 | m_AdditionalLightsRenderingMode: 1 40 | m_AdditionalLightsPerObjectLimit: 8 41 | m_AdditionalLightShadowsSupported: 1 42 | m_AdditionalLightsShadowmapResolution: 4096 43 | m_AdditionalLightsShadowResolutionTierLow: 128 44 | m_AdditionalLightsShadowResolutionTierMedium: 256 45 | m_AdditionalLightsShadowResolutionTierHigh: 512 46 | m_ReflectionProbeBlending: 1 47 | m_ReflectionProbeBoxProjection: 1 48 | m_ShadowDistance: 150 49 | m_ShadowCascadeCount: 4 50 | m_Cascade2Split: 0.25 51 | m_Cascade3Split: {x: 0.1, y: 0.3} 52 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 53 | m_CascadeBorder: 0.1 54 | m_ShadowDepthBias: 1 55 | m_ShadowNormalBias: 1 56 | m_AnyShadowsSupported: 1 57 | m_SoftShadowsSupported: 1 58 | m_ConservativeEnclosingSphere: 0 59 | m_NumIterationsEnclosingSphere: 64 60 | m_SoftShadowQuality: 2 61 | m_AdditionalLightsCookieResolution: 4096 62 | m_AdditionalLightsCookieFormat: 4 63 | m_UseSRPBatcher: 1 64 | m_SupportsDynamicBatching: 0 65 | m_MixedLightingSupported: 1 66 | m_SupportsLightCookies: 1 67 | m_SupportsLightLayers: 0 68 | m_DebugLevel: 0 69 | m_StoreActionsOptimization: 0 70 | m_EnableRenderGraph: 0 71 | m_UseAdaptivePerformance: 1 72 | m_ColorGradingMode: 0 73 | m_ColorGradingLutSize: 32 74 | m_UseFastSRGBLinearConversion: 0 75 | m_ShadowType: 1 76 | m_LocalShadowsSupported: 0 77 | m_LocalShadowsAtlasResolution: 256 78 | m_MaxPixelLights: 0 79 | m_ShadowAtlasResolution: 256 80 | m_VolumeFrameworkUpdateMode: 0 81 | m_Textures: 82 | blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} 83 | bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} 84 | m_ShaderVariantLogLevel: 0 85 | m_ShadowCascades: 1 86 | -------------------------------------------------------------------------------- /Assets/Settings/URP-HighFidelity-Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-1878332245247344467 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3} 13 | m_Name: SSAO 14 | m_EditorClassIdentifier: 15 | m_Active: 1 16 | m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} 17 | m_Settings: 18 | Downsample: 0 19 | AfterOpaque: 0 20 | Source: 1 21 | NormalSamples: 1 22 | Intensity: 0.5 23 | DirectLightingStrength: 0.25 24 | Radius: 0.25 25 | SampleCount: 12 26 | --- !u!114 &11400000 27 | MonoBehaviour: 28 | m_ObjectHideFlags: 0 29 | m_CorrespondingSourceObject: {fileID: 0} 30 | m_PrefabInstance: {fileID: 0} 31 | m_PrefabAsset: {fileID: 0} 32 | m_GameObject: {fileID: 0} 33 | m_Enabled: 1 34 | m_EditorHideFlags: 0 35 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 36 | m_Name: URP-HighFidelity-Renderer 37 | m_EditorClassIdentifier: 38 | debugShaders: 39 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, 40 | type: 3} 41 | m_RendererFeatures: 42 | - {fileID: -1878332245247344467} 43 | m_RendererFeatureMap: adc0de57c6d2eee5 44 | m_UseNativeRenderPass: 0 45 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 46 | xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} 47 | shaders: 48 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 49 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 50 | screenSpaceShadowPS: {fileID: 0} 51 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 52 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 53 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 54 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} 55 | coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} 56 | coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, 57 | type: 3} 58 | cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, 59 | type: 3} 60 | objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, 61 | type: 3} 62 | m_AssetVersion: 1 63 | m_OpaqueLayerMask: 64 | serializedVersion: 2 65 | m_Bits: 4294967295 66 | m_TransparentLayerMask: 67 | serializedVersion: 2 68 | m_Bits: 4294967295 69 | m_DefaultStencilState: 70 | overrideStencilState: 0 71 | stencilReference: 0 72 | stencilCompareFunction: 8 73 | passOperation: 2 74 | failOperation: 0 75 | zFailOperation: 0 76 | m_ShadowTransparentReceive: 1 77 | m_RenderingMode: 0 78 | m_DepthPrimingMode: 0 79 | m_AccurateGbufferNormals: 0 80 | m_ClusteredRendering: 0 81 | m_TileSize: 32 82 | m_IntermediateTextureMode: 1 83 | -------------------------------------------------------------------------------- /Assets/_Project/Scripts/PlayerFollow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using UnityEngine; 6 | using UnityEngine.Splines; 7 | 8 | namespace RailShooter { 9 | 10 | [System.Serializable] 11 | public class SplinePathData { 12 | public SliceData[] slices; 13 | } 14 | 15 | [System.Serializable] 16 | public class SliceData { 17 | public int splineIndex; 18 | public SplineRange range; 19 | 20 | // Can store more useful information 21 | public bool isEnabled = true; 22 | public float sliceLength; 23 | public float distanceFromStart; 24 | } 25 | 26 | public class PlayerFollow : MonoBehaviour { 27 | [SerializeField] SplineContainer container; 28 | [SerializeField] float speed = 0.04f; 29 | 30 | [SerializeField] SplinePathData pathData; 31 | 32 | SplinePath path; 33 | 34 | float progressRatio; 35 | float progress; 36 | float totalLength; 37 | 38 | void Start() { 39 | path = new SplinePath(CalculatePath()); 40 | 41 | StartCoroutine(FollowCoroutine()); 42 | } 43 | 44 | List> CalculatePath() { 45 | // Get the Container's transform matrix 46 | var localToWorldMatrix = container.transform.localToWorldMatrix; 47 | 48 | // Get all the enabled Slices using LINQ 49 | var enabledSlices = pathData.slices.Where(slice => slice.isEnabled).ToList(); 50 | 51 | var slices = new List>(); 52 | 53 | totalLength = 0f; 54 | foreach (var sliceData in enabledSlices) { 55 | var spline = container.Splines[sliceData.splineIndex]; 56 | var slice = new SplineSlice(spline, sliceData.range, localToWorldMatrix); 57 | slices.Add(slice); 58 | 59 | // Calculate the slice details 60 | sliceData.distanceFromStart = totalLength; 61 | sliceData.sliceLength = slice.GetLength(); 62 | totalLength += sliceData.sliceLength; 63 | } 64 | 65 | return slices; 66 | } 67 | 68 | IEnumerator FollowCoroutine() { 69 | // Loop forever 70 | for (var n = 0;; ++n) { 71 | progressRatio = 0f; 72 | 73 | while (progressRatio <= 1f) { 74 | // Get the position on the path 75 | var pos = path.EvaluatePosition(progressRatio); 76 | var direction = path.EvaluateTangent(progressRatio); 77 | 78 | transform.position = pos; 79 | transform.LookAt(pos + direction); 80 | 81 | // Increment the progress ratio 82 | progressRatio += speed * Time.deltaTime; 83 | 84 | // Calculate the current distance travelled 85 | progress = progressRatio * totalLength; 86 | yield return null; 87 | } 88 | 89 | // Enable all paths 90 | foreach (var sliceData in pathData.slices) { 91 | sliceData.isEnabled = true; 92 | } 93 | 94 | // Calculate the new path 95 | path = new SplinePath(CalculatePath()); 96 | } 97 | } 98 | } 99 | } -------------------------------------------------------------------------------- /Assets/_Project/Scripts/PlayerController.cs: -------------------------------------------------------------------------------- 1 | using DG.Tweening; 2 | using KBCore.Refs; 3 | using UnityEngine; 4 | 5 | namespace RailShooter { 6 | public class PlayerController : ValidatedMonoBehaviour { 7 | [SerializeField, Self] InputReader input; 8 | 9 | [SerializeField] Transform followTarget; 10 | [SerializeField] Transform aimTarget; 11 | 12 | [SerializeField] Transform playerModel; 13 | [SerializeField] float followDistance = 2f; 14 | [SerializeField] Vector2 movementLimit = new Vector2(2f, 2f); 15 | [SerializeField] float movementSpeed = 10f; 16 | [SerializeField] float smoothTime = 0.2f; 17 | 18 | [SerializeField] float maxRoll = 15f; 19 | [SerializeField] float rollSpeed = 2f; 20 | [SerializeField] float rollDuration = 1f; 21 | 22 | [SerializeField] Transform modelParent; 23 | [SerializeField] float rotationSpeed = 5f; 24 | 25 | Vector3 velocity; 26 | float roll; 27 | 28 | void Awake() { 29 | input.LeftTap += OnLeftTap; 30 | input.RightTap += OnRightTap; 31 | } 32 | 33 | void Update() { 34 | HandlePosition(); 35 | HandleRoll(); 36 | HandleRotation(); 37 | } 38 | 39 | void HandleRotation() { 40 | // Determine direction to the target 41 | Vector3 direction = aimTarget.position - transform.position; 42 | 43 | // Calculate the rotation required to look at the target 44 | Quaternion targetRotation = Quaternion.LookRotation(direction); 45 | modelParent.rotation = Quaternion.Lerp(modelParent.rotation, targetRotation, Time.deltaTime * rotationSpeed); 46 | } 47 | 48 | void HandlePosition() { 49 | // Calculate the target position based on the follow distance and the target's position 50 | Vector3 targetPos = followTarget.position + followTarget.forward * -followDistance; 51 | 52 | // Apply smooth damp to the player's position 53 | Vector3 smoothedPos = Vector3.SmoothDamp(transform.position, targetPos, ref velocity, smoothTime); 54 | 55 | // Calculate the new local position 56 | Vector3 localPos = transform.InverseTransformPoint(smoothedPos); 57 | localPos.x += input.Move.x * movementSpeed * Time.deltaTime; 58 | localPos.y += input.Move.y * movementSpeed * Time.deltaTime; 59 | 60 | // Clamp the local position 61 | localPos.x = Mathf.Clamp(localPos.x, -movementLimit.x, movementLimit.x); 62 | localPos.y = Mathf.Clamp(localPos.y, -movementLimit.y, movementLimit.y); 63 | 64 | // Update the player's position 65 | transform.position = transform.TransformPoint(localPos); 66 | } 67 | 68 | void HandleRoll() { 69 | // Match the player's rotation to the follow target's rotation 70 | transform.rotation = followTarget.rotation; 71 | 72 | // Match the roll based on player input 73 | roll = Mathf.Lerp(roll, input.Move.x * maxRoll, Time.deltaTime * rollSpeed); 74 | transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, roll); 75 | } 76 | 77 | void OnLeftTap() => BarrelRoll(); 78 | void OnRightTap() => BarrelRoll(1); 79 | 80 | void BarrelRoll(int direction = -1) { 81 | if (!DOTween.IsTweening(playerModel)) { 82 | playerModel.DOLocalRotate(new Vector3(playerModel.localEulerAngles.x, playerModel.localEulerAngles.y, 360 * direction), 83 | rollDuration, RotateMode.LocalAxisAdd).SetEase(Ease.OutCubic); 84 | } 85 | } 86 | 87 | void OnDestroy() { 88 | input.LeftTap -= OnLeftTap; 89 | input.RightTap -= OnRightTap; 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /Assets/_Project/Materials/New Material.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-2551952462523517129 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 7 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 8 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: New Material 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_Parent: {fileID: 0} 26 | m_ModifiedSerializedProperties: 0 27 | m_ValidKeywords: [] 28 | m_InvalidKeywords: [] 29 | m_LightmapFlags: 4 30 | m_EnableInstancingVariants: 0 31 | m_DoubleSidedGI: 0 32 | m_CustomRenderQueue: -1 33 | stringTagMap: 34 | RenderType: Opaque 35 | disabledShaderPasses: [] 36 | m_LockedProperties: 37 | m_SavedProperties: 38 | serializedVersion: 3 39 | m_TexEnvs: 40 | - _BaseMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _BumpMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _DetailAlbedoMap: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _DetailMask: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _DetailNormalMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _EmissionMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _MainTex: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | - _MetallicGlossMap: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | - _OcclusionMap: 73 | m_Texture: {fileID: 0} 74 | m_Scale: {x: 1, y: 1} 75 | m_Offset: {x: 0, y: 0} 76 | - _ParallaxMap: 77 | m_Texture: {fileID: 0} 78 | m_Scale: {x: 1, y: 1} 79 | m_Offset: {x: 0, y: 0} 80 | - _SpecGlossMap: 81 | m_Texture: {fileID: 0} 82 | m_Scale: {x: 1, y: 1} 83 | m_Offset: {x: 0, y: 0} 84 | - unity_Lightmaps: 85 | m_Texture: {fileID: 0} 86 | m_Scale: {x: 1, y: 1} 87 | m_Offset: {x: 0, y: 0} 88 | - unity_LightmapsInd: 89 | m_Texture: {fileID: 0} 90 | m_Scale: {x: 1, y: 1} 91 | m_Offset: {x: 0, y: 0} 92 | - unity_ShadowMasks: 93 | m_Texture: {fileID: 0} 94 | m_Scale: {x: 1, y: 1} 95 | m_Offset: {x: 0, y: 0} 96 | m_Ints: [] 97 | m_Floats: 98 | - _AlphaClip: 0 99 | - _AlphaToMask: 0 100 | - _Blend: 0 101 | - _BlendModePreserveSpecular: 1 102 | - _BumpScale: 1 103 | - _ClearCoatMask: 0 104 | - _ClearCoatSmoothness: 0 105 | - _Cull: 2 106 | - _Cutoff: 0.5 107 | - _DetailAlbedoMapScale: 1 108 | - _DetailNormalMapScale: 1 109 | - _DstBlend: 0 110 | - _DstBlendAlpha: 0 111 | - _EnvironmentReflections: 1 112 | - _GlossMapScale: 0 113 | - _Glossiness: 0 114 | - _GlossyReflections: 0 115 | - _Metallic: 0 116 | - _OcclusionStrength: 1 117 | - _Parallax: 0.005 118 | - _QueueOffset: 0 119 | - _ReceiveShadows: 1 120 | - _Smoothness: 0.5 121 | - _SmoothnessTextureChannel: 0 122 | - _SpecularHighlights: 1 123 | - _SrcBlend: 1 124 | - _SrcBlendAlpha: 1 125 | - _Surface: 0 126 | - _WorkflowMode: 1 127 | - _ZWrite: 1 128 | m_Colors: 129 | - _BaseColor: {r: 1, g: 0.3160377, b: 0.3160377, a: 1} 130 | - _Color: {r: 1, g: 0.31603768, b: 0.31603768, a: 1} 131 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 132 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 133 | m_BuildTextureStacks: [] 134 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 2 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Performant 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 20 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 2 22 | textureQuality: 0 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.4 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | customRenderPipeline: {fileID: 11400000, guid: d0e2fc18fe036412f8223b3b3d9ad574, 44 | type: 2} 45 | excludedTargetPlatforms: [] 46 | - serializedVersion: 2 47 | name: Balanced 48 | pixelLightCount: 1 49 | shadows: 1 50 | shadowResolution: 0 51 | shadowProjection: 1 52 | shadowCascades: 1 53 | shadowDistance: 20 54 | shadowNearPlaneOffset: 3 55 | shadowCascade2Split: 0.33333334 56 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 57 | shadowmaskMode: 0 58 | skinWeights: 4 59 | textureQuality: 0 60 | anisotropicTextures: 1 61 | antiAliasing: 0 62 | softParticles: 0 63 | softVegetation: 0 64 | realtimeReflectionProbes: 0 65 | billboardsFaceCameraPosition: 0 66 | vSyncCount: 1 67 | lodBias: 1 68 | maximumLODLevel: 0 69 | streamingMipmapsActive: 0 70 | streamingMipmapsAddAllCameras: 1 71 | streamingMipmapsMemoryBudget: 512 72 | streamingMipmapsRenderersPerFrame: 512 73 | streamingMipmapsMaxLevelReduction: 2 74 | streamingMipmapsMaxFileIORequests: 1024 75 | particleRaycastBudget: 64 76 | asyncUploadTimeSlice: 2 77 | asyncUploadBufferSize: 16 78 | asyncUploadPersistentBuffer: 1 79 | resolutionScalingFixedDPIFactor: 1 80 | customRenderPipeline: {fileID: 11400000, guid: e1260c1148f6143b28bae5ace5e9c5d1, 81 | type: 2} 82 | excludedTargetPlatforms: [] 83 | - serializedVersion: 2 84 | name: High Fidelity 85 | pixelLightCount: 2 86 | shadows: 2 87 | shadowResolution: 1 88 | shadowProjection: 1 89 | shadowCascades: 2 90 | shadowDistance: 40 91 | shadowNearPlaneOffset: 3 92 | shadowCascade2Split: 0.33333334 93 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 94 | shadowmaskMode: 1 95 | skinWeights: 255 96 | textureQuality: 0 97 | anisotropicTextures: 2 98 | antiAliasing: 4 99 | softParticles: 0 100 | softVegetation: 1 101 | realtimeReflectionProbes: 1 102 | billboardsFaceCameraPosition: 1 103 | vSyncCount: 1 104 | lodBias: 2 105 | maximumLODLevel: 0 106 | streamingMipmapsActive: 0 107 | streamingMipmapsAddAllCameras: 1 108 | streamingMipmapsMemoryBudget: 512 109 | streamingMipmapsRenderersPerFrame: 512 110 | streamingMipmapsMaxLevelReduction: 2 111 | streamingMipmapsMaxFileIORequests: 1024 112 | particleRaycastBudget: 2048 113 | asyncUploadTimeSlice: 2 114 | asyncUploadBufferSize: 16 115 | asyncUploadPersistentBuffer: 1 116 | resolutionScalingFixedDPIFactor: 1 117 | customRenderPipeline: {fileID: 11400000, guid: 7b7fd9122c28c4d15b667c7040e3b3fd, 118 | type: 2} 119 | excludedTargetPlatforms: [] 120 | m_PerPlatformDefaultQuality: 121 | Android: 1 122 | CloudRendering: 2 123 | Lumin: 2 124 | GameCoreScarlett: 2 125 | GameCoreXboxOne: 2 126 | Nintendo Switch: 2 127 | PS4: 2 128 | PS5: 2 129 | Server: 0 130 | Stadia: 2 131 | Standalone: 2 132 | WebGL: 1 133 | Windows Store Apps: 2 134 | XboxOne: 2 135 | iPhone: 1 136 | tvOS: 1 137 | -------------------------------------------------------------------------------- /ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "ignore": false, 8 | "defaultInstantiationMode": 0, 9 | "supportsModification": true 10 | }, 11 | { 12 | "userAdded": false, 13 | "type": "UnityEditor.Animations.AnimatorController", 14 | "ignore": false, 15 | "defaultInstantiationMode": 0, 16 | "supportsModification": true 17 | }, 18 | { 19 | "userAdded": false, 20 | "type": "UnityEngine.AnimatorOverrideController", 21 | "ignore": false, 22 | "defaultInstantiationMode": 0, 23 | "supportsModification": true 24 | }, 25 | { 26 | "userAdded": false, 27 | "type": "UnityEditor.Audio.AudioMixerController", 28 | "ignore": false, 29 | "defaultInstantiationMode": 0, 30 | "supportsModification": true 31 | }, 32 | { 33 | "userAdded": false, 34 | "type": "UnityEngine.ComputeShader", 35 | "ignore": true, 36 | "defaultInstantiationMode": 1, 37 | "supportsModification": true 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEngine.Cubemap", 42 | "ignore": false, 43 | "defaultInstantiationMode": 0, 44 | "supportsModification": true 45 | }, 46 | { 47 | "userAdded": false, 48 | "type": "UnityEngine.GameObject", 49 | "ignore": false, 50 | "defaultInstantiationMode": 0, 51 | "supportsModification": true 52 | }, 53 | { 54 | "userAdded": false, 55 | "type": "UnityEditor.LightingDataAsset", 56 | "ignore": false, 57 | "defaultInstantiationMode": 0, 58 | "supportsModification": false 59 | }, 60 | { 61 | "userAdded": false, 62 | "type": "UnityEngine.LightingSettings", 63 | "ignore": false, 64 | "defaultInstantiationMode": 0, 65 | "supportsModification": true 66 | }, 67 | { 68 | "userAdded": false, 69 | "type": "UnityEngine.Material", 70 | "ignore": false, 71 | "defaultInstantiationMode": 0, 72 | "supportsModification": true 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEditor.MonoScript", 77 | "ignore": true, 78 | "defaultInstantiationMode": 1, 79 | "supportsModification": true 80 | }, 81 | { 82 | "userAdded": false, 83 | "type": "UnityEngine.PhysicMaterial", 84 | "ignore": false, 85 | "defaultInstantiationMode": 0, 86 | "supportsModification": true 87 | }, 88 | { 89 | "userAdded": false, 90 | "type": "UnityEngine.PhysicsMaterial2D", 91 | "ignore": false, 92 | "defaultInstantiationMode": 0, 93 | "supportsModification": true 94 | }, 95 | { 96 | "userAdded": false, 97 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 98 | "ignore": false, 99 | "defaultInstantiationMode": 0, 100 | "supportsModification": true 101 | }, 102 | { 103 | "userAdded": false, 104 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 105 | "ignore": false, 106 | "defaultInstantiationMode": 0, 107 | "supportsModification": true 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Rendering.VolumeProfile", 112 | "ignore": false, 113 | "defaultInstantiationMode": 0, 114 | "supportsModification": true 115 | }, 116 | { 117 | "userAdded": false, 118 | "type": "UnityEditor.SceneAsset", 119 | "ignore": false, 120 | "defaultInstantiationMode": 0, 121 | "supportsModification": false 122 | }, 123 | { 124 | "userAdded": false, 125 | "type": "UnityEngine.Shader", 126 | "ignore": true, 127 | "defaultInstantiationMode": 1, 128 | "supportsModification": true 129 | }, 130 | { 131 | "userAdded": false, 132 | "type": "UnityEngine.ShaderVariantCollection", 133 | "ignore": true, 134 | "defaultInstantiationMode": 1, 135 | "supportsModification": true 136 | }, 137 | { 138 | "userAdded": false, 139 | "type": "UnityEngine.Texture", 140 | "ignore": false, 141 | "defaultInstantiationMode": 0, 142 | "supportsModification": true 143 | }, 144 | { 145 | "userAdded": false, 146 | "type": "UnityEngine.Texture2D", 147 | "ignore": false, 148 | "defaultInstantiationMode": 0, 149 | "supportsModification": true 150 | }, 151 | { 152 | "userAdded": false, 153 | "type": "UnityEngine.Timeline.TimelineAsset", 154 | "ignore": false, 155 | "defaultInstantiationMode": 0, 156 | "supportsModification": true 157 | } 158 | ], 159 | "defaultDependencyTypeInfo": { 160 | "userAdded": false, 161 | "type": "", 162 | "ignore": false, 163 | "defaultInstantiationMode": 1, 164 | "supportsModification": true 165 | }, 166 | "newSceneOverride": 0 167 | } -------------------------------------------------------------------------------- /Assets/_Project/Prefabs/Projectile.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &7839224640224654499 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 4143425262085532817} 12 | - component: {fileID: -4455880529691283655} 13 | - component: {fileID: -6354107102804280233} 14 | m_Layer: 8 15 | m_Name: Projectile 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &4143425262085532817 22 | Transform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 7839224640224654499} 28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 29 | m_LocalPosition: {x: 0, y: 0, z: 0} 30 | m_LocalScale: {x: 1, y: 1, z: 1} 31 | m_ConstrainProportionsScale: 0 32 | m_Children: 33 | - {fileID: 6778222798609408432} 34 | m_Father: {fileID: 0} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | --- !u!114 &-4455880529691283655 38 | MonoBehaviour: 39 | m_ObjectHideFlags: 0 40 | m_CorrespondingSourceObject: {fileID: 0} 41 | m_PrefabInstance: {fileID: 0} 42 | m_PrefabAsset: {fileID: 0} 43 | m_GameObject: {fileID: 7839224640224654499} 44 | m_Enabled: 1 45 | m_EditorHideFlags: 0 46 | m_Script: {fileID: 11500000, guid: 79ffd31bf4334fb3a2845dac7b644779, type: 3} 47 | m_Name: 48 | m_EditorClassIdentifier: 49 | speed: 500 50 | --- !u!135 &-6354107102804280233 51 | SphereCollider: 52 | m_ObjectHideFlags: 0 53 | m_CorrespondingSourceObject: {fileID: 0} 54 | m_PrefabInstance: {fileID: 0} 55 | m_PrefabAsset: {fileID: 0} 56 | m_GameObject: {fileID: 7839224640224654499} 57 | m_Material: {fileID: 0} 58 | m_IncludeLayers: 59 | serializedVersion: 2 60 | m_Bits: 0 61 | m_ExcludeLayers: 62 | serializedVersion: 2 63 | m_Bits: 0 64 | m_LayerOverridePriority: 0 65 | m_IsTrigger: 1 66 | m_ProvidesContacts: 0 67 | m_Enabled: 1 68 | serializedVersion: 3 69 | m_Radius: 0.5 70 | m_Center: {x: 0, y: 0, z: 0} 71 | --- !u!1001 &5204509433348153990 72 | PrefabInstance: 73 | m_ObjectHideFlags: 0 74 | serializedVersion: 2 75 | m_Modification: 76 | serializedVersion: 3 77 | m_TransformParent: {fileID: 4143425262085532817} 78 | m_Modifications: 79 | - target: {fileID: 1597428183965336373, guid: 3aab95aad9546a547a8edb05f78b13e1, 80 | type: 3} 81 | propertyPath: m_Name 82 | value: FX_Shoot_02_projectile 83 | objectReference: {fileID: 0} 84 | - target: {fileID: 1597428183965336373, guid: 3aab95aad9546a547a8edb05f78b13e1, 85 | type: 3} 86 | propertyPath: m_Layer 87 | value: 8 88 | objectReference: {fileID: 0} 89 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 90 | type: 3} 91 | propertyPath: m_RootOrder 92 | value: 0 93 | objectReference: {fileID: 0} 94 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 95 | type: 3} 96 | propertyPath: m_LocalScale.x 97 | value: 3 98 | objectReference: {fileID: 0} 99 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 100 | type: 3} 101 | propertyPath: m_LocalScale.y 102 | value: 3 103 | objectReference: {fileID: 0} 104 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 105 | type: 3} 106 | propertyPath: m_LocalScale.z 107 | value: 3 108 | objectReference: {fileID: 0} 109 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 110 | type: 3} 111 | propertyPath: m_LocalPosition.x 112 | value: 0 113 | objectReference: {fileID: 0} 114 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 115 | type: 3} 116 | propertyPath: m_LocalPosition.y 117 | value: 0 118 | objectReference: {fileID: 0} 119 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 120 | type: 3} 121 | propertyPath: m_LocalPosition.z 122 | value: 0 123 | objectReference: {fileID: 0} 124 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 125 | type: 3} 126 | propertyPath: m_LocalRotation.w 127 | value: 1 128 | objectReference: {fileID: 0} 129 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 130 | type: 3} 131 | propertyPath: m_LocalRotation.x 132 | value: 0 133 | objectReference: {fileID: 0} 134 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 135 | type: 3} 136 | propertyPath: m_LocalRotation.y 137 | value: 0 138 | objectReference: {fileID: 0} 139 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 140 | type: 3} 141 | propertyPath: m_LocalRotation.z 142 | value: 0 143 | objectReference: {fileID: 0} 144 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 145 | type: 3} 146 | propertyPath: m_LocalEulerAnglesHint.x 147 | value: 0 148 | objectReference: {fileID: 0} 149 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 150 | type: 3} 151 | propertyPath: m_LocalEulerAnglesHint.y 152 | value: 0 153 | objectReference: {fileID: 0} 154 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 155 | type: 3} 156 | propertyPath: m_LocalEulerAnglesHint.z 157 | value: 0 158 | objectReference: {fileID: 0} 159 | - target: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 160 | type: 3} 161 | propertyPath: m_ConstrainProportionsScale 162 | value: 0 163 | objectReference: {fileID: 0} 164 | - target: {fileID: 1948540828389335550, guid: 3aab95aad9546a547a8edb05f78b13e1, 165 | type: 3} 166 | propertyPath: m_Layer 167 | value: 8 168 | objectReference: {fileID: 0} 169 | - target: {fileID: 6670166958456134432, guid: 3aab95aad9546a547a8edb05f78b13e1, 170 | type: 3} 171 | propertyPath: m_Layer 172 | value: 8 173 | objectReference: {fileID: 0} 174 | m_RemovedComponents: [] 175 | m_RemovedGameObjects: [] 176 | m_AddedGameObjects: [] 177 | m_AddedComponents: [] 178 | m_SourcePrefab: {fileID: 100100000, guid: 3aab95aad9546a547a8edb05f78b13e1, type: 3} 179 | --- !u!4 &6778222798609408432 stripped 180 | Transform: 181 | m_CorrespondingSourceObject: {fileID: 1597428183965336374, guid: 3aab95aad9546a547a8edb05f78b13e1, 182 | type: 3} 183 | m_PrefabInstance: {fileID: 5204509433348153990} 184 | m_PrefabAsset: {fileID: 0} 185 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.eflatun.scenereference": { 4 | "version": "https://github.com/starikcetin/Eflatun.SceneReference.git#2.1.0", 5 | "depth": 0, 6 | "source": "git", 7 | "dependencies": { 8 | "com.unity.settings-manager": "2.0.1", 9 | "com.unity.nuget.newtonsoft-json": "3.0.2" 10 | }, 11 | "hash": "13a17e72f085e731e24e4048c1be26b8ce0e1dd8" 12 | }, 13 | "com.kylewbanks.scenerefattribute": { 14 | "version": "https://github.com/KyleBanks/scene-ref-attribute.git", 15 | "depth": 0, 16 | "source": "git", 17 | "dependencies": {}, 18 | "hash": "e35402420524b392c6bf55bbebf6bc8ae44a0bef" 19 | }, 20 | "com.unity.ai.navigation": { 21 | "version": "1.1.3", 22 | "depth": 0, 23 | "source": "registry", 24 | "dependencies": { 25 | "com.unity.modules.ai": "1.0.0" 26 | }, 27 | "url": "https://packages.unity.com" 28 | }, 29 | "com.unity.burst": { 30 | "version": "1.8.4", 31 | "depth": 1, 32 | "source": "registry", 33 | "dependencies": { 34 | "com.unity.mathematics": "1.2.1" 35 | }, 36 | "url": "https://packages.unity.com" 37 | }, 38 | "com.unity.ext.nunit": { 39 | "version": "1.0.6", 40 | "depth": 1, 41 | "source": "registry", 42 | "dependencies": {}, 43 | "url": "https://packages.unity.com" 44 | }, 45 | "com.unity.ide.rider": { 46 | "version": "3.0.21", 47 | "depth": 0, 48 | "source": "registry", 49 | "dependencies": { 50 | "com.unity.ext.nunit": "1.0.6" 51 | }, 52 | "url": "https://packages.unity.com" 53 | }, 54 | "com.unity.inputsystem": { 55 | "version": "1.6.1", 56 | "depth": 0, 57 | "source": "registry", 58 | "dependencies": { 59 | "com.unity.modules.uielements": "1.0.0" 60 | }, 61 | "url": "https://packages.unity.com" 62 | }, 63 | "com.unity.mathematics": { 64 | "version": "1.2.6", 65 | "depth": 1, 66 | "source": "registry", 67 | "dependencies": {}, 68 | "url": "https://packages.unity.com" 69 | }, 70 | "com.unity.nuget.newtonsoft-json": { 71 | "version": "3.2.1", 72 | "depth": 1, 73 | "source": "registry", 74 | "dependencies": {}, 75 | "url": "https://packages.unity.com" 76 | }, 77 | "com.unity.render-pipelines.core": { 78 | "version": "14.0.8", 79 | "depth": 1, 80 | "source": "builtin", 81 | "dependencies": { 82 | "com.unity.ugui": "1.0.0", 83 | "com.unity.modules.physics": "1.0.0", 84 | "com.unity.modules.terrain": "1.0.0", 85 | "com.unity.modules.jsonserialize": "1.0.0" 86 | } 87 | }, 88 | "com.unity.render-pipelines.universal": { 89 | "version": "14.0.8", 90 | "depth": 0, 91 | "source": "builtin", 92 | "dependencies": { 93 | "com.unity.mathematics": "1.2.1", 94 | "com.unity.burst": "1.8.4", 95 | "com.unity.render-pipelines.core": "14.0.8", 96 | "com.unity.shadergraph": "14.0.8" 97 | } 98 | }, 99 | "com.unity.searcher": { 100 | "version": "4.9.2", 101 | "depth": 2, 102 | "source": "registry", 103 | "dependencies": {}, 104 | "url": "https://packages.unity.com" 105 | }, 106 | "com.unity.settings-manager": { 107 | "version": "2.0.1", 108 | "depth": 1, 109 | "source": "registry", 110 | "dependencies": {}, 111 | "url": "https://packages.unity.com" 112 | }, 113 | "com.unity.shadergraph": { 114 | "version": "14.0.8", 115 | "depth": 1, 116 | "source": "builtin", 117 | "dependencies": { 118 | "com.unity.render-pipelines.core": "14.0.8", 119 | "com.unity.searcher": "4.9.2" 120 | } 121 | }, 122 | "com.unity.splines": { 123 | "version": "2.2.1", 124 | "depth": 0, 125 | "source": "registry", 126 | "dependencies": { 127 | "com.unity.settings-manager": "1.0.3", 128 | "com.unity.mathematics": "1.2.1", 129 | "com.unity.ugui": "1.0.0" 130 | }, 131 | "url": "https://packages.unity.com" 132 | }, 133 | "com.unity.textmeshpro": { 134 | "version": "3.0.6", 135 | "depth": 0, 136 | "source": "registry", 137 | "dependencies": { 138 | "com.unity.ugui": "1.0.0" 139 | }, 140 | "url": "https://packages.unity.com" 141 | }, 142 | "com.unity.timeline": { 143 | "version": "1.7.4", 144 | "depth": 0, 145 | "source": "registry", 146 | "dependencies": { 147 | "com.unity.modules.director": "1.0.0", 148 | "com.unity.modules.animation": "1.0.0", 149 | "com.unity.modules.audio": "1.0.0", 150 | "com.unity.modules.particlesystem": "1.0.0" 151 | }, 152 | "url": "https://packages.unity.com" 153 | }, 154 | "com.unity.ugui": { 155 | "version": "1.0.0", 156 | "depth": 0, 157 | "source": "builtin", 158 | "dependencies": { 159 | "com.unity.modules.ui": "1.0.0", 160 | "com.unity.modules.imgui": "1.0.0" 161 | } 162 | }, 163 | "com.unity.visualeffectgraph": { 164 | "version": "14.0.8", 165 | "depth": 0, 166 | "source": "builtin", 167 | "dependencies": { 168 | "com.unity.shadergraph": "14.0.8", 169 | "com.unity.render-pipelines.core": "14.0.8" 170 | } 171 | }, 172 | "com.unity.modules.ai": { 173 | "version": "1.0.0", 174 | "depth": 0, 175 | "source": "builtin", 176 | "dependencies": {} 177 | }, 178 | "com.unity.modules.androidjni": { 179 | "version": "1.0.0", 180 | "depth": 0, 181 | "source": "builtin", 182 | "dependencies": {} 183 | }, 184 | "com.unity.modules.animation": { 185 | "version": "1.0.0", 186 | "depth": 0, 187 | "source": "builtin", 188 | "dependencies": {} 189 | }, 190 | "com.unity.modules.assetbundle": { 191 | "version": "1.0.0", 192 | "depth": 0, 193 | "source": "builtin", 194 | "dependencies": {} 195 | }, 196 | "com.unity.modules.audio": { 197 | "version": "1.0.0", 198 | "depth": 0, 199 | "source": "builtin", 200 | "dependencies": {} 201 | }, 202 | "com.unity.modules.director": { 203 | "version": "1.0.0", 204 | "depth": 0, 205 | "source": "builtin", 206 | "dependencies": { 207 | "com.unity.modules.audio": "1.0.0", 208 | "com.unity.modules.animation": "1.0.0" 209 | } 210 | }, 211 | "com.unity.modules.imageconversion": { 212 | "version": "1.0.0", 213 | "depth": 0, 214 | "source": "builtin", 215 | "dependencies": {} 216 | }, 217 | "com.unity.modules.imgui": { 218 | "version": "1.0.0", 219 | "depth": 0, 220 | "source": "builtin", 221 | "dependencies": {} 222 | }, 223 | "com.unity.modules.jsonserialize": { 224 | "version": "1.0.0", 225 | "depth": 0, 226 | "source": "builtin", 227 | "dependencies": {} 228 | }, 229 | "com.unity.modules.particlesystem": { 230 | "version": "1.0.0", 231 | "depth": 0, 232 | "source": "builtin", 233 | "dependencies": {} 234 | }, 235 | "com.unity.modules.physics": { 236 | "version": "1.0.0", 237 | "depth": 0, 238 | "source": "builtin", 239 | "dependencies": {} 240 | }, 241 | "com.unity.modules.physics2d": { 242 | "version": "1.0.0", 243 | "depth": 0, 244 | "source": "builtin", 245 | "dependencies": {} 246 | }, 247 | "com.unity.modules.screencapture": { 248 | "version": "1.0.0", 249 | "depth": 0, 250 | "source": "builtin", 251 | "dependencies": { 252 | "com.unity.modules.imageconversion": "1.0.0" 253 | } 254 | }, 255 | "com.unity.modules.terrain": { 256 | "version": "1.0.0", 257 | "depth": 0, 258 | "source": "builtin", 259 | "dependencies": {} 260 | }, 261 | "com.unity.modules.terrainphysics": { 262 | "version": "1.0.0", 263 | "depth": 0, 264 | "source": "builtin", 265 | "dependencies": { 266 | "com.unity.modules.physics": "1.0.0", 267 | "com.unity.modules.terrain": "1.0.0" 268 | } 269 | }, 270 | "com.unity.modules.tilemap": { 271 | "version": "1.0.0", 272 | "depth": 0, 273 | "source": "builtin", 274 | "dependencies": { 275 | "com.unity.modules.physics2d": "1.0.0" 276 | } 277 | }, 278 | "com.unity.modules.ui": { 279 | "version": "1.0.0", 280 | "depth": 0, 281 | "source": "builtin", 282 | "dependencies": {} 283 | }, 284 | "com.unity.modules.uielements": { 285 | "version": "1.0.0", 286 | "depth": 0, 287 | "source": "builtin", 288 | "dependencies": { 289 | "com.unity.modules.ui": "1.0.0", 290 | "com.unity.modules.imgui": "1.0.0", 291 | "com.unity.modules.jsonserialize": "1.0.0" 292 | } 293 | } 294 | } 295 | } 296 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | - serializedVersion: 3 297 | m_Name: Enable Debug Button 1 298 | descriptiveName: 299 | descriptiveNegativeName: 300 | negativeButton: 301 | positiveButton: left ctrl 302 | altNegativeButton: 303 | altPositiveButton: joystick button 8 304 | gravity: 0 305 | dead: 0 306 | sensitivity: 0 307 | snap: 0 308 | invert: 0 309 | type: 0 310 | axis: 0 311 | joyNum: 0 312 | - serializedVersion: 3 313 | m_Name: Enable Debug Button 2 314 | descriptiveName: 315 | descriptiveNegativeName: 316 | negativeButton: 317 | positiveButton: backspace 318 | altNegativeButton: 319 | altPositiveButton: joystick button 9 320 | gravity: 0 321 | dead: 0 322 | sensitivity: 0 323 | snap: 0 324 | invert: 0 325 | type: 0 326 | axis: 0 327 | joyNum: 0 328 | - serializedVersion: 3 329 | m_Name: Debug Reset 330 | descriptiveName: 331 | descriptiveNegativeName: 332 | negativeButton: 333 | positiveButton: left alt 334 | altNegativeButton: 335 | altPositiveButton: joystick button 1 336 | gravity: 0 337 | dead: 0 338 | sensitivity: 0 339 | snap: 0 340 | invert: 0 341 | type: 0 342 | axis: 0 343 | joyNum: 0 344 | - serializedVersion: 3 345 | m_Name: Debug Next 346 | descriptiveName: 347 | descriptiveNegativeName: 348 | negativeButton: 349 | positiveButton: page down 350 | altNegativeButton: 351 | altPositiveButton: joystick button 5 352 | gravity: 0 353 | dead: 0 354 | sensitivity: 0 355 | snap: 0 356 | invert: 0 357 | type: 0 358 | axis: 0 359 | joyNum: 0 360 | - serializedVersion: 3 361 | m_Name: Debug Previous 362 | descriptiveName: 363 | descriptiveNegativeName: 364 | negativeButton: 365 | positiveButton: page up 366 | altNegativeButton: 367 | altPositiveButton: joystick button 4 368 | gravity: 0 369 | dead: 0 370 | sensitivity: 0 371 | snap: 0 372 | invert: 0 373 | type: 0 374 | axis: 0 375 | joyNum: 0 376 | - serializedVersion: 3 377 | m_Name: Debug Validate 378 | descriptiveName: 379 | descriptiveNegativeName: 380 | negativeButton: 381 | positiveButton: return 382 | altNegativeButton: 383 | altPositiveButton: joystick button 0 384 | gravity: 0 385 | dead: 0 386 | sensitivity: 0 387 | snap: 0 388 | invert: 0 389 | type: 0 390 | axis: 0 391 | joyNum: 0 392 | - serializedVersion: 3 393 | m_Name: Debug Persistent 394 | descriptiveName: 395 | descriptiveNegativeName: 396 | negativeButton: 397 | positiveButton: right shift 398 | altNegativeButton: 399 | altPositiveButton: joystick button 2 400 | gravity: 0 401 | dead: 0 402 | sensitivity: 0 403 | snap: 0 404 | invert: 0 405 | type: 0 406 | axis: 0 407 | joyNum: 0 408 | - serializedVersion: 3 409 | m_Name: Debug Multiplier 410 | descriptiveName: 411 | descriptiveNegativeName: 412 | negativeButton: 413 | positiveButton: left shift 414 | altNegativeButton: 415 | altPositiveButton: joystick button 3 416 | gravity: 0 417 | dead: 0 418 | sensitivity: 0 419 | snap: 0 420 | invert: 0 421 | type: 0 422 | axis: 0 423 | joyNum: 0 424 | - serializedVersion: 3 425 | m_Name: Debug Horizontal 426 | descriptiveName: 427 | descriptiveNegativeName: 428 | negativeButton: left 429 | positiveButton: right 430 | altNegativeButton: 431 | altPositiveButton: 432 | gravity: 1000 433 | dead: 0.001 434 | sensitivity: 1000 435 | snap: 0 436 | invert: 0 437 | type: 0 438 | axis: 0 439 | joyNum: 0 440 | - serializedVersion: 3 441 | m_Name: Debug Vertical 442 | descriptiveName: 443 | descriptiveNegativeName: 444 | negativeButton: down 445 | positiveButton: up 446 | altNegativeButton: 447 | altPositiveButton: 448 | gravity: 1000 449 | dead: 0.001 450 | sensitivity: 1000 451 | snap: 0 452 | invert: 0 453 | type: 0 454 | axis: 0 455 | joyNum: 0 456 | - serializedVersion: 3 457 | m_Name: Debug Vertical 458 | descriptiveName: 459 | descriptiveNegativeName: 460 | negativeButton: down 461 | positiveButton: up 462 | altNegativeButton: 463 | altPositiveButton: 464 | gravity: 1000 465 | dead: 0.001 466 | sensitivity: 1000 467 | snap: 0 468 | invert: 0 469 | type: 2 470 | axis: 6 471 | joyNum: 0 472 | - serializedVersion: 3 473 | m_Name: Debug Horizontal 474 | descriptiveName: 475 | descriptiveNegativeName: 476 | negativeButton: left 477 | positiveButton: right 478 | altNegativeButton: 479 | altPositiveButton: 480 | gravity: 1000 481 | dead: 0.001 482 | sensitivity: 1000 483 | snap: 0 484 | invert: 0 485 | type: 2 486 | axis: 5 487 | joyNum: 0 488 | -------------------------------------------------------------------------------- /Assets/_Project/Prefabs/Enemy.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &5000926751456444202 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 4519633389396154648} 12 | - component: {fileID: 5763097887742642145} 13 | - component: {fileID: 4211771172618956610} 14 | - component: {fileID: 8415944751364429316} 15 | - component: {fileID: 6531580632333107962} 16 | m_Layer: 7 17 | m_Name: Enemy 18 | m_TagString: Untagged 19 | m_Icon: {fileID: 0} 20 | m_NavMeshLayer: 0 21 | m_StaticEditorFlags: 0 22 | m_IsActive: 1 23 | --- !u!4 &4519633389396154648 24 | Transform: 25 | m_ObjectHideFlags: 0 26 | m_CorrespondingSourceObject: {fileID: 0} 27 | m_PrefabInstance: {fileID: 0} 28 | m_PrefabAsset: {fileID: 0} 29 | m_GameObject: {fileID: 5000926751456444202} 30 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 31 | m_LocalPosition: {x: 0, y: 0, z: 0} 32 | m_LocalScale: {x: 1, y: 1, z: 1} 33 | m_ConstrainProportionsScale: 0 34 | m_Children: 35 | - {fileID: 1548699735068962825} 36 | m_Father: {fileID: 0} 37 | m_RootOrder: 9 38 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 39 | --- !u!54 &5763097887742642145 40 | Rigidbody: 41 | m_ObjectHideFlags: 0 42 | m_CorrespondingSourceObject: {fileID: 0} 43 | m_PrefabInstance: {fileID: 0} 44 | m_PrefabAsset: {fileID: 0} 45 | m_GameObject: {fileID: 5000926751456444202} 46 | serializedVersion: 4 47 | m_Mass: 1 48 | m_Drag: 0 49 | m_AngularDrag: 0.05 50 | m_CenterOfMass: {x: 0, y: 0, z: 0} 51 | m_InertiaTensor: {x: 1, y: 1, z: 1} 52 | m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} 53 | m_IncludeLayers: 54 | serializedVersion: 2 55 | m_Bits: 0 56 | m_ExcludeLayers: 57 | serializedVersion: 2 58 | m_Bits: 0 59 | m_ImplicitCom: 1 60 | m_ImplicitTensor: 1 61 | m_UseGravity: 1 62 | m_IsKinematic: 0 63 | m_Interpolate: 0 64 | m_Constraints: 0 65 | m_CollisionDetection: 0 66 | --- !u!65 &4211771172618956610 67 | BoxCollider: 68 | m_ObjectHideFlags: 0 69 | m_CorrespondingSourceObject: {fileID: 0} 70 | m_PrefabInstance: {fileID: 0} 71 | m_PrefabAsset: {fileID: 0} 72 | m_GameObject: {fileID: 5000926751456444202} 73 | m_Material: {fileID: 0} 74 | m_IncludeLayers: 75 | serializedVersion: 2 76 | m_Bits: 0 77 | m_ExcludeLayers: 78 | serializedVersion: 2 79 | m_Bits: 0 80 | m_LayerOverridePriority: 0 81 | m_IsTrigger: 1 82 | m_ProvidesContacts: 0 83 | m_Enabled: 1 84 | serializedVersion: 3 85 | m_Size: {x: 10, y: 2, z: 10} 86 | m_Center: {x: 0, y: 0, z: 0} 87 | --- !u!114 &8415944751364429316 88 | MonoBehaviour: 89 | m_ObjectHideFlags: 0 90 | m_CorrespondingSourceObject: {fileID: 0} 91 | m_PrefabInstance: {fileID: 0} 92 | m_PrefabAsset: {fileID: 0} 93 | m_GameObject: {fileID: 5000926751456444202} 94 | m_Enabled: 1 95 | m_EditorHideFlags: 0 96 | m_Script: {fileID: 11500000, guid: f88345bda7d748dd9d50f615fe6831f0, type: 3} 97 | m_Name: 98 | m_EditorClassIdentifier: 99 | splineAnimate: {fileID: 6531580632333107962} 100 | explosionPrefab: {fileID: 9155945149206610656, guid: 9d80aa0bb1a0bf742a0ea6c130d78767, 101 | type: 3} 102 | --- !u!114 &6531580632333107962 103 | MonoBehaviour: 104 | m_ObjectHideFlags: 0 105 | m_CorrespondingSourceObject: {fileID: 0} 106 | m_PrefabInstance: {fileID: 0} 107 | m_PrefabAsset: {fileID: 0} 108 | m_GameObject: {fileID: 5000926751456444202} 109 | m_Enabled: 1 110 | m_EditorHideFlags: 0 111 | m_Script: {fileID: 11500000, guid: 29a074d529cf945029ef7cf40540c9df, type: 3} 112 | m_Name: 113 | m_EditorClassIdentifier: 114 | m_Target: {fileID: 0} 115 | m_PlayOnAwake: 1 116 | m_LoopMode: 0 117 | m_Method: 0 118 | m_Duration: 30 119 | m_MaxSpeed: 10 120 | m_EasingMode: 0 121 | m_AlignmentMode: 1 122 | m_ObjectForwardAxis: 2 123 | m_ObjectUpAxis: 1 124 | m_StartOffset: 0 125 | --- !u!1001 &1544976841491647219 126 | PrefabInstance: 127 | m_ObjectHideFlags: 0 128 | serializedVersion: 2 129 | m_Modification: 130 | serializedVersion: 3 131 | m_TransformParent: {fileID: 4519633389396154648} 132 | m_Modifications: 133 | - target: {fileID: 1486516531487954, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 134 | propertyPath: m_Name 135 | value: CosmicShark1 136 | objectReference: {fileID: 0} 137 | - target: {fileID: 1486516531487954, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 138 | propertyPath: m_Layer 139 | value: 7 140 | objectReference: {fileID: 0} 141 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 142 | propertyPath: m_RootOrder 143 | value: 0 144 | objectReference: {fileID: 0} 145 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 146 | propertyPath: m_LocalPosition.x 147 | value: 0 148 | objectReference: {fileID: 0} 149 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 150 | propertyPath: m_LocalPosition.y 151 | value: 0 152 | objectReference: {fileID: 0} 153 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 154 | propertyPath: m_LocalPosition.z 155 | value: 0 156 | objectReference: {fileID: 0} 157 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 158 | propertyPath: m_LocalRotation.w 159 | value: 1 160 | objectReference: {fileID: 0} 161 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 162 | propertyPath: m_LocalRotation.x 163 | value: 0 164 | objectReference: {fileID: 0} 165 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 166 | propertyPath: m_LocalRotation.y 167 | value: 0 168 | objectReference: {fileID: 0} 169 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 170 | propertyPath: m_LocalRotation.z 171 | value: 0 172 | objectReference: {fileID: 0} 173 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 174 | propertyPath: m_LocalEulerAnglesHint.x 175 | value: 0 176 | objectReference: {fileID: 0} 177 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 178 | propertyPath: m_LocalEulerAnglesHint.y 179 | value: 0 180 | objectReference: {fileID: 0} 181 | - target: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 182 | propertyPath: m_LocalEulerAnglesHint.z 183 | value: 0 184 | objectReference: {fileID: 0} 185 | - target: {fileID: 261707489182467767, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 186 | type: 3} 187 | propertyPath: m_Layer 188 | value: 7 189 | objectReference: {fileID: 0} 190 | - target: {fileID: 291776673042270897, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 191 | type: 3} 192 | propertyPath: m_Layer 193 | value: 7 194 | objectReference: {fileID: 0} 195 | - target: {fileID: 343492060177070801, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 196 | type: 3} 197 | propertyPath: m_Layer 198 | value: 7 199 | objectReference: {fileID: 0} 200 | - target: {fileID: 933397061150169794, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 201 | type: 3} 202 | propertyPath: m_Layer 203 | value: 7 204 | objectReference: {fileID: 0} 205 | - target: {fileID: 1198253010403928130, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 206 | type: 3} 207 | propertyPath: m_Layer 208 | value: 7 209 | objectReference: {fileID: 0} 210 | - target: {fileID: 2030182940304970290, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 211 | type: 3} 212 | propertyPath: m_Layer 213 | value: 7 214 | objectReference: {fileID: 0} 215 | - target: {fileID: 2080532529921347212, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 216 | type: 3} 217 | propertyPath: m_Layer 218 | value: 7 219 | objectReference: {fileID: 0} 220 | - target: {fileID: 2137674159440778908, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 221 | type: 3} 222 | propertyPath: m_Layer 223 | value: 7 224 | objectReference: {fileID: 0} 225 | - target: {fileID: 2627838946837380253, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 226 | type: 3} 227 | propertyPath: m_Layer 228 | value: 7 229 | objectReference: {fileID: 0} 230 | - target: {fileID: 2859832297406513617, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 231 | type: 3} 232 | propertyPath: m_Layer 233 | value: 7 234 | objectReference: {fileID: 0} 235 | - target: {fileID: 3477273153134873387, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 236 | type: 3} 237 | propertyPath: m_Layer 238 | value: 7 239 | objectReference: {fileID: 0} 240 | - target: {fileID: 3493219946790820407, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 241 | type: 3} 242 | propertyPath: m_Layer 243 | value: 7 244 | objectReference: {fileID: 0} 245 | - target: {fileID: 3604113509166877553, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 246 | type: 3} 247 | propertyPath: m_Layer 248 | value: 7 249 | objectReference: {fileID: 0} 250 | - target: {fileID: 3716280570764662729, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 251 | type: 3} 252 | propertyPath: m_Layer 253 | value: 7 254 | objectReference: {fileID: 0} 255 | - target: {fileID: 4385912298176422337, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 256 | type: 3} 257 | propertyPath: m_Layer 258 | value: 7 259 | objectReference: {fileID: 0} 260 | - target: {fileID: 4698818684125455172, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 261 | type: 3} 262 | propertyPath: m_Layer 263 | value: 7 264 | objectReference: {fileID: 0} 265 | - target: {fileID: 4772244842718482135, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 266 | type: 3} 267 | propertyPath: m_Layer 268 | value: 7 269 | objectReference: {fileID: 0} 270 | - target: {fileID: 5088979987757526322, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 271 | type: 3} 272 | propertyPath: m_Layer 273 | value: 7 274 | objectReference: {fileID: 0} 275 | - target: {fileID: 5383978174344977914, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 276 | type: 3} 277 | propertyPath: m_Layer 278 | value: 7 279 | objectReference: {fileID: 0} 280 | - target: {fileID: 5918992496750293633, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 281 | type: 3} 282 | propertyPath: m_Layer 283 | value: 7 284 | objectReference: {fileID: 0} 285 | - target: {fileID: 6081208386741392264, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 286 | type: 3} 287 | propertyPath: m_Layer 288 | value: 7 289 | objectReference: {fileID: 0} 290 | - target: {fileID: 6432731561235498285, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 291 | type: 3} 292 | propertyPath: m_Layer 293 | value: 7 294 | objectReference: {fileID: 0} 295 | - target: {fileID: 7214666517340518617, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 296 | type: 3} 297 | propertyPath: m_Layer 298 | value: 7 299 | objectReference: {fileID: 0} 300 | - target: {fileID: 8552500159502825313, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 301 | type: 3} 302 | propertyPath: m_Layer 303 | value: 7 304 | objectReference: {fileID: 0} 305 | - target: {fileID: 8664082906759247664, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 306 | type: 3} 307 | propertyPath: m_Layer 308 | value: 7 309 | objectReference: {fileID: 0} 310 | - target: {fileID: 8679963564686125727, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 311 | type: 3} 312 | propertyPath: m_Layer 313 | value: 7 314 | objectReference: {fileID: 0} 315 | - target: {fileID: 8823063821942523471, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 316 | type: 3} 317 | propertyPath: m_Layer 318 | value: 7 319 | objectReference: {fileID: 0} 320 | m_RemovedComponents: [] 321 | m_RemovedGameObjects: [] 322 | m_AddedGameObjects: [] 323 | m_AddedComponents: [] 324 | m_SourcePrefab: {fileID: 100100000, guid: 540ca1b561ce8e94eb6f25a67cbecad9, type: 3} 325 | --- !u!4 &1548699735068962825 stripped 326 | Transform: 327 | m_CorrespondingSourceObject: {fileID: 4163250511313658, guid: 540ca1b561ce8e94eb6f25a67cbecad9, 328 | type: 3} 329 | m_PrefabInstance: {fileID: 1544976841491647219} 330 | m_PrefabAsset: {fileID: 0} 331 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 26 7 | productGUID: 1f0a05b9e34193b4ca898547a75e0486 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: Rail Shooter 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 1 51 | m_SpriteBatchVertexThreshold: 300 52 | m_MTRendering: 1 53 | mipStripping: 0 54 | numberOfMipsStripped: 0 55 | numberOfMipsStrippedPerMipmapLimitGroup: {} 56 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 57 | iosShowActivityIndicatorOnLoading: -1 58 | androidShowActivityIndicatorOnLoading: -1 59 | iosUseCustomAppBackgroundBehavior: 0 60 | allowedAutorotateToPortrait: 1 61 | allowedAutorotateToPortraitUpsideDown: 1 62 | allowedAutorotateToLandscapeRight: 1 63 | allowedAutorotateToLandscapeLeft: 1 64 | useOSAutorotation: 1 65 | use32BitDisplayBuffer: 1 66 | preserveFramebufferAlpha: 0 67 | disableDepthAndStencilBuffers: 0 68 | androidStartInFullscreen: 1 69 | androidRenderOutsideSafeArea: 1 70 | androidUseSwappy: 0 71 | androidBlitType: 0 72 | androidResizableWindow: 0 73 | androidDefaultWindowWidth: 1920 74 | androidDefaultWindowHeight: 1080 75 | androidMinimumWindowWidth: 400 76 | androidMinimumWindowHeight: 300 77 | androidFullscreenMode: 1 78 | defaultIsNativeResolution: 1 79 | macRetinaSupport: 1 80 | runInBackground: 0 81 | captureSingleScreen: 0 82 | muteOtherAudioSources: 0 83 | Prepare IOS For Recording: 0 84 | Force IOS Speakers When Recording: 0 85 | deferSystemGesturesMode: 0 86 | hideHomeButton: 0 87 | submitAnalytics: 1 88 | usePlayerLog: 1 89 | bakeCollisionMeshes: 0 90 | forceSingleInstance: 0 91 | useFlipModelSwapchain: 1 92 | resizableWindow: 0 93 | useMacAppStoreValidation: 0 94 | macAppStoreCategory: public.app-category.games 95 | gpuSkinning: 0 96 | xboxPIXTextureCapture: 0 97 | xboxEnableAvatar: 0 98 | xboxEnableKinect: 0 99 | xboxEnableKinectAutoTracking: 0 100 | xboxEnableFitness: 0 101 | visibleInBackground: 1 102 | allowFullscreenSwitch: 1 103 | fullscreenMode: 1 104 | xboxSpeechDB: 0 105 | xboxEnableHeadOrientation: 0 106 | xboxEnableGuest: 0 107 | xboxEnablePIXSampling: 0 108 | metalFramebufferOnly: 0 109 | xboxOneResolution: 0 110 | xboxOneSResolution: 0 111 | xboxOneXResolution: 3 112 | xboxOneMonoLoggingLevel: 0 113 | xboxOneLoggingLevel: 1 114 | xboxOneDisableEsram: 0 115 | xboxOneEnableTypeOptimization: 0 116 | xboxOnePresentImmediateThreshold: 0 117 | switchQueueCommandMemory: 1048576 118 | switchQueueControlMemory: 16384 119 | switchQueueComputeMemory: 262144 120 | switchNVNShaderPoolsGranularity: 33554432 121 | switchNVNDefaultPoolsGranularity: 16777216 122 | switchNVNOtherPoolsGranularity: 16777216 123 | switchGpuScratchPoolGranularity: 2097152 124 | switchAllowGpuScratchShrinking: 0 125 | switchNVNMaxPublicTextureIDCount: 0 126 | switchNVNMaxPublicSamplerIDCount: 0 127 | switchNVNGraphicsFirmwareMemory: 32 128 | stadiaPresentMode: 0 129 | stadiaTargetFramerate: 0 130 | vulkanNumSwapchainBuffers: 3 131 | vulkanEnableSetSRGBWrite: 0 132 | vulkanEnablePreTransform: 0 133 | vulkanEnableLateAcquireNextImage: 0 134 | vulkanEnableCommandBufferRecycling: 1 135 | loadStoreDebugModeEnabled: 0 136 | bundleVersion: 0.1.0 137 | preloadedAssets: [] 138 | metroInputSource: 0 139 | wsaTransparentSwapchain: 0 140 | m_HolographicPauseOnTrackingLoss: 1 141 | xboxOneDisableKinectGpuReservation: 1 142 | xboxOneEnable7thCore: 1 143 | vrSettings: 144 | enable360StereoCapture: 0 145 | isWsaHolographicRemotingEnabled: 0 146 | enableFrameTimingStats: 0 147 | enableOpenGLProfilerGPURecorders: 1 148 | useHDRDisplay: 0 149 | D3DHDRBitDepth: 0 150 | m_ColorGamuts: 00000000 151 | targetPixelDensity: 30 152 | resolutionScalingMode: 0 153 | resetResolutionOnWindowResize: 0 154 | androidSupportedAspectRatio: 1 155 | androidMaxAspectRatio: 2.1 156 | applicationIdentifier: 157 | Standalone: com.UnityTechnologies.com.unity.template-starter-kit 158 | buildNumber: 159 | Standalone: 0 160 | iPhone: 0 161 | tvOS: 0 162 | overrideDefaultApplicationIdentifier: 1 163 | AndroidBundleVersionCode: 1 164 | AndroidMinSdkVersion: 22 165 | AndroidTargetSdkVersion: 0 166 | AndroidPreferredInstallLocation: 1 167 | aotOptions: 168 | stripEngineCode: 1 169 | iPhoneStrippingLevel: 0 170 | iPhoneScriptCallOptimization: 0 171 | ForceInternetPermission: 0 172 | ForceSDCardPermission: 0 173 | CreateWallpaper: 0 174 | APKExpansionFiles: 0 175 | keepLoadedShadersAlive: 0 176 | StripUnusedMeshComponents: 0 177 | strictShaderVariantMatching: 0 178 | VertexChannelCompressionMask: 4054 179 | iPhoneSdkVersion: 988 180 | iOSTargetOSVersionString: 12.0 181 | tvOSSdkVersion: 0 182 | tvOSRequireExtendedGameController: 0 183 | tvOSTargetOSVersionString: 12.0 184 | uIPrerenderedIcon: 0 185 | uIRequiresPersistentWiFi: 0 186 | uIRequiresFullScreen: 1 187 | uIStatusBarHidden: 1 188 | uIExitOnSuspend: 0 189 | uIStatusBarStyle: 0 190 | appleTVSplashScreen: {fileID: 0} 191 | appleTVSplashScreen2x: {fileID: 0} 192 | tvOSSmallIconLayers: [] 193 | tvOSSmallIconLayers2x: [] 194 | tvOSLargeIconLayers: [] 195 | tvOSLargeIconLayers2x: [] 196 | tvOSTopShelfImageLayers: [] 197 | tvOSTopShelfImageLayers2x: [] 198 | tvOSTopShelfImageWideLayers: [] 199 | tvOSTopShelfImageWideLayers2x: [] 200 | iOSLaunchScreenType: 0 201 | iOSLaunchScreenPortrait: {fileID: 0} 202 | iOSLaunchScreenLandscape: {fileID: 0} 203 | iOSLaunchScreenBackgroundColor: 204 | serializedVersion: 2 205 | rgba: 0 206 | iOSLaunchScreenFillPct: 100 207 | iOSLaunchScreenSize: 100 208 | iOSLaunchScreenCustomXibPath: 209 | iOSLaunchScreeniPadType: 0 210 | iOSLaunchScreeniPadImage: {fileID: 0} 211 | iOSLaunchScreeniPadBackgroundColor: 212 | serializedVersion: 2 213 | rgba: 0 214 | iOSLaunchScreeniPadFillPct: 100 215 | iOSLaunchScreeniPadSize: 100 216 | iOSLaunchScreeniPadCustomXibPath: 217 | iOSLaunchScreenCustomStoryboardPath: 218 | iOSLaunchScreeniPadCustomStoryboardPath: 219 | iOSDeviceRequirements: [] 220 | iOSURLSchemes: [] 221 | macOSURLSchemes: [] 222 | iOSBackgroundModes: 0 223 | iOSMetalForceHardShadows: 0 224 | metalEditorSupport: 1 225 | metalAPIValidation: 1 226 | iOSRenderExtraFrameOnPause: 0 227 | iosCopyPluginsCodeInsteadOfSymlink: 0 228 | appleDeveloperTeamID: 229 | iOSManualSigningProvisioningProfileID: 230 | tvOSManualSigningProvisioningProfileID: 231 | iOSManualSigningProvisioningProfileType: 0 232 | tvOSManualSigningProvisioningProfileType: 0 233 | appleEnableAutomaticSigning: 0 234 | iOSRequireARKit: 0 235 | iOSAutomaticallyDetectAndAddCapabilities: 1 236 | appleEnableProMotion: 0 237 | shaderPrecisionModel: 0 238 | clonedFromGUID: 3c72c65a16f0acb438eed22b8b16c24a 239 | templatePackageId: com.unity.template.urp-blank@2.0.3 240 | templateDefaultScene: Assets/Scenes/SampleScene.unity 241 | useCustomMainManifest: 0 242 | useCustomLauncherManifest: 0 243 | useCustomMainGradleTemplate: 0 244 | useCustomLauncherGradleManifest: 0 245 | useCustomBaseGradleTemplate: 0 246 | useCustomGradlePropertiesTemplate: 0 247 | useCustomGradleSettingsTemplate: 0 248 | useCustomProguardFile: 0 249 | AndroidTargetArchitectures: 1 250 | AndroidTargetDevices: 0 251 | AndroidSplashScreenScale: 0 252 | androidSplashScreen: {fileID: 0} 253 | AndroidKeystoreName: 254 | AndroidKeyaliasName: 255 | AndroidEnableArmv9SecurityFeatures: 0 256 | AndroidBuildApkPerCpuArchitecture: 0 257 | AndroidTVCompatibility: 0 258 | AndroidIsGame: 1 259 | AndroidEnableTango: 0 260 | androidEnableBanner: 1 261 | androidUseLowAccuracyLocation: 0 262 | androidUseCustomKeystore: 0 263 | m_AndroidBanners: 264 | - width: 320 265 | height: 180 266 | banner: {fileID: 0} 267 | androidGamepadSupportLevel: 0 268 | chromeosInputEmulation: 1 269 | AndroidMinifyRelease: 0 270 | AndroidMinifyDebug: 0 271 | AndroidValidateAppBundleSize: 1 272 | AndroidAppBundleSizeToValidate: 150 273 | m_BuildTargetIcons: [] 274 | m_BuildTargetPlatformIcons: 275 | - m_BuildTarget: iPhone 276 | m_Icons: 277 | - m_Textures: [] 278 | m_Width: 180 279 | m_Height: 180 280 | m_Kind: 0 281 | m_SubKind: iPhone 282 | - m_Textures: [] 283 | m_Width: 120 284 | m_Height: 120 285 | m_Kind: 0 286 | m_SubKind: iPhone 287 | - m_Textures: [] 288 | m_Width: 167 289 | m_Height: 167 290 | m_Kind: 0 291 | m_SubKind: iPad 292 | - m_Textures: [] 293 | m_Width: 152 294 | m_Height: 152 295 | m_Kind: 0 296 | m_SubKind: iPad 297 | - m_Textures: [] 298 | m_Width: 76 299 | m_Height: 76 300 | m_Kind: 0 301 | m_SubKind: iPad 302 | - m_Textures: [] 303 | m_Width: 120 304 | m_Height: 120 305 | m_Kind: 3 306 | m_SubKind: iPhone 307 | - m_Textures: [] 308 | m_Width: 80 309 | m_Height: 80 310 | m_Kind: 3 311 | m_SubKind: iPhone 312 | - m_Textures: [] 313 | m_Width: 80 314 | m_Height: 80 315 | m_Kind: 3 316 | m_SubKind: iPad 317 | - m_Textures: [] 318 | m_Width: 40 319 | m_Height: 40 320 | m_Kind: 3 321 | m_SubKind: iPad 322 | - m_Textures: [] 323 | m_Width: 87 324 | m_Height: 87 325 | m_Kind: 1 326 | m_SubKind: iPhone 327 | - m_Textures: [] 328 | m_Width: 58 329 | m_Height: 58 330 | m_Kind: 1 331 | m_SubKind: iPhone 332 | - m_Textures: [] 333 | m_Width: 29 334 | m_Height: 29 335 | m_Kind: 1 336 | m_SubKind: iPhone 337 | - m_Textures: [] 338 | m_Width: 58 339 | m_Height: 58 340 | m_Kind: 1 341 | m_SubKind: iPad 342 | - m_Textures: [] 343 | m_Width: 29 344 | m_Height: 29 345 | m_Kind: 1 346 | m_SubKind: iPad 347 | - m_Textures: [] 348 | m_Width: 60 349 | m_Height: 60 350 | m_Kind: 2 351 | m_SubKind: iPhone 352 | - m_Textures: [] 353 | m_Width: 40 354 | m_Height: 40 355 | m_Kind: 2 356 | m_SubKind: iPhone 357 | - m_Textures: [] 358 | m_Width: 40 359 | m_Height: 40 360 | m_Kind: 2 361 | m_SubKind: iPad 362 | - m_Textures: [] 363 | m_Width: 20 364 | m_Height: 20 365 | m_Kind: 2 366 | m_SubKind: iPad 367 | - m_Textures: [] 368 | m_Width: 1024 369 | m_Height: 1024 370 | m_Kind: 4 371 | m_SubKind: App Store 372 | - m_BuildTarget: Android 373 | m_Icons: 374 | - m_Textures: [] 375 | m_Width: 432 376 | m_Height: 432 377 | m_Kind: 2 378 | m_SubKind: 379 | - m_Textures: [] 380 | m_Width: 324 381 | m_Height: 324 382 | m_Kind: 2 383 | m_SubKind: 384 | - m_Textures: [] 385 | m_Width: 216 386 | m_Height: 216 387 | m_Kind: 2 388 | m_SubKind: 389 | - m_Textures: [] 390 | m_Width: 162 391 | m_Height: 162 392 | m_Kind: 2 393 | m_SubKind: 394 | - m_Textures: [] 395 | m_Width: 108 396 | m_Height: 108 397 | m_Kind: 2 398 | m_SubKind: 399 | - m_Textures: [] 400 | m_Width: 81 401 | m_Height: 81 402 | m_Kind: 2 403 | m_SubKind: 404 | - m_Textures: [] 405 | m_Width: 192 406 | m_Height: 192 407 | m_Kind: 1 408 | m_SubKind: 409 | - m_Textures: [] 410 | m_Width: 144 411 | m_Height: 144 412 | m_Kind: 1 413 | m_SubKind: 414 | - m_Textures: [] 415 | m_Width: 96 416 | m_Height: 96 417 | m_Kind: 1 418 | m_SubKind: 419 | - m_Textures: [] 420 | m_Width: 72 421 | m_Height: 72 422 | m_Kind: 1 423 | m_SubKind: 424 | - m_Textures: [] 425 | m_Width: 48 426 | m_Height: 48 427 | m_Kind: 1 428 | m_SubKind: 429 | - m_Textures: [] 430 | m_Width: 36 431 | m_Height: 36 432 | m_Kind: 1 433 | m_SubKind: 434 | - m_Textures: [] 435 | m_Width: 192 436 | m_Height: 192 437 | m_Kind: 0 438 | m_SubKind: 439 | - m_Textures: [] 440 | m_Width: 144 441 | m_Height: 144 442 | m_Kind: 0 443 | m_SubKind: 444 | - m_Textures: [] 445 | m_Width: 96 446 | m_Height: 96 447 | m_Kind: 0 448 | m_SubKind: 449 | - m_Textures: [] 450 | m_Width: 72 451 | m_Height: 72 452 | m_Kind: 0 453 | m_SubKind: 454 | - m_Textures: [] 455 | m_Width: 48 456 | m_Height: 48 457 | m_Kind: 0 458 | m_SubKind: 459 | - m_Textures: [] 460 | m_Width: 36 461 | m_Height: 36 462 | m_Kind: 0 463 | m_SubKind: 464 | - m_BuildTarget: tvOS 465 | m_Icons: 466 | - m_Textures: [] 467 | m_Width: 1280 468 | m_Height: 768 469 | m_Kind: 0 470 | m_SubKind: 471 | - m_Textures: [] 472 | m_Width: 800 473 | m_Height: 480 474 | m_Kind: 0 475 | m_SubKind: 476 | - m_Textures: [] 477 | m_Width: 400 478 | m_Height: 240 479 | m_Kind: 0 480 | m_SubKind: 481 | - m_Textures: [] 482 | m_Width: 4640 483 | m_Height: 1440 484 | m_Kind: 1 485 | m_SubKind: 486 | - m_Textures: [] 487 | m_Width: 2320 488 | m_Height: 720 489 | m_Kind: 1 490 | m_SubKind: 491 | - m_Textures: [] 492 | m_Width: 3840 493 | m_Height: 1440 494 | m_Kind: 1 495 | m_SubKind: 496 | - m_Textures: [] 497 | m_Width: 1920 498 | m_Height: 720 499 | m_Kind: 1 500 | m_SubKind: 501 | m_BuildTargetBatching: [] 502 | m_BuildTargetShaderSettings: [] 503 | m_BuildTargetGraphicsJobs: [] 504 | m_BuildTargetGraphicsJobMode: [] 505 | m_BuildTargetGraphicsAPIs: 506 | - m_BuildTarget: iOSSupport 507 | m_APIs: 10000000 508 | m_Automatic: 1 509 | - m_BuildTarget: AndroidPlayer 510 | m_APIs: 0b00000008000000 511 | m_Automatic: 0 512 | m_BuildTargetVRSettings: [] 513 | m_DefaultShaderChunkSizeInMB: 16 514 | m_DefaultShaderChunkCount: 0 515 | openGLRequireES31: 0 516 | openGLRequireES31AEP: 0 517 | openGLRequireES32: 0 518 | m_TemplateCustomTags: {} 519 | mobileMTRendering: 520 | Android: 1 521 | iPhone: 1 522 | tvOS: 1 523 | m_BuildTargetGroupLightmapEncodingQuality: [] 524 | m_BuildTargetGroupHDRCubemapEncodingQuality: [] 525 | m_BuildTargetGroupLightmapSettings: [] 526 | m_BuildTargetGroupLoadStoreDebugModeSettings: [] 527 | m_BuildTargetNormalMapEncoding: [] 528 | m_BuildTargetDefaultTextureCompressionFormat: [] 529 | playModeTestRunnerEnabled: 0 530 | runPlayModeTestAsEditModeTest: 0 531 | actionOnDotNetUnhandledException: 1 532 | enableInternalProfiler: 0 533 | logObjCUncaughtExceptions: 1 534 | enableCrashReportAPI: 0 535 | cameraUsageDescription: 536 | locationUsageDescription: 537 | microphoneUsageDescription: 538 | bluetoothUsageDescription: 539 | macOSTargetOSVersion: 10.13.0 540 | switchNMETAOverride: 541 | switchNetLibKey: 542 | switchSocketMemoryPoolSize: 6144 543 | switchSocketAllocatorPoolSize: 128 544 | switchSocketConcurrencyLimit: 14 545 | switchScreenResolutionBehavior: 2 546 | switchUseCPUProfiler: 0 547 | switchUseGOLDLinker: 0 548 | switchLTOSetting: 0 549 | switchApplicationID: 0x01004b9000490000 550 | switchNSODependencies: 551 | switchCompilerFlags: 552 | switchTitleNames_0: 553 | switchTitleNames_1: 554 | switchTitleNames_2: 555 | switchTitleNames_3: 556 | switchTitleNames_4: 557 | switchTitleNames_5: 558 | switchTitleNames_6: 559 | switchTitleNames_7: 560 | switchTitleNames_8: 561 | switchTitleNames_9: 562 | switchTitleNames_10: 563 | switchTitleNames_11: 564 | switchTitleNames_12: 565 | switchTitleNames_13: 566 | switchTitleNames_14: 567 | switchTitleNames_15: 568 | switchPublisherNames_0: 569 | switchPublisherNames_1: 570 | switchPublisherNames_2: 571 | switchPublisherNames_3: 572 | switchPublisherNames_4: 573 | switchPublisherNames_5: 574 | switchPublisherNames_6: 575 | switchPublisherNames_7: 576 | switchPublisherNames_8: 577 | switchPublisherNames_9: 578 | switchPublisherNames_10: 579 | switchPublisherNames_11: 580 | switchPublisherNames_12: 581 | switchPublisherNames_13: 582 | switchPublisherNames_14: 583 | switchPublisherNames_15: 584 | switchIcons_0: {fileID: 0} 585 | switchIcons_1: {fileID: 0} 586 | switchIcons_2: {fileID: 0} 587 | switchIcons_3: {fileID: 0} 588 | switchIcons_4: {fileID: 0} 589 | switchIcons_5: {fileID: 0} 590 | switchIcons_6: {fileID: 0} 591 | switchIcons_7: {fileID: 0} 592 | switchIcons_8: {fileID: 0} 593 | switchIcons_9: {fileID: 0} 594 | switchIcons_10: {fileID: 0} 595 | switchIcons_11: {fileID: 0} 596 | switchIcons_12: {fileID: 0} 597 | switchIcons_13: {fileID: 0} 598 | switchIcons_14: {fileID: 0} 599 | switchIcons_15: {fileID: 0} 600 | switchSmallIcons_0: {fileID: 0} 601 | switchSmallIcons_1: {fileID: 0} 602 | switchSmallIcons_2: {fileID: 0} 603 | switchSmallIcons_3: {fileID: 0} 604 | switchSmallIcons_4: {fileID: 0} 605 | switchSmallIcons_5: {fileID: 0} 606 | switchSmallIcons_6: {fileID: 0} 607 | switchSmallIcons_7: {fileID: 0} 608 | switchSmallIcons_8: {fileID: 0} 609 | switchSmallIcons_9: {fileID: 0} 610 | switchSmallIcons_10: {fileID: 0} 611 | switchSmallIcons_11: {fileID: 0} 612 | switchSmallIcons_12: {fileID: 0} 613 | switchSmallIcons_13: {fileID: 0} 614 | switchSmallIcons_14: {fileID: 0} 615 | switchSmallIcons_15: {fileID: 0} 616 | switchManualHTML: 617 | switchAccessibleURLs: 618 | switchLegalInformation: 619 | switchMainThreadStackSize: 1048576 620 | switchPresenceGroupId: 621 | switchLogoHandling: 0 622 | switchReleaseVersion: 0 623 | switchDisplayVersion: 1.0.0 624 | switchStartupUserAccount: 0 625 | switchSupportedLanguagesMask: 0 626 | switchLogoType: 0 627 | switchApplicationErrorCodeCategory: 628 | switchUserAccountSaveDataSize: 0 629 | switchUserAccountSaveDataJournalSize: 0 630 | switchApplicationAttribute: 0 631 | switchCardSpecSize: -1 632 | switchCardSpecClock: -1 633 | switchRatingsMask: 0 634 | switchRatingsInt_0: 0 635 | switchRatingsInt_1: 0 636 | switchRatingsInt_2: 0 637 | switchRatingsInt_3: 0 638 | switchRatingsInt_4: 0 639 | switchRatingsInt_5: 0 640 | switchRatingsInt_6: 0 641 | switchRatingsInt_7: 0 642 | switchRatingsInt_8: 0 643 | switchRatingsInt_9: 0 644 | switchRatingsInt_10: 0 645 | switchRatingsInt_11: 0 646 | switchRatingsInt_12: 0 647 | switchLocalCommunicationIds_0: 648 | switchLocalCommunicationIds_1: 649 | switchLocalCommunicationIds_2: 650 | switchLocalCommunicationIds_3: 651 | switchLocalCommunicationIds_4: 652 | switchLocalCommunicationIds_5: 653 | switchLocalCommunicationIds_6: 654 | switchLocalCommunicationIds_7: 655 | switchParentalControl: 0 656 | switchAllowsScreenshot: 1 657 | switchAllowsVideoCapturing: 1 658 | switchAllowsRuntimeAddOnContentInstall: 0 659 | switchDataLossConfirmation: 0 660 | switchUserAccountLockEnabled: 0 661 | switchSystemResourceMemory: 16777216 662 | switchSupportedNpadStyles: 22 663 | switchNativeFsCacheSize: 32 664 | switchIsHoldTypeHorizontal: 0 665 | switchSupportedNpadCount: 8 666 | switchEnableTouchScreen: 1 667 | switchSocketConfigEnabled: 0 668 | switchTcpInitialSendBufferSize: 32 669 | switchTcpInitialReceiveBufferSize: 64 670 | switchTcpAutoSendBufferSizeMax: 256 671 | switchTcpAutoReceiveBufferSizeMax: 256 672 | switchUdpSendBufferSize: 9 673 | switchUdpReceiveBufferSize: 42 674 | switchSocketBufferEfficiency: 4 675 | switchSocketInitializeEnabled: 1 676 | switchNetworkInterfaceManagerInitializeEnabled: 1 677 | switchPlayerConnectionEnabled: 1 678 | switchUseNewStyleFilepaths: 0 679 | switchUseLegacyFmodPriorities: 0 680 | switchUseMicroSleepForYield: 1 681 | switchEnableRamDiskSupport: 0 682 | switchMicroSleepForYieldTime: 25 683 | switchRamDiskSpaceSize: 12 684 | ps4NPAgeRating: 12 685 | ps4NPTitleSecret: 686 | ps4NPTrophyPackPath: 687 | ps4ParentalLevel: 11 688 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 689 | ps4Category: 0 690 | ps4MasterVersion: 01.00 691 | ps4AppVersion: 01.00 692 | ps4AppType: 0 693 | ps4ParamSfxPath: 694 | ps4VideoOutPixelFormat: 0 695 | ps4VideoOutInitialWidth: 1920 696 | ps4VideoOutBaseModeInitialWidth: 1920 697 | ps4VideoOutReprojectionRate: 60 698 | ps4PronunciationXMLPath: 699 | ps4PronunciationSIGPath: 700 | ps4BackgroundImagePath: 701 | ps4StartupImagePath: 702 | ps4StartupImagesFolder: 703 | ps4IconImagesFolder: 704 | ps4SaveDataImagePath: 705 | ps4SdkOverride: 706 | ps4BGMPath: 707 | ps4ShareFilePath: 708 | ps4ShareOverlayImagePath: 709 | ps4PrivacyGuardImagePath: 710 | ps4ExtraSceSysFile: 711 | ps4NPtitleDatPath: 712 | ps4RemotePlayKeyAssignment: -1 713 | ps4RemotePlayKeyMappingDir: 714 | ps4PlayTogetherPlayerCount: 0 715 | ps4EnterButtonAssignment: 2 716 | ps4ApplicationParam1: 0 717 | ps4ApplicationParam2: 0 718 | ps4ApplicationParam3: 0 719 | ps4ApplicationParam4: 0 720 | ps4DownloadDataSize: 0 721 | ps4GarlicHeapSize: 2048 722 | ps4ProGarlicHeapSize: 2560 723 | playerPrefsMaxSize: 32768 724 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 725 | ps4pnSessions: 1 726 | ps4pnPresence: 1 727 | ps4pnFriends: 1 728 | ps4pnGameCustomData: 1 729 | playerPrefsSupport: 0 730 | enableApplicationExit: 0 731 | resetTempFolder: 1 732 | restrictedAudioUsageRights: 0 733 | ps4UseResolutionFallback: 0 734 | ps4ReprojectionSupport: 0 735 | ps4UseAudio3dBackend: 0 736 | ps4UseLowGarlicFragmentationMode: 1 737 | ps4SocialScreenEnabled: 0 738 | ps4ScriptOptimizationLevel: 2 739 | ps4Audio3dVirtualSpeakerCount: 14 740 | ps4attribCpuUsage: 0 741 | ps4PatchPkgPath: 742 | ps4PatchLatestPkgPath: 743 | ps4PatchChangeinfoPath: 744 | ps4PatchDayOne: 0 745 | ps4attribUserManagement: 0 746 | ps4attribMoveSupport: 0 747 | ps4attrib3DSupport: 0 748 | ps4attribShareSupport: 0 749 | ps4attribExclusiveVR: 0 750 | ps4disableAutoHideSplash: 0 751 | ps4videoRecordingFeaturesUsed: 0 752 | ps4contentSearchFeaturesUsed: 0 753 | ps4CompatibilityPS5: 0 754 | ps4AllowPS5Detection: 0 755 | ps4GPU800MHz: 1 756 | ps4attribEyeToEyeDistanceSettingVR: 0 757 | ps4IncludedModules: [] 758 | ps4attribVROutputEnabled: 0 759 | monoEnv: 760 | splashScreenBackgroundSourceLandscape: {fileID: 0} 761 | splashScreenBackgroundSourcePortrait: {fileID: 0} 762 | blurSplashScreenBackground: 1 763 | spritePackerPolicy: 764 | webGLMemorySize: 32 765 | webGLExceptionSupport: 1 766 | webGLNameFilesAsHashes: 0 767 | webGLShowDiagnostics: 0 768 | webGLDataCaching: 1 769 | webGLDebugSymbols: 0 770 | webGLEmscriptenArgs: 771 | webGLModulesDirectory: 772 | webGLTemplate: APPLICATION:Default 773 | webGLAnalyzeBuildSize: 0 774 | webGLUseEmbeddedResources: 0 775 | webGLCompressionFormat: 0 776 | webGLWasmArithmeticExceptions: 0 777 | webGLLinkerTarget: 1 778 | webGLThreadsSupport: 0 779 | webGLDecompressionFallback: 0 780 | webGLInitialMemorySize: 32 781 | webGLMaximumMemorySize: 2048 782 | webGLMemoryGrowthMode: 2 783 | webGLMemoryLinearGrowthStep: 16 784 | webGLMemoryGeometricGrowthStep: 0.2 785 | webGLMemoryGeometricGrowthCap: 96 786 | webGLPowerPreference: 2 787 | scriptingDefineSymbols: {} 788 | additionalCompilerArguments: {} 789 | platformArchitecture: {} 790 | scriptingBackend: {} 791 | il2cppCompilerConfiguration: {} 792 | il2cppCodeGeneration: {} 793 | managedStrippingLevel: 794 | EmbeddedLinux: 1 795 | GameCoreScarlett: 1 796 | GameCoreXboxOne: 1 797 | Nintendo Switch: 1 798 | PS4: 1 799 | PS5: 1 800 | QNX: 1 801 | Stadia: 1 802 | WebGL: 1 803 | Windows Store Apps: 1 804 | XboxOne: 1 805 | iPhone: 1 806 | tvOS: 1 807 | incrementalIl2cppBuild: {} 808 | suppressCommonWarnings: 1 809 | allowUnsafeCode: 0 810 | useDeterministicCompilation: 1 811 | selectedPlatform: 0 812 | additionalIl2CppArgs: 813 | scriptingRuntimeVersion: 1 814 | gcIncremental: 0 815 | gcWBarrierValidation: 0 816 | apiCompatibilityLevelPerPlatform: {} 817 | m_RenderingPath: 1 818 | m_MobileRenderingPath: 1 819 | metroPackageName: com.unity.template-starter-kit 820 | metroPackageVersion: 821 | metroCertificatePath: 822 | metroCertificatePassword: 823 | metroCertificateSubject: 824 | metroCertificateIssuer: 825 | metroCertificateNotAfter: 0000000000000000 826 | metroApplicationDescription: com.unity.template-starter-kit 827 | wsaImages: {} 828 | metroTileShortName: 829 | metroTileShowName: 0 830 | metroMediumTileShowName: 0 831 | metroLargeTileShowName: 0 832 | metroWideTileShowName: 0 833 | metroSupportStreamingInstall: 0 834 | metroLastRequiredScene: 0 835 | metroDefaultTileSize: 1 836 | metroTileForegroundText: 2 837 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 838 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 839 | a: 1} 840 | metroSplashScreenUseBackgroundColor: 0 841 | platformCapabilities: {} 842 | metroTargetDeviceFamilies: {} 843 | metroFTAName: 844 | metroFTAFileTypes: [] 845 | metroProtocolName: 846 | vcxProjDefaultLanguage: 847 | XboxOneProductId: 848 | XboxOneUpdateKey: 849 | XboxOneSandboxId: 850 | XboxOneContentId: 851 | XboxOneTitleId: 852 | XboxOneSCId: 853 | XboxOneGameOsOverridePath: 854 | XboxOnePackagingOverridePath: 855 | XboxOneAppManifestOverridePath: 856 | XboxOneVersion: 1.0.0.0 857 | XboxOnePackageEncryption: 0 858 | XboxOnePackageUpdateGranularity: 2 859 | XboxOneDescription: 860 | XboxOneLanguage: 861 | - enus 862 | XboxOneCapability: [] 863 | XboxOneGameRating: {} 864 | XboxOneIsContentPackage: 0 865 | XboxOneEnhancedXboxCompatibilityMode: 0 866 | XboxOneEnableGPUVariability: 1 867 | XboxOneSockets: {} 868 | XboxOneSplashScreen: {fileID: 0} 869 | XboxOneAllowedProductIds: [] 870 | XboxOnePersistentLocalStorageSize: 0 871 | XboxOneXTitleMemory: 8 872 | XboxOneOverrideIdentityName: 873 | XboxOneOverrideIdentityPublisher: 874 | vrEditorSettings: {} 875 | cloudServicesEnabled: {} 876 | luminIcon: 877 | m_Name: 878 | m_ModelFolderPath: 879 | m_PortalFolderPath: 880 | luminCert: 881 | m_CertPath: 882 | m_SignPackage: 1 883 | luminIsChannelApp: 0 884 | luminVersion: 885 | m_VersionCode: 1 886 | m_VersionName: 887 | hmiPlayerDataPath: 888 | hmiForceSRGBBlit: 1 889 | embeddedLinuxEnableGamepadInput: 1 890 | hmiLogStartupTiming: 0 891 | hmiCpuConfiguration: 892 | apiCompatibilityLevel: 6 893 | activeInputHandler: 2 894 | windowsGamepadBackendHint: 0 895 | cloudProjectId: 896 | framebufferDepthMemorylessMode: 0 897 | qualitySettingsNames: [] 898 | projectName: 899 | organizationId: 900 | cloudEnabled: 0 901 | legacyClampBlendShapeWeights: 0 902 | hmiLoadingImage: {fileID: 0} 903 | virtualTexturingSupportEnabled: 0 904 | insecureHttpOption: 0 905 | -------------------------------------------------------------------------------- /Assets/_Project/Settings/PlayerInputActions.inputactions: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PlayerInputActions", 3 | "maps": [ 4 | { 5 | "name": "Player", 6 | "id": "d1ecfd66-2984-4b4a-a328-1f9593c62151", 7 | "actions": [ 8 | { 9 | "name": "Move", 10 | "type": "Value", 11 | "id": "9385a900-df7c-4fb7-b3fb-7323302e92e4", 12 | "expectedControlType": "Vector2", 13 | "processors": "", 14 | "interactions": "", 15 | "initialStateCheck": true 16 | }, 17 | { 18 | "name": "Aim", 19 | "type": "Value", 20 | "id": "42e2450d-7113-477d-a586-4315fdd9cf0b", 21 | "expectedControlType": "Vector2", 22 | "processors": "", 23 | "interactions": "", 24 | "initialStateCheck": true 25 | }, 26 | { 27 | "name": "Fire", 28 | "type": "Button", 29 | "id": "77b799e8-aba6-4e31-9427-589aec44d409", 30 | "expectedControlType": "Button", 31 | "processors": "", 32 | "interactions": "", 33 | "initialStateCheck": false 34 | } 35 | ], 36 | "bindings": [ 37 | { 38 | "name": "", 39 | "id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403", 40 | "path": "/leftStick", 41 | "interactions": "", 42 | "processors": "", 43 | "groups": ";Gamepad", 44 | "action": "Move", 45 | "isComposite": false, 46 | "isPartOfComposite": false 47 | }, 48 | { 49 | "name": "WASD", 50 | "id": "00ca640b-d935-4593-8157-c05846ea39b3", 51 | "path": "Dpad", 52 | "interactions": "", 53 | "processors": "", 54 | "groups": "", 55 | "action": "Move", 56 | "isComposite": true, 57 | "isPartOfComposite": false 58 | }, 59 | { 60 | "name": "up", 61 | "id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9", 62 | "path": "/w", 63 | "interactions": "", 64 | "processors": "", 65 | "groups": ";Keyboard&Mouse", 66 | "action": "Move", 67 | "isComposite": false, 68 | "isPartOfComposite": true 69 | }, 70 | { 71 | "name": "up", 72 | "id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9", 73 | "path": "/upArrow", 74 | "interactions": "", 75 | "processors": "", 76 | "groups": ";Keyboard&Mouse", 77 | "action": "Move", 78 | "isComposite": false, 79 | "isPartOfComposite": true 80 | }, 81 | { 82 | "name": "down", 83 | "id": "320bffee-a40b-4347-ac70-c210eb8bc73a", 84 | "path": "/s", 85 | "interactions": "", 86 | "processors": "", 87 | "groups": ";Keyboard&Mouse", 88 | "action": "Move", 89 | "isComposite": false, 90 | "isPartOfComposite": true 91 | }, 92 | { 93 | "name": "down", 94 | "id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1", 95 | "path": "/downArrow", 96 | "interactions": "", 97 | "processors": "", 98 | "groups": ";Keyboard&Mouse", 99 | "action": "Move", 100 | "isComposite": false, 101 | "isPartOfComposite": true 102 | }, 103 | { 104 | "name": "left", 105 | "id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc", 106 | "path": "/a", 107 | "interactions": "", 108 | "processors": "", 109 | "groups": ";Keyboard&Mouse", 110 | "action": "Move", 111 | "isComposite": false, 112 | "isPartOfComposite": true 113 | }, 114 | { 115 | "name": "left", 116 | "id": "2e46982e-44cc-431b-9f0b-c11910bf467a", 117 | "path": "/leftArrow", 118 | "interactions": "", 119 | "processors": "", 120 | "groups": ";Keyboard&Mouse", 121 | "action": "Move", 122 | "isComposite": false, 123 | "isPartOfComposite": true 124 | }, 125 | { 126 | "name": "right", 127 | "id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400", 128 | "path": "/d", 129 | "interactions": "", 130 | "processors": "", 131 | "groups": ";Keyboard&Mouse", 132 | "action": "Move", 133 | "isComposite": false, 134 | "isPartOfComposite": true 135 | }, 136 | { 137 | "name": "right", 138 | "id": "77bff152-3580-4b21-b6de-dcd0c7e41164", 139 | "path": "/rightArrow", 140 | "interactions": "", 141 | "processors": "", 142 | "groups": ";Keyboard&Mouse", 143 | "action": "Move", 144 | "isComposite": false, 145 | "isPartOfComposite": true 146 | }, 147 | { 148 | "name": "", 149 | "id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8", 150 | "path": "/{Primary2DAxis}", 151 | "interactions": "", 152 | "processors": "", 153 | "groups": "XR", 154 | "action": "Move", 155 | "isComposite": false, 156 | "isPartOfComposite": false 157 | }, 158 | { 159 | "name": "", 160 | "id": "3ea4d645-4504-4529-b061-ab81934c3752", 161 | "path": "/stick", 162 | "interactions": "", 163 | "processors": "", 164 | "groups": "Joystick", 165 | "action": "Move", 166 | "isComposite": false, 167 | "isPartOfComposite": false 168 | }, 169 | { 170 | "name": "", 171 | "id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235", 172 | "path": "/rightStick", 173 | "interactions": "", 174 | "processors": "", 175 | "groups": ";Gamepad", 176 | "action": "Aim", 177 | "isComposite": false, 178 | "isPartOfComposite": false 179 | }, 180 | { 181 | "name": "", 182 | "id": "8c8e490b-c610-4785-884f-f04217b23ca4", 183 | "path": "/delta", 184 | "interactions": "", 185 | "processors": "", 186 | "groups": ";Keyboard&Mouse;Touch", 187 | "action": "Aim", 188 | "isComposite": false, 189 | "isPartOfComposite": false 190 | }, 191 | { 192 | "name": "", 193 | "id": "3e5f5442-8668-4b27-a940-df99bad7e831", 194 | "path": "/{Hatswitch}", 195 | "interactions": "", 196 | "processors": "", 197 | "groups": "Joystick", 198 | "action": "Aim", 199 | "isComposite": false, 200 | "isPartOfComposite": false 201 | }, 202 | { 203 | "name": "", 204 | "id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91", 205 | "path": "/rightTrigger", 206 | "interactions": "", 207 | "processors": "", 208 | "groups": ";Gamepad", 209 | "action": "Fire", 210 | "isComposite": false, 211 | "isPartOfComposite": false 212 | }, 213 | { 214 | "name": "", 215 | "id": "05f6913d-c316-48b2-a6bb-e225f14c7960", 216 | "path": "/leftButton", 217 | "interactions": "", 218 | "processors": "", 219 | "groups": ";Keyboard&Mouse", 220 | "action": "Fire", 221 | "isComposite": false, 222 | "isPartOfComposite": false 223 | }, 224 | { 225 | "name": "", 226 | "id": "886e731e-7071-4ae4-95c0-e61739dad6fd", 227 | "path": "/primaryTouch/tap", 228 | "interactions": "", 229 | "processors": "", 230 | "groups": ";Touch", 231 | "action": "Fire", 232 | "isComposite": false, 233 | "isPartOfComposite": false 234 | }, 235 | { 236 | "name": "", 237 | "id": "ee3d0cd2-254e-47a7-a8cb-bc94d9658c54", 238 | "path": "/trigger", 239 | "interactions": "", 240 | "processors": "", 241 | "groups": "Joystick", 242 | "action": "Fire", 243 | "isComposite": false, 244 | "isPartOfComposite": false 245 | }, 246 | { 247 | "name": "", 248 | "id": "8255d333-5683-4943-a58a-ccb207ff1dce", 249 | "path": "/{PrimaryAction}", 250 | "interactions": "", 251 | "processors": "", 252 | "groups": "XR", 253 | "action": "Fire", 254 | "isComposite": false, 255 | "isPartOfComposite": false 256 | } 257 | ] 258 | }, 259 | { 260 | "name": "UI", 261 | "id": "3214853a-a776-4d27-951a-2c6f8668676b", 262 | "actions": [ 263 | { 264 | "name": "Navigate", 265 | "type": "PassThrough", 266 | "id": "88fa6c76-45fe-4dbb-97dc-36aa31d2f1fc", 267 | "expectedControlType": "Vector2", 268 | "processors": "", 269 | "interactions": "", 270 | "initialStateCheck": false 271 | }, 272 | { 273 | "name": "Submit", 274 | "type": "Button", 275 | "id": "c0c14ea7-0bcb-4e52-8607-86d2bdb904e9", 276 | "expectedControlType": "Button", 277 | "processors": "", 278 | "interactions": "", 279 | "initialStateCheck": false 280 | }, 281 | { 282 | "name": "Cancel", 283 | "type": "Button", 284 | "id": "5de83152-4f66-4e03-9012-143bfa2470ed", 285 | "expectedControlType": "Button", 286 | "processors": "", 287 | "interactions": "", 288 | "initialStateCheck": false 289 | }, 290 | { 291 | "name": "Point", 292 | "type": "PassThrough", 293 | "id": "a9ec0bd7-bb33-4bdd-aa29-1f8d7110f7fc", 294 | "expectedControlType": "Vector2", 295 | "processors": "", 296 | "interactions": "", 297 | "initialStateCheck": true 298 | }, 299 | { 300 | "name": "Click", 301 | "type": "PassThrough", 302 | "id": "aa76c878-d5a7-400e-9226-5c10573e1e2f", 303 | "expectedControlType": "Button", 304 | "processors": "", 305 | "interactions": "", 306 | "initialStateCheck": true 307 | }, 308 | { 309 | "name": "ScrollWheel", 310 | "type": "PassThrough", 311 | "id": "22f53067-569d-4f7a-8964-f81fef609b18", 312 | "expectedControlType": "Vector2", 313 | "processors": "", 314 | "interactions": "", 315 | "initialStateCheck": false 316 | }, 317 | { 318 | "name": "MiddleClick", 319 | "type": "PassThrough", 320 | "id": "16386cf0-e831-40fd-af0f-1017e7df9277", 321 | "expectedControlType": "Button", 322 | "processors": "", 323 | "interactions": "", 324 | "initialStateCheck": false 325 | }, 326 | { 327 | "name": "RightClick", 328 | "type": "PassThrough", 329 | "id": "41e9f60f-757b-47bf-92d8-26f5110abcd3", 330 | "expectedControlType": "Button", 331 | "processors": "", 332 | "interactions": "", 333 | "initialStateCheck": false 334 | }, 335 | { 336 | "name": "TrackedDevicePosition", 337 | "type": "PassThrough", 338 | "id": "81867f71-88fd-47eb-a9f1-d7a77c22cc00", 339 | "expectedControlType": "Vector3", 340 | "processors": "", 341 | "interactions": "", 342 | "initialStateCheck": false 343 | }, 344 | { 345 | "name": "TrackedDeviceOrientation", 346 | "type": "PassThrough", 347 | "id": "2b183497-7cb8-40cb-8dcc-dd90f3e37e4c", 348 | "expectedControlType": "Quaternion", 349 | "processors": "", 350 | "interactions": "", 351 | "initialStateCheck": false 352 | } 353 | ], 354 | "bindings": [ 355 | { 356 | "name": "Gamepad", 357 | "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd", 358 | "path": "2DVector", 359 | "interactions": "", 360 | "processors": "", 361 | "groups": "", 362 | "action": "Navigate", 363 | "isComposite": true, 364 | "isPartOfComposite": false 365 | }, 366 | { 367 | "name": "up", 368 | "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf", 369 | "path": "/leftStick/up", 370 | "interactions": "", 371 | "processors": "", 372 | "groups": ";Gamepad", 373 | "action": "Navigate", 374 | "isComposite": false, 375 | "isPartOfComposite": true 376 | }, 377 | { 378 | "name": "up", 379 | "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81", 380 | "path": "/rightStick/up", 381 | "interactions": "", 382 | "processors": "", 383 | "groups": ";Gamepad", 384 | "action": "Navigate", 385 | "isComposite": false, 386 | "isPartOfComposite": true 387 | }, 388 | { 389 | "name": "down", 390 | "id": "2db08d65-c5fb-421b-983f-c71163608d67", 391 | "path": "/leftStick/down", 392 | "interactions": "", 393 | "processors": "", 394 | "groups": ";Gamepad", 395 | "action": "Navigate", 396 | "isComposite": false, 397 | "isPartOfComposite": true 398 | }, 399 | { 400 | "name": "down", 401 | "id": "58748904-2ea9-4a80-8579-b500e6a76df8", 402 | "path": "/rightStick/down", 403 | "interactions": "", 404 | "processors": "", 405 | "groups": ";Gamepad", 406 | "action": "Navigate", 407 | "isComposite": false, 408 | "isPartOfComposite": true 409 | }, 410 | { 411 | "name": "left", 412 | "id": "8ba04515-75aa-45de-966d-393d9bbd1c14", 413 | "path": "/leftStick/left", 414 | "interactions": "", 415 | "processors": "", 416 | "groups": ";Gamepad", 417 | "action": "Navigate", 418 | "isComposite": false, 419 | "isPartOfComposite": true 420 | }, 421 | { 422 | "name": "left", 423 | "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921", 424 | "path": "/rightStick/left", 425 | "interactions": "", 426 | "processors": "", 427 | "groups": ";Gamepad", 428 | "action": "Navigate", 429 | "isComposite": false, 430 | "isPartOfComposite": true 431 | }, 432 | { 433 | "name": "right", 434 | "id": "fcd248ae-a788-4676-a12e-f4d81205600b", 435 | "path": "/leftStick/right", 436 | "interactions": "", 437 | "processors": "", 438 | "groups": ";Gamepad", 439 | "action": "Navigate", 440 | "isComposite": false, 441 | "isPartOfComposite": true 442 | }, 443 | { 444 | "name": "right", 445 | "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20", 446 | "path": "/rightStick/right", 447 | "interactions": "", 448 | "processors": "", 449 | "groups": ";Gamepad", 450 | "action": "Navigate", 451 | "isComposite": false, 452 | "isPartOfComposite": true 453 | }, 454 | { 455 | "name": "", 456 | "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90", 457 | "path": "/dpad", 458 | "interactions": "", 459 | "processors": "", 460 | "groups": ";Gamepad", 461 | "action": "Navigate", 462 | "isComposite": false, 463 | "isPartOfComposite": false 464 | }, 465 | { 466 | "name": "Joystick", 467 | "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9", 468 | "path": "2DVector", 469 | "interactions": "", 470 | "processors": "", 471 | "groups": "", 472 | "action": "Navigate", 473 | "isComposite": true, 474 | "isPartOfComposite": false 475 | }, 476 | { 477 | "name": "up", 478 | "id": "3db53b26-6601-41be-9887-63ac74e79d19", 479 | "path": "/stick/up", 480 | "interactions": "", 481 | "processors": "", 482 | "groups": "Joystick", 483 | "action": "Navigate", 484 | "isComposite": false, 485 | "isPartOfComposite": true 486 | }, 487 | { 488 | "name": "down", 489 | "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f", 490 | "path": "/stick/down", 491 | "interactions": "", 492 | "processors": "", 493 | "groups": "Joystick", 494 | "action": "Navigate", 495 | "isComposite": false, 496 | "isPartOfComposite": true 497 | }, 498 | { 499 | "name": "left", 500 | "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835", 501 | "path": "/stick/left", 502 | "interactions": "", 503 | "processors": "", 504 | "groups": "Joystick", 505 | "action": "Navigate", 506 | "isComposite": false, 507 | "isPartOfComposite": true 508 | }, 509 | { 510 | "name": "right", 511 | "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc", 512 | "path": "/stick/right", 513 | "interactions": "", 514 | "processors": "", 515 | "groups": "Joystick", 516 | "action": "Navigate", 517 | "isComposite": false, 518 | "isPartOfComposite": true 519 | }, 520 | { 521 | "name": "Keyboard", 522 | "id": "ff527021-f211-4c02-933e-5976594c46ed", 523 | "path": "2DVector", 524 | "interactions": "", 525 | "processors": "", 526 | "groups": "", 527 | "action": "Navigate", 528 | "isComposite": true, 529 | "isPartOfComposite": false 530 | }, 531 | { 532 | "name": "up", 533 | "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0", 534 | "path": "/w", 535 | "interactions": "", 536 | "processors": "", 537 | "groups": "Keyboard&Mouse", 538 | "action": "Navigate", 539 | "isComposite": false, 540 | "isPartOfComposite": true 541 | }, 542 | { 543 | "name": "up", 544 | "id": "eb480147-c587-4a33-85ed-eb0ab9942c43", 545 | "path": "/upArrow", 546 | "interactions": "", 547 | "processors": "", 548 | "groups": "Keyboard&Mouse", 549 | "action": "Navigate", 550 | "isComposite": false, 551 | "isPartOfComposite": true 552 | }, 553 | { 554 | "name": "down", 555 | "id": "2bf42165-60bc-42ca-8072-8c13ab40239b", 556 | "path": "/s", 557 | "interactions": "", 558 | "processors": "", 559 | "groups": "Keyboard&Mouse", 560 | "action": "Navigate", 561 | "isComposite": false, 562 | "isPartOfComposite": true 563 | }, 564 | { 565 | "name": "down", 566 | "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac", 567 | "path": "/downArrow", 568 | "interactions": "", 569 | "processors": "", 570 | "groups": "Keyboard&Mouse", 571 | "action": "Navigate", 572 | "isComposite": false, 573 | "isPartOfComposite": true 574 | }, 575 | { 576 | "name": "left", 577 | "id": "74214943-c580-44e4-98eb-ad7eebe17902", 578 | "path": "/a", 579 | "interactions": "", 580 | "processors": "", 581 | "groups": "Keyboard&Mouse", 582 | "action": "Navigate", 583 | "isComposite": false, 584 | "isPartOfComposite": true 585 | }, 586 | { 587 | "name": "left", 588 | "id": "cea9b045-a000-445b-95b8-0c171af70a3b", 589 | "path": "/leftArrow", 590 | "interactions": "", 591 | "processors": "", 592 | "groups": "Keyboard&Mouse", 593 | "action": "Navigate", 594 | "isComposite": false, 595 | "isPartOfComposite": true 596 | }, 597 | { 598 | "name": "right", 599 | "id": "8607c725-d935-4808-84b1-8354e29bab63", 600 | "path": "/d", 601 | "interactions": "", 602 | "processors": "", 603 | "groups": "Keyboard&Mouse", 604 | "action": "Navigate", 605 | "isComposite": false, 606 | "isPartOfComposite": true 607 | }, 608 | { 609 | "name": "right", 610 | "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b", 611 | "path": "/rightArrow", 612 | "interactions": "", 613 | "processors": "", 614 | "groups": "Keyboard&Mouse", 615 | "action": "Navigate", 616 | "isComposite": false, 617 | "isPartOfComposite": true 618 | }, 619 | { 620 | "name": "", 621 | "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc", 622 | "path": "*/{Submit}", 623 | "interactions": "", 624 | "processors": "", 625 | "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", 626 | "action": "Submit", 627 | "isComposite": false, 628 | "isPartOfComposite": false 629 | }, 630 | { 631 | "name": "", 632 | "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e", 633 | "path": "*/{Cancel}", 634 | "interactions": "", 635 | "processors": "", 636 | "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", 637 | "action": "Cancel", 638 | "isComposite": false, 639 | "isPartOfComposite": false 640 | }, 641 | { 642 | "name": "", 643 | "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86", 644 | "path": "/position", 645 | "interactions": "", 646 | "processors": "", 647 | "groups": "Keyboard&Mouse", 648 | "action": "Point", 649 | "isComposite": false, 650 | "isPartOfComposite": false 651 | }, 652 | { 653 | "name": "", 654 | "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7", 655 | "path": "/position", 656 | "interactions": "", 657 | "processors": "", 658 | "groups": "Keyboard&Mouse", 659 | "action": "Point", 660 | "isComposite": false, 661 | "isPartOfComposite": false 662 | }, 663 | { 664 | "name": "", 665 | "id": "5693e57a-238a-46ed-b5ae-e64e6e574302", 666 | "path": "/touch*/position", 667 | "interactions": "", 668 | "processors": "", 669 | "groups": "Touch", 670 | "action": "Point", 671 | "isComposite": false, 672 | "isPartOfComposite": false 673 | }, 674 | { 675 | "name": "", 676 | "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5", 677 | "path": "/leftButton", 678 | "interactions": "", 679 | "processors": "", 680 | "groups": ";Keyboard&Mouse", 681 | "action": "Click", 682 | "isComposite": false, 683 | "isPartOfComposite": false 684 | }, 685 | { 686 | "name": "", 687 | "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace", 688 | "path": "/tip", 689 | "interactions": "", 690 | "processors": "", 691 | "groups": ";Keyboard&Mouse", 692 | "action": "Click", 693 | "isComposite": false, 694 | "isPartOfComposite": false 695 | }, 696 | { 697 | "name": "", 698 | "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59", 699 | "path": "/touch*/press", 700 | "interactions": "", 701 | "processors": "", 702 | "groups": "Touch", 703 | "action": "Click", 704 | "isComposite": false, 705 | "isPartOfComposite": false 706 | }, 707 | { 708 | "name": "", 709 | "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677", 710 | "path": "/trigger", 711 | "interactions": "", 712 | "processors": "", 713 | "groups": "XR", 714 | "action": "Click", 715 | "isComposite": false, 716 | "isPartOfComposite": false 717 | }, 718 | { 719 | "name": "", 720 | "id": "38c99815-14ea-4617-8627-164d27641299", 721 | "path": "/scroll", 722 | "interactions": "", 723 | "processors": "", 724 | "groups": ";Keyboard&Mouse", 725 | "action": "ScrollWheel", 726 | "isComposite": false, 727 | "isPartOfComposite": false 728 | }, 729 | { 730 | "name": "", 731 | "id": "24066f69-da47-44f3-a07e-0015fb02eb2e", 732 | "path": "/middleButton", 733 | "interactions": "", 734 | "processors": "", 735 | "groups": ";Keyboard&Mouse", 736 | "action": "MiddleClick", 737 | "isComposite": false, 738 | "isPartOfComposite": false 739 | }, 740 | { 741 | "name": "", 742 | "id": "4c191405-5738-4d4b-a523-c6a301dbf754", 743 | "path": "/rightButton", 744 | "interactions": "", 745 | "processors": "", 746 | "groups": ";Keyboard&Mouse", 747 | "action": "RightClick", 748 | "isComposite": false, 749 | "isPartOfComposite": false 750 | }, 751 | { 752 | "name": "", 753 | "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77", 754 | "path": "/devicePosition", 755 | "interactions": "", 756 | "processors": "", 757 | "groups": "XR", 758 | "action": "TrackedDevicePosition", 759 | "isComposite": false, 760 | "isPartOfComposite": false 761 | }, 762 | { 763 | "name": "", 764 | "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb", 765 | "path": "/deviceRotation", 766 | "interactions": "", 767 | "processors": "", 768 | "groups": "XR", 769 | "action": "TrackedDeviceOrientation", 770 | "isComposite": false, 771 | "isPartOfComposite": false 772 | } 773 | ] 774 | } 775 | ], 776 | "controlSchemes": [ 777 | { 778 | "name": "Keyboard&Mouse", 779 | "bindingGroup": "Keyboard&Mouse", 780 | "devices": [ 781 | { 782 | "devicePath": "", 783 | "isOptional": false, 784 | "isOR": false 785 | }, 786 | { 787 | "devicePath": "", 788 | "isOptional": false, 789 | "isOR": false 790 | } 791 | ] 792 | }, 793 | { 794 | "name": "Gamepad", 795 | "bindingGroup": "Gamepad", 796 | "devices": [ 797 | { 798 | "devicePath": "", 799 | "isOptional": false, 800 | "isOR": false 801 | } 802 | ] 803 | }, 804 | { 805 | "name": "Touch", 806 | "bindingGroup": "Touch", 807 | "devices": [ 808 | { 809 | "devicePath": "", 810 | "isOptional": false, 811 | "isOR": false 812 | } 813 | ] 814 | }, 815 | { 816 | "name": "Joystick", 817 | "bindingGroup": "Joystick", 818 | "devices": [ 819 | { 820 | "devicePath": "", 821 | "isOptional": false, 822 | "isOR": false 823 | } 824 | ] 825 | }, 826 | { 827 | "name": "XR", 828 | "bindingGroup": "XR", 829 | "devices": [ 830 | { 831 | "devicePath": "", 832 | "isOptional": false, 833 | "isOR": false 834 | } 835 | ] 836 | } 837 | ] 838 | } --------------------------------------------------------------------------------