├── .gitignore ├── Assets ├── MouseFlight.meta └── MouseFlight │ ├── Demo.meta │ ├── Demo │ ├── Materials.meta │ ├── Materials │ │ ├── GridX10.mat │ │ ├── GridX10.mat.meta │ │ ├── GridX50.mat │ │ ├── GridX50.mat.meta │ │ ├── Textures.meta │ │ └── Textures │ │ │ ├── grid.png │ │ │ └── grid.png.meta │ ├── Prefabs.meta │ ├── Prefabs │ │ ├── MouseFlightHud.prefab │ │ ├── MouseFlightHud.prefab.meta │ │ ├── Plane.prefab │ │ └── Plane.prefab.meta │ ├── Scenes.meta │ ├── Scenes │ │ ├── DemoFlight.unity │ │ └── DemoFlight.unity.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── Hud.cs │ │ ├── Hud.cs.meta │ │ ├── Plane.cs │ │ └── Plane.cs.meta │ ├── UI.meta │ └── UI │ │ ├── Crosshair.png │ │ ├── Crosshair.png.meta │ │ ├── MouseCrosshair.png │ │ └── MouseCrosshair.png.meta │ ├── Prefabs.meta │ ├── Prefabs │ ├── MouseFlightRig.prefab │ └── MouseFlightRig.prefab.meta │ ├── Scripts.meta │ └── Scripts │ ├── MouseFlightController.cs │ └── MouseFlightController.cs.meta ├── LICENSE ├── MouseFlight.unitypackage ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset ├── README.md └── Screenshots ├── axes.png ├── flight.gif ├── plane.png └── rig.png /.gitignore: -------------------------------------------------------------------------------- 1 | /* 2 | /*/ 3 | 4 | !.gitignore 5 | !/Assets/ 6 | !/ProjectSettings/ 7 | !/Packages/ 8 | !/Screenshots/ 9 | !*.unitypackage 10 | 11 | *.blend1 12 | *.blend1.meta 13 | -------------------------------------------------------------------------------- /Assets/MouseFlight.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c62e81802540a0d4d941cd1ece53c099 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88207dd45017a174d8d22ac199ffc059 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17dd83cc8310a47438f802c194258035 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/GridX10.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: GridX10 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _DETAIL_MULX2 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 2800000, guid: 3993c009518dfd344b43b0f5b2befdd6, type: 3} 27 | m_Scale: {x: 10, y: 10} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.11 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.18020111, g: 0.20647146, b: 0.24264705, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/GridX10.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef5066ddcad12b04dbaae7a32a4f2ed6 3 | timeCreated: 1508715831 4 | licenseType: Free 5 | NativeFormatImporter: 6 | mainObjectFileID: -1 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/GridX50.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: GridX50 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _DETAIL_MULX2 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 2800000, guid: 3993c009518dfd344b43b0f5b2befdd6, type: 3} 27 | m_Scale: {x: 50, y: 50} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.11 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.18020111, g: 0.20647146, b: 0.24264705, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/GridX50.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ca49f2265d381648a018a5be176a4c4 3 | timeCreated: 1508712390 4 | licenseType: Free 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39e351d15daa2f44481de5ef9610023c 3 | folderAsset: yes 4 | timeCreated: 1508712385 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/Textures/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Assets/MouseFlight/Demo/Materials/Textures/grid.png -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Materials/Textures/grid.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3993c009518dfd344b43b0f5b2befdd6 3 | timeCreated: 1508712385 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | spriteSheet: 62 | serializedVersion: 2 63 | sprites: [] 64 | outline: [] 65 | spritePackingTag: 66 | userData: 67 | assetBundleName: 68 | assetBundleVariant: 69 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d808e7bc2763d94aa39e6a54ba0f425 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Prefabs/MouseFlightHud.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1583529893924578} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1105486575386632 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224020837011058284} 22 | - component: {fileID: 222919696407511804} 23 | - component: {fileID: 114970854943943124} 24 | m_Layer: 5 25 | m_Name: MouseAim 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!1 &1583529893924578 32 | GameObject: 33 | m_ObjectHideFlags: 0 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | serializedVersion: 5 37 | m_Component: 38 | - component: {fileID: 224313560478563200} 39 | - component: {fileID: 223898269430614308} 40 | - component: {fileID: 114479940590868176} 41 | - component: {fileID: 114323057850868986} 42 | - component: {fileID: 114491796399247544} 43 | m_Layer: 5 44 | m_Name: MouseFlightHud 45 | m_TagString: Untagged 46 | m_Icon: {fileID: 0} 47 | m_NavMeshLayer: 0 48 | m_StaticEditorFlags: 0 49 | m_IsActive: 1 50 | --- !u!1 &1699826897553592 51 | GameObject: 52 | m_ObjectHideFlags: 0 53 | m_PrefabParentObject: {fileID: 0} 54 | m_PrefabInternal: {fileID: 100100000} 55 | serializedVersion: 5 56 | m_Component: 57 | - component: {fileID: 224222720421087158} 58 | - component: {fileID: 222725421615357484} 59 | - component: {fileID: 114423984889802770} 60 | m_Layer: 5 61 | m_Name: Boresight 62 | m_TagString: Untagged 63 | m_Icon: {fileID: 0} 64 | m_NavMeshLayer: 0 65 | m_StaticEditorFlags: 0 66 | m_IsActive: 1 67 | --- !u!114 &114323057850868986 68 | MonoBehaviour: 69 | m_ObjectHideFlags: 1 70 | m_PrefabParentObject: {fileID: 0} 71 | m_PrefabInternal: {fileID: 100100000} 72 | m_GameObject: {fileID: 1583529893924578} 73 | m_Enabled: 1 74 | m_EditorHideFlags: 0 75 | m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} 76 | m_Name: 77 | m_EditorClassIdentifier: 78 | m_IgnoreReversedGraphics: 1 79 | m_BlockingObjects: 0 80 | m_BlockingMask: 81 | serializedVersion: 2 82 | m_Bits: 4294967295 83 | --- !u!114 &114423984889802770 84 | MonoBehaviour: 85 | m_ObjectHideFlags: 1 86 | m_PrefabParentObject: {fileID: 0} 87 | m_PrefabInternal: {fileID: 100100000} 88 | m_GameObject: {fileID: 1699826897553592} 89 | m_Enabled: 1 90 | m_EditorHideFlags: 0 91 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 92 | m_Name: 93 | m_EditorClassIdentifier: 94 | m_Material: {fileID: 0} 95 | m_Color: {r: 1, g: 1, b: 1, a: 1} 96 | m_RaycastTarget: 1 97 | m_OnCullStateChanged: 98 | m_PersistentCalls: 99 | m_Calls: [] 100 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 101 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 102 | m_Sprite: {fileID: 21300000, guid: 921be87207a049f41b7a921881c5a712, type: 3} 103 | m_Type: 0 104 | m_PreserveAspect: 0 105 | m_FillCenter: 1 106 | m_FillMethod: 4 107 | m_FillAmount: 1 108 | m_FillClockwise: 1 109 | m_FillOrigin: 0 110 | --- !u!114 &114479940590868176 111 | MonoBehaviour: 112 | m_ObjectHideFlags: 1 113 | m_PrefabParentObject: {fileID: 0} 114 | m_PrefabInternal: {fileID: 100100000} 115 | m_GameObject: {fileID: 1583529893924578} 116 | m_Enabled: 1 117 | m_EditorHideFlags: 0 118 | m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} 119 | m_Name: 120 | m_EditorClassIdentifier: 121 | m_UiScaleMode: 0 122 | m_ReferencePixelsPerUnit: 100 123 | m_ScaleFactor: 1 124 | m_ReferenceResolution: {x: 800, y: 600} 125 | m_ScreenMatchMode: 0 126 | m_MatchWidthOrHeight: 0 127 | m_PhysicalUnit: 3 128 | m_FallbackScreenDPI: 96 129 | m_DefaultSpriteDPI: 96 130 | m_DynamicPixelsPerUnit: 1 131 | --- !u!114 &114491796399247544 132 | MonoBehaviour: 133 | m_ObjectHideFlags: 1 134 | m_PrefabParentObject: {fileID: 0} 135 | m_PrefabInternal: {fileID: 100100000} 136 | m_GameObject: {fileID: 1583529893924578} 137 | m_Enabled: 1 138 | m_EditorHideFlags: 0 139 | m_Script: {fileID: 11500000, guid: 482a72f78627d5042a6c7ac933bb722b, type: 3} 140 | m_Name: 141 | m_EditorClassIdentifier: 142 | mouseFlight: {fileID: 0} 143 | boresight: {fileID: 224222720421087158} 144 | mousePos: {fileID: 224020837011058284} 145 | --- !u!114 &114970854943943124 146 | MonoBehaviour: 147 | m_ObjectHideFlags: 1 148 | m_PrefabParentObject: {fileID: 0} 149 | m_PrefabInternal: {fileID: 100100000} 150 | m_GameObject: {fileID: 1105486575386632} 151 | m_Enabled: 1 152 | m_EditorHideFlags: 0 153 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 154 | m_Name: 155 | m_EditorClassIdentifier: 156 | m_Material: {fileID: 0} 157 | m_Color: {r: 1, g: 1, b: 1, a: 1} 158 | m_RaycastTarget: 1 159 | m_OnCullStateChanged: 160 | m_PersistentCalls: 161 | m_Calls: [] 162 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 163 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 164 | m_Sprite: {fileID: 21300000, guid: d782fbeb8af831440a3b3bc3c6116108, type: 3} 165 | m_Type: 0 166 | m_PreserveAspect: 0 167 | m_FillCenter: 1 168 | m_FillMethod: 4 169 | m_FillAmount: 1 170 | m_FillClockwise: 1 171 | m_FillOrigin: 0 172 | --- !u!222 &222725421615357484 173 | CanvasRenderer: 174 | m_ObjectHideFlags: 1 175 | m_PrefabParentObject: {fileID: 0} 176 | m_PrefabInternal: {fileID: 100100000} 177 | m_GameObject: {fileID: 1699826897553592} 178 | --- !u!222 &222919696407511804 179 | CanvasRenderer: 180 | m_ObjectHideFlags: 1 181 | m_PrefabParentObject: {fileID: 0} 182 | m_PrefabInternal: {fileID: 100100000} 183 | m_GameObject: {fileID: 1105486575386632} 184 | --- !u!223 &223898269430614308 185 | Canvas: 186 | m_ObjectHideFlags: 1 187 | m_PrefabParentObject: {fileID: 0} 188 | m_PrefabInternal: {fileID: 100100000} 189 | m_GameObject: {fileID: 1583529893924578} 190 | m_Enabled: 1 191 | serializedVersion: 3 192 | m_RenderMode: 0 193 | m_Camera: {fileID: 0} 194 | m_PlaneDistance: 100 195 | m_PixelPerfect: 0 196 | m_ReceivesEvents: 1 197 | m_OverrideSorting: 0 198 | m_OverridePixelPerfect: 0 199 | m_SortingBucketNormalizedSize: 0 200 | m_AdditionalShaderChannelsFlag: 0 201 | m_SortingLayerID: 0 202 | m_SortingOrder: 0 203 | m_TargetDisplay: 0 204 | --- !u!224 &224020837011058284 205 | RectTransform: 206 | m_ObjectHideFlags: 1 207 | m_PrefabParentObject: {fileID: 0} 208 | m_PrefabInternal: {fileID: 100100000} 209 | m_GameObject: {fileID: 1105486575386632} 210 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 211 | m_LocalPosition: {x: 0, y: 0, z: 0} 212 | m_LocalScale: {x: 1, y: 1, z: 1} 213 | m_Children: [] 214 | m_Father: {fileID: 224313560478563200} 215 | m_RootOrder: 1 216 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 217 | m_AnchorMin: {x: 0.5, y: 0.5} 218 | m_AnchorMax: {x: 0.5, y: 0.5} 219 | m_AnchoredPosition: {x: 0, y: 0} 220 | m_SizeDelta: {x: 50, y: 50} 221 | m_Pivot: {x: 0.5, y: 0.5} 222 | --- !u!224 &224222720421087158 223 | RectTransform: 224 | m_ObjectHideFlags: 1 225 | m_PrefabParentObject: {fileID: 0} 226 | m_PrefabInternal: {fileID: 100100000} 227 | m_GameObject: {fileID: 1699826897553592} 228 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 229 | m_LocalPosition: {x: 0, y: 0, z: 0} 230 | m_LocalScale: {x: 1, y: 1, z: 1} 231 | m_Children: [] 232 | m_Father: {fileID: 224313560478563200} 233 | m_RootOrder: 0 234 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 235 | m_AnchorMin: {x: 0.5, y: 0.5} 236 | m_AnchorMax: {x: 0.5, y: 0.5} 237 | m_AnchoredPosition: {x: 0, y: 0} 238 | m_SizeDelta: {x: 25, y: 25} 239 | m_Pivot: {x: 0.5, y: 0.5} 240 | --- !u!224 &224313560478563200 241 | RectTransform: 242 | m_ObjectHideFlags: 1 243 | m_PrefabParentObject: {fileID: 0} 244 | m_PrefabInternal: {fileID: 100100000} 245 | m_GameObject: {fileID: 1583529893924578} 246 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 247 | m_LocalPosition: {x: 0, y: 0, z: 0} 248 | m_LocalScale: {x: 0, y: 0, z: 0} 249 | m_Children: 250 | - {fileID: 224222720421087158} 251 | - {fileID: 224020837011058284} 252 | m_Father: {fileID: 0} 253 | m_RootOrder: 0 254 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 255 | m_AnchorMin: {x: 0, y: 0} 256 | m_AnchorMax: {x: 0, y: 0} 257 | m_AnchoredPosition: {x: 0, y: 0} 258 | m_SizeDelta: {x: 0, y: 0} 259 | m_Pivot: {x: 0, y: 0} 260 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Prefabs/MouseFlightHud.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16580bf03b0b2cd43a91d480153f3fa0 3 | timeCreated: 1546748880 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 100100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Prefabs/Plane.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1630319604630382} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1150057164581350 15 | GameObject: 16 | m_ObjectHideFlags: 1 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4747174291069848} 22 | - component: {fileID: 33142185858276406} 23 | - component: {fileID: 23093786384738662} 24 | m_Layer: 0 25 | m_Name: Cube (3) 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!1 &1305571665268878 32 | GameObject: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | serializedVersion: 5 37 | m_Component: 38 | - component: {fileID: 4156454336752844} 39 | - component: {fileID: 33629982854197556} 40 | - component: {fileID: 23523300321548112} 41 | m_Layer: 0 42 | m_Name: Cube (2) 43 | m_TagString: Untagged 44 | m_Icon: {fileID: 0} 45 | m_NavMeshLayer: 0 46 | m_StaticEditorFlags: 0 47 | m_IsActive: 1 48 | --- !u!1 &1507818353167430 49 | GameObject: 50 | m_ObjectHideFlags: 0 51 | m_PrefabParentObject: {fileID: 0} 52 | m_PrefabInternal: {fileID: 100100000} 53 | serializedVersion: 5 54 | m_Component: 55 | - component: {fileID: 4027105983177180} 56 | - component: {fileID: 96544870946491564} 57 | m_Layer: 0 58 | m_Name: TrailLeft 59 | m_TagString: Untagged 60 | m_Icon: {fileID: 0} 61 | m_NavMeshLayer: 0 62 | m_StaticEditorFlags: 0 63 | m_IsActive: 1 64 | --- !u!1 &1630319604630382 65 | GameObject: 66 | m_ObjectHideFlags: 0 67 | m_PrefabParentObject: {fileID: 0} 68 | m_PrefabInternal: {fileID: 100100000} 69 | serializedVersion: 5 70 | m_Component: 71 | - component: {fileID: 4563113176137864} 72 | - component: {fileID: 54841044653712042} 73 | - component: {fileID: 114329657595640044} 74 | m_Layer: 0 75 | m_Name: Plane 76 | m_TagString: Untagged 77 | m_Icon: {fileID: 0} 78 | m_NavMeshLayer: 0 79 | m_StaticEditorFlags: 0 80 | m_IsActive: 1 81 | --- !u!1 &1693954784331664 82 | GameObject: 83 | m_ObjectHideFlags: 1 84 | m_PrefabParentObject: {fileID: 0} 85 | m_PrefabInternal: {fileID: 100100000} 86 | serializedVersion: 5 87 | m_Component: 88 | - component: {fileID: 4031217312580168} 89 | - component: {fileID: 33633885239379774} 90 | - component: {fileID: 23239527226510358} 91 | m_Layer: 0 92 | m_Name: Cube 93 | m_TagString: Untagged 94 | m_Icon: {fileID: 0} 95 | m_NavMeshLayer: 0 96 | m_StaticEditorFlags: 0 97 | m_IsActive: 1 98 | --- !u!1 &1786388500019116 99 | GameObject: 100 | m_ObjectHideFlags: 0 101 | m_PrefabParentObject: {fileID: 0} 102 | m_PrefabInternal: {fileID: 100100000} 103 | serializedVersion: 5 104 | m_Component: 105 | - component: {fileID: 4139681920160542} 106 | - component: {fileID: 96301432782237084} 107 | m_Layer: 0 108 | m_Name: TrailRight 109 | m_TagString: Untagged 110 | m_Icon: {fileID: 0} 111 | m_NavMeshLayer: 0 112 | m_StaticEditorFlags: 0 113 | m_IsActive: 1 114 | --- !u!1 &1950386001306352 115 | GameObject: 116 | m_ObjectHideFlags: 0 117 | m_PrefabParentObject: {fileID: 0} 118 | m_PrefabInternal: {fileID: 100100000} 119 | serializedVersion: 5 120 | m_Component: 121 | - component: {fileID: 4844329743622124} 122 | - component: {fileID: 136863792910642262} 123 | - component: {fileID: 65881446311299584} 124 | - component: {fileID: 65470979923239614} 125 | m_Layer: 0 126 | m_Name: Model 127 | m_TagString: Untagged 128 | m_Icon: {fileID: 0} 129 | m_NavMeshLayer: 0 130 | m_StaticEditorFlags: 0 131 | m_IsActive: 1 132 | --- !u!1 &1973357310210056 133 | GameObject: 134 | m_ObjectHideFlags: 1 135 | m_PrefabParentObject: {fileID: 0} 136 | m_PrefabInternal: {fileID: 100100000} 137 | serializedVersion: 5 138 | m_Component: 139 | - component: {fileID: 4795311406036026} 140 | - component: {fileID: 33912337720940244} 141 | - component: {fileID: 23629471462856062} 142 | m_Layer: 0 143 | m_Name: Cube (1) 144 | m_TagString: Untagged 145 | m_Icon: {fileID: 0} 146 | m_NavMeshLayer: 0 147 | m_StaticEditorFlags: 0 148 | m_IsActive: 1 149 | --- !u!4 &4027105983177180 150 | Transform: 151 | m_ObjectHideFlags: 1 152 | m_PrefabParentObject: {fileID: 0} 153 | m_PrefabInternal: {fileID: 100100000} 154 | m_GameObject: {fileID: 1507818353167430} 155 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 156 | m_LocalPosition: {x: -5.54, y: 0, z: -2.62} 157 | m_LocalScale: {x: 1, y: 1, z: 1} 158 | m_Children: [] 159 | m_Father: {fileID: 4563113176137864} 160 | m_RootOrder: 1 161 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 162 | --- !u!4 &4031217312580168 163 | Transform: 164 | m_ObjectHideFlags: 1 165 | m_PrefabParentObject: {fileID: 0} 166 | m_PrefabInternal: {fileID: 100100000} 167 | m_GameObject: {fileID: 1693954784331664} 168 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 169 | m_LocalPosition: {x: 0, y: 0, z: 0} 170 | m_LocalScale: {x: 1.41246, y: 2.11904, z: 15} 171 | m_Children: [] 172 | m_Father: {fileID: 4844329743622124} 173 | m_RootOrder: 0 174 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 175 | --- !u!4 &4139681920160542 176 | Transform: 177 | m_ObjectHideFlags: 1 178 | m_PrefabParentObject: {fileID: 0} 179 | m_PrefabInternal: {fileID: 100100000} 180 | m_GameObject: {fileID: 1786388500019116} 181 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 182 | m_LocalPosition: {x: 5.54, y: 0, z: -2.62} 183 | m_LocalScale: {x: 1, y: 1, z: 1} 184 | m_Children: [] 185 | m_Father: {fileID: 4563113176137864} 186 | m_RootOrder: 2 187 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 188 | --- !u!4 &4156454336752844 189 | Transform: 190 | m_ObjectHideFlags: 1 191 | m_PrefabParentObject: {fileID: 0} 192 | m_PrefabInternal: {fileID: 100100000} 193 | m_GameObject: {fileID: 1305571665268878} 194 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 195 | m_LocalPosition: {x: 0, y: 0, z: -6.18} 196 | m_LocalScale: {x: 6.258457, y: 0.33416, z: 2.500542} 197 | m_Children: [] 198 | m_Father: {fileID: 4844329743622124} 199 | m_RootOrder: 2 200 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 201 | --- !u!4 &4563113176137864 202 | Transform: 203 | m_ObjectHideFlags: 1 204 | m_PrefabParentObject: {fileID: 0} 205 | m_PrefabInternal: {fileID: 100100000} 206 | m_GameObject: {fileID: 1630319604630382} 207 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 208 | m_LocalPosition: {x: 0, y: 0, z: 0} 209 | m_LocalScale: {x: 1, y: 1, z: 1} 210 | m_Children: 211 | - {fileID: 4844329743622124} 212 | - {fileID: 4027105983177180} 213 | - {fileID: 4139681920160542} 214 | m_Father: {fileID: 0} 215 | m_RootOrder: 0 216 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 217 | --- !u!4 &4747174291069848 218 | Transform: 219 | m_ObjectHideFlags: 1 220 | m_PrefabParentObject: {fileID: 0} 221 | m_PrefabInternal: {fileID: 100100000} 222 | m_GameObject: {fileID: 1150057164581350} 223 | m_LocalRotation: {x: -0, y: -0, z: 0.70710677, w: 0.7071068} 224 | m_LocalPosition: {x: 0, y: 1.6, z: -6.18} 225 | m_LocalScale: {x: 2.503384, y: 0.33416, z: 2.50054} 226 | m_Children: [] 227 | m_Father: {fileID: 4844329743622124} 228 | m_RootOrder: 3 229 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90.00001} 230 | --- !u!4 &4795311406036026 231 | Transform: 232 | m_ObjectHideFlags: 1 233 | m_PrefabParentObject: {fileID: 0} 234 | m_PrefabInternal: {fileID: 100100000} 235 | m_GameObject: {fileID: 1973357310210056} 236 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 237 | m_LocalPosition: {x: 0, y: 0, z: -0.08} 238 | m_LocalScale: {x: 11.0596895, y: 0.33416, z: 4.869318} 239 | m_Children: [] 240 | m_Father: {fileID: 4844329743622124} 241 | m_RootOrder: 1 242 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 243 | --- !u!4 &4844329743622124 244 | Transform: 245 | m_ObjectHideFlags: 1 246 | m_PrefabParentObject: {fileID: 0} 247 | m_PrefabInternal: {fileID: 100100000} 248 | m_GameObject: {fileID: 1950386001306352} 249 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 250 | m_LocalPosition: {x: 0, y: 0, z: 0} 251 | m_LocalScale: {x: 1, y: 1, z: 1} 252 | m_Children: 253 | - {fileID: 4031217312580168} 254 | - {fileID: 4795311406036026} 255 | - {fileID: 4156454336752844} 256 | - {fileID: 4747174291069848} 257 | m_Father: {fileID: 4563113176137864} 258 | m_RootOrder: 0 259 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 260 | --- !u!23 &23093786384738662 261 | MeshRenderer: 262 | m_ObjectHideFlags: 1 263 | m_PrefabParentObject: {fileID: 0} 264 | m_PrefabInternal: {fileID: 100100000} 265 | m_GameObject: {fileID: 1150057164581350} 266 | m_Enabled: 1 267 | m_CastShadows: 1 268 | m_ReceiveShadows: 1 269 | m_DynamicOccludee: 1 270 | m_MotionVectors: 1 271 | m_LightProbeUsage: 1 272 | m_ReflectionProbeUsage: 1 273 | m_Materials: 274 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 275 | m_StaticBatchInfo: 276 | firstSubMesh: 0 277 | subMeshCount: 0 278 | m_StaticBatchRoot: {fileID: 0} 279 | m_ProbeAnchor: {fileID: 0} 280 | m_LightProbeVolumeOverride: {fileID: 0} 281 | m_ScaleInLightmap: 1 282 | m_PreserveUVs: 0 283 | m_IgnoreNormalsForChartDetection: 0 284 | m_ImportantGI: 0 285 | m_StitchLightmapSeams: 0 286 | m_SelectedEditorRenderState: 3 287 | m_MinimumChartSize: 4 288 | m_AutoUVMaxDistance: 0.5 289 | m_AutoUVMaxAngle: 89 290 | m_LightmapParameters: {fileID: 0} 291 | m_SortingLayerID: 0 292 | m_SortingLayer: 0 293 | m_SortingOrder: 0 294 | --- !u!23 &23239527226510358 295 | MeshRenderer: 296 | m_ObjectHideFlags: 1 297 | m_PrefabParentObject: {fileID: 0} 298 | m_PrefabInternal: {fileID: 100100000} 299 | m_GameObject: {fileID: 1693954784331664} 300 | m_Enabled: 1 301 | m_CastShadows: 1 302 | m_ReceiveShadows: 1 303 | m_DynamicOccludee: 1 304 | m_MotionVectors: 1 305 | m_LightProbeUsage: 1 306 | m_ReflectionProbeUsage: 1 307 | m_Materials: 308 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 309 | m_StaticBatchInfo: 310 | firstSubMesh: 0 311 | subMeshCount: 0 312 | m_StaticBatchRoot: {fileID: 0} 313 | m_ProbeAnchor: {fileID: 0} 314 | m_LightProbeVolumeOverride: {fileID: 0} 315 | m_ScaleInLightmap: 1 316 | m_PreserveUVs: 0 317 | m_IgnoreNormalsForChartDetection: 0 318 | m_ImportantGI: 0 319 | m_StitchLightmapSeams: 0 320 | m_SelectedEditorRenderState: 3 321 | m_MinimumChartSize: 4 322 | m_AutoUVMaxDistance: 0.5 323 | m_AutoUVMaxAngle: 89 324 | m_LightmapParameters: {fileID: 0} 325 | m_SortingLayerID: 0 326 | m_SortingLayer: 0 327 | m_SortingOrder: 0 328 | --- !u!23 &23523300321548112 329 | MeshRenderer: 330 | m_ObjectHideFlags: 1 331 | m_PrefabParentObject: {fileID: 0} 332 | m_PrefabInternal: {fileID: 100100000} 333 | m_GameObject: {fileID: 1305571665268878} 334 | m_Enabled: 1 335 | m_CastShadows: 1 336 | m_ReceiveShadows: 1 337 | m_DynamicOccludee: 1 338 | m_MotionVectors: 1 339 | m_LightProbeUsage: 1 340 | m_ReflectionProbeUsage: 1 341 | m_Materials: 342 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 343 | m_StaticBatchInfo: 344 | firstSubMesh: 0 345 | subMeshCount: 0 346 | m_StaticBatchRoot: {fileID: 0} 347 | m_ProbeAnchor: {fileID: 0} 348 | m_LightProbeVolumeOverride: {fileID: 0} 349 | m_ScaleInLightmap: 1 350 | m_PreserveUVs: 0 351 | m_IgnoreNormalsForChartDetection: 0 352 | m_ImportantGI: 0 353 | m_StitchLightmapSeams: 0 354 | m_SelectedEditorRenderState: 3 355 | m_MinimumChartSize: 4 356 | m_AutoUVMaxDistance: 0.5 357 | m_AutoUVMaxAngle: 89 358 | m_LightmapParameters: {fileID: 0} 359 | m_SortingLayerID: 0 360 | m_SortingLayer: 0 361 | m_SortingOrder: 0 362 | --- !u!23 &23629471462856062 363 | MeshRenderer: 364 | m_ObjectHideFlags: 1 365 | m_PrefabParentObject: {fileID: 0} 366 | m_PrefabInternal: {fileID: 100100000} 367 | m_GameObject: {fileID: 1973357310210056} 368 | m_Enabled: 1 369 | m_CastShadows: 1 370 | m_ReceiveShadows: 1 371 | m_DynamicOccludee: 1 372 | m_MotionVectors: 1 373 | m_LightProbeUsage: 1 374 | m_ReflectionProbeUsage: 1 375 | m_Materials: 376 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 377 | m_StaticBatchInfo: 378 | firstSubMesh: 0 379 | subMeshCount: 0 380 | m_StaticBatchRoot: {fileID: 0} 381 | m_ProbeAnchor: {fileID: 0} 382 | m_LightProbeVolumeOverride: {fileID: 0} 383 | m_ScaleInLightmap: 1 384 | m_PreserveUVs: 0 385 | m_IgnoreNormalsForChartDetection: 0 386 | m_ImportantGI: 0 387 | m_StitchLightmapSeams: 0 388 | m_SelectedEditorRenderState: 3 389 | m_MinimumChartSize: 4 390 | m_AutoUVMaxDistance: 0.5 391 | m_AutoUVMaxAngle: 89 392 | m_LightmapParameters: {fileID: 0} 393 | m_SortingLayerID: 0 394 | m_SortingLayer: 0 395 | m_SortingOrder: 0 396 | --- !u!33 &33142185858276406 397 | MeshFilter: 398 | m_ObjectHideFlags: 1 399 | m_PrefabParentObject: {fileID: 0} 400 | m_PrefabInternal: {fileID: 100100000} 401 | m_GameObject: {fileID: 1150057164581350} 402 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 403 | --- !u!33 &33629982854197556 404 | MeshFilter: 405 | m_ObjectHideFlags: 1 406 | m_PrefabParentObject: {fileID: 0} 407 | m_PrefabInternal: {fileID: 100100000} 408 | m_GameObject: {fileID: 1305571665268878} 409 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 410 | --- !u!33 &33633885239379774 411 | MeshFilter: 412 | m_ObjectHideFlags: 1 413 | m_PrefabParentObject: {fileID: 0} 414 | m_PrefabInternal: {fileID: 100100000} 415 | m_GameObject: {fileID: 1693954784331664} 416 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 417 | --- !u!33 &33912337720940244 418 | MeshFilter: 419 | m_ObjectHideFlags: 1 420 | m_PrefabParentObject: {fileID: 0} 421 | m_PrefabInternal: {fileID: 100100000} 422 | m_GameObject: {fileID: 1973357310210056} 423 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 424 | --- !u!54 &54841044653712042 425 | Rigidbody: 426 | m_ObjectHideFlags: 1 427 | m_PrefabParentObject: {fileID: 0} 428 | m_PrefabInternal: {fileID: 100100000} 429 | m_GameObject: {fileID: 1630319604630382} 430 | serializedVersion: 2 431 | m_Mass: 100 432 | m_Drag: 1 433 | m_AngularDrag: 5 434 | m_UseGravity: 0 435 | m_IsKinematic: 0 436 | m_Interpolate: 1 437 | m_Constraints: 0 438 | m_CollisionDetection: 0 439 | --- !u!65 &65470979923239614 440 | BoxCollider: 441 | m_ObjectHideFlags: 1 442 | m_PrefabParentObject: {fileID: 0} 443 | m_PrefabInternal: {fileID: 100100000} 444 | m_GameObject: {fileID: 1950386001306352} 445 | m_Material: {fileID: 0} 446 | m_IsTrigger: 0 447 | m_Enabled: 1 448 | serializedVersion: 2 449 | m_Size: {x: 6.27, y: 1, z: 3.33} 450 | m_Center: {x: 0, y: 0, z: -6.03} 451 | --- !u!65 &65881446311299584 452 | BoxCollider: 453 | m_ObjectHideFlags: 1 454 | m_PrefabParentObject: {fileID: 0} 455 | m_PrefabInternal: {fileID: 100100000} 456 | m_GameObject: {fileID: 1950386001306352} 457 | m_Material: {fileID: 0} 458 | m_IsTrigger: 0 459 | m_Enabled: 1 460 | serializedVersion: 2 461 | m_Size: {x: 10.98, y: 1, z: 3.83} 462 | m_Center: {x: 0, y: 0, z: 0} 463 | --- !u!96 &96301432782237084 464 | TrailRenderer: 465 | serializedVersion: 2 466 | m_ObjectHideFlags: 1 467 | m_PrefabParentObject: {fileID: 0} 468 | m_PrefabInternal: {fileID: 100100000} 469 | m_GameObject: {fileID: 1786388500019116} 470 | m_Enabled: 1 471 | m_CastShadows: 0 472 | m_ReceiveShadows: 0 473 | m_DynamicOccludee: 1 474 | m_MotionVectors: 1 475 | m_LightProbeUsage: 0 476 | m_ReflectionProbeUsage: 0 477 | m_Materials: 478 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 479 | m_StaticBatchInfo: 480 | firstSubMesh: 0 481 | subMeshCount: 0 482 | m_StaticBatchRoot: {fileID: 0} 483 | m_ProbeAnchor: {fileID: 0} 484 | m_LightProbeVolumeOverride: {fileID: 0} 485 | m_ScaleInLightmap: 1 486 | m_PreserveUVs: 0 487 | m_IgnoreNormalsForChartDetection: 0 488 | m_ImportantGI: 0 489 | m_StitchLightmapSeams: 0 490 | m_SelectedEditorRenderState: 3 491 | m_MinimumChartSize: 4 492 | m_AutoUVMaxDistance: 0.5 493 | m_AutoUVMaxAngle: 89 494 | m_LightmapParameters: {fileID: 0} 495 | m_SortingLayerID: 0 496 | m_SortingLayer: 0 497 | m_SortingOrder: 0 498 | m_Time: 1 499 | m_Parameters: 500 | serializedVersion: 2 501 | widthMultiplier: 1 502 | widthCurve: 503 | serializedVersion: 2 504 | m_Curve: 505 | - serializedVersion: 2 506 | time: 0 507 | value: 0.49295807 508 | inSlope: 1.5534891 509 | outSlope: 1.5534891 510 | tangentMode: 0 511 | - serializedVersion: 2 512 | time: 1 513 | value: 1 514 | inSlope: 0 515 | outSlope: 0 516 | tangentMode: 0 517 | m_PreInfinity: 2 518 | m_PostInfinity: 2 519 | m_RotationOrder: 4 520 | colorGradient: 521 | serializedVersion: 2 522 | key0: {r: 1, g: 1, b: 1, a: 0} 523 | key1: {r: 1, g: 1, b: 1, a: 0.53333336} 524 | key2: {r: 0, g: 0, b: 0, a: 0} 525 | key3: {r: 0, g: 0, b: 0, a: 0} 526 | key4: {r: 0, g: 0, b: 0, a: 0} 527 | key5: {r: 0, g: 0, b: 0, a: 0} 528 | key6: {r: 0, g: 0, b: 0, a: 0} 529 | key7: {r: 0, g: 0, b: 0, a: 0} 530 | ctime0: 0 531 | ctime1: 65535 532 | ctime2: 0 533 | ctime3: 0 534 | ctime4: 0 535 | ctime5: 0 536 | ctime6: 0 537 | ctime7: 0 538 | atime0: 0 539 | atime1: 5783 540 | atime2: 65535 541 | atime3: 0 542 | atime4: 0 543 | atime5: 0 544 | atime6: 0 545 | atime7: 0 546 | m_Mode: 0 547 | m_NumColorKeys: 2 548 | m_NumAlphaKeys: 3 549 | numCornerVertices: 0 550 | numCapVertices: 0 551 | alignment: 0 552 | textureMode: 0 553 | generateLightingData: 0 554 | m_MinVertexDistance: 1 555 | m_Autodestruct: 0 556 | --- !u!96 &96544870946491564 557 | TrailRenderer: 558 | serializedVersion: 2 559 | m_ObjectHideFlags: 1 560 | m_PrefabParentObject: {fileID: 0} 561 | m_PrefabInternal: {fileID: 100100000} 562 | m_GameObject: {fileID: 1507818353167430} 563 | m_Enabled: 1 564 | m_CastShadows: 0 565 | m_ReceiveShadows: 0 566 | m_DynamicOccludee: 1 567 | m_MotionVectors: 1 568 | m_LightProbeUsage: 0 569 | m_ReflectionProbeUsage: 0 570 | m_Materials: 571 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 572 | m_StaticBatchInfo: 573 | firstSubMesh: 0 574 | subMeshCount: 0 575 | m_StaticBatchRoot: {fileID: 0} 576 | m_ProbeAnchor: {fileID: 0} 577 | m_LightProbeVolumeOverride: {fileID: 0} 578 | m_ScaleInLightmap: 1 579 | m_PreserveUVs: 0 580 | m_IgnoreNormalsForChartDetection: 0 581 | m_ImportantGI: 0 582 | m_StitchLightmapSeams: 0 583 | m_SelectedEditorRenderState: 3 584 | m_MinimumChartSize: 4 585 | m_AutoUVMaxDistance: 0.5 586 | m_AutoUVMaxAngle: 89 587 | m_LightmapParameters: {fileID: 0} 588 | m_SortingLayerID: 0 589 | m_SortingLayer: 0 590 | m_SortingOrder: 0 591 | m_Time: 1 592 | m_Parameters: 593 | serializedVersion: 2 594 | widthMultiplier: 1 595 | widthCurve: 596 | serializedVersion: 2 597 | m_Curve: 598 | - serializedVersion: 2 599 | time: 0 600 | value: 0.49295807 601 | inSlope: 1.5534891 602 | outSlope: 1.5534891 603 | tangentMode: 0 604 | - serializedVersion: 2 605 | time: 1 606 | value: 1 607 | inSlope: 0 608 | outSlope: 0 609 | tangentMode: 0 610 | m_PreInfinity: 2 611 | m_PostInfinity: 2 612 | m_RotationOrder: 4 613 | colorGradient: 614 | serializedVersion: 2 615 | key0: {r: 1, g: 1, b: 1, a: 0} 616 | key1: {r: 1, g: 1, b: 1, a: 0.53333336} 617 | key2: {r: 0, g: 0, b: 0, a: 0} 618 | key3: {r: 0, g: 0, b: 0, a: 0} 619 | key4: {r: 0, g: 0, b: 0, a: 0} 620 | key5: {r: 0, g: 0, b: 0, a: 0} 621 | key6: {r: 0, g: 0, b: 0, a: 0} 622 | key7: {r: 0, g: 0, b: 0, a: 0} 623 | ctime0: 0 624 | ctime1: 65535 625 | ctime2: 0 626 | ctime3: 0 627 | ctime4: 0 628 | ctime5: 0 629 | ctime6: 0 630 | ctime7: 0 631 | atime0: 0 632 | atime1: 5783 633 | atime2: 65535 634 | atime3: 0 635 | atime4: 0 636 | atime5: 0 637 | atime6: 0 638 | atime7: 0 639 | m_Mode: 0 640 | m_NumColorKeys: 2 641 | m_NumAlphaKeys: 3 642 | numCornerVertices: 0 643 | numCapVertices: 0 644 | alignment: 0 645 | textureMode: 0 646 | generateLightingData: 0 647 | m_MinVertexDistance: 1 648 | m_Autodestruct: 0 649 | --- !u!114 &114329657595640044 650 | MonoBehaviour: 651 | m_ObjectHideFlags: 1 652 | m_PrefabParentObject: {fileID: 0} 653 | m_PrefabInternal: {fileID: 100100000} 654 | m_GameObject: {fileID: 1630319604630382} 655 | m_Enabled: 1 656 | m_EditorHideFlags: 0 657 | m_Script: {fileID: 11500000, guid: e59c5387dadf66844ae1eed2cbe1e654, type: 3} 658 | m_Name: 659 | m_EditorClassIdentifier: 660 | controller: {fileID: 0} 661 | thrust: 100 662 | turnTorque: {x: 90, y: 25, z: 45} 663 | forceMult: 100 664 | sensitivity: 5 665 | aggressiveTurnAngle: 5 666 | pitch: 0 667 | yaw: 0 668 | roll: 0 669 | --- !u!136 &136863792910642262 670 | CapsuleCollider: 671 | m_ObjectHideFlags: 1 672 | m_PrefabParentObject: {fileID: 0} 673 | m_PrefabInternal: {fileID: 100100000} 674 | m_GameObject: {fileID: 1950386001306352} 675 | m_Material: {fileID: 0} 676 | m_IsTrigger: 0 677 | m_Enabled: 1 678 | m_Radius: 1.43 679 | m_Height: 17.85 680 | m_Direction: 2 681 | m_Center: {x: 0, y: 0, z: 0} 682 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Prefabs/Plane.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 76845026de374da4aa455cd164e63143 3 | timeCreated: 1546748885 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 100100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d41018125324eea4aa0aadfa5cb17ba2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scenes/DemoFlight.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.9215687, g: 1, b: 1, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.0005 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 170076734} 41 | m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 10 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 256 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_ShowResolutionOverlay: 1 92 | m_LightingDataAsset: {fileID: 0} 93 | m_UseShadowmask: 1 94 | --- !u!196 &4 95 | NavMeshSettings: 96 | serializedVersion: 2 97 | m_ObjectHideFlags: 0 98 | m_BuildSettings: 99 | serializedVersion: 2 100 | agentTypeID: 0 101 | agentRadius: 0.5 102 | agentHeight: 2 103 | agentSlope: 45 104 | agentClimb: 0.4 105 | ledgeDropHeight: 0 106 | maxJumpAcrossDistance: 0 107 | minRegionArea: 2 108 | manualCellSize: 0 109 | cellSize: 0.16666667 110 | manualTileSize: 0 111 | tileSize: 256 112 | accuratePlacement: 0 113 | debug: 114 | m_Flags: 0 115 | m_NavMeshData: {fileID: 0} 116 | --- !u!1 &103266646 117 | GameObject: 118 | m_ObjectHideFlags: 0 119 | m_PrefabParentObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 0} 121 | serializedVersion: 5 122 | m_Component: 123 | - component: {fileID: 103266647} 124 | - component: {fileID: 103266650} 125 | - component: {fileID: 103266649} 126 | - component: {fileID: 103266648} 127 | m_Layer: 0 128 | m_Name: Cube 129 | m_TagString: Untagged 130 | m_Icon: {fileID: 0} 131 | m_NavMeshLayer: 0 132 | m_StaticEditorFlags: 4294967295 133 | m_IsActive: 1 134 | --- !u!4 &103266647 135 | Transform: 136 | m_ObjectHideFlags: 0 137 | m_PrefabParentObject: {fileID: 0} 138 | m_PrefabInternal: {fileID: 0} 139 | m_GameObject: {fileID: 103266646} 140 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 141 | m_LocalPosition: {x: -383, y: 100, z: 468} 142 | m_LocalScale: {x: 100, y: 200, z: 100} 143 | m_Children: [] 144 | m_Father: {fileID: 938911112} 145 | m_RootOrder: 1 146 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 147 | --- !u!65 &103266648 148 | BoxCollider: 149 | m_ObjectHideFlags: 0 150 | m_PrefabParentObject: {fileID: 0} 151 | m_PrefabInternal: {fileID: 0} 152 | m_GameObject: {fileID: 103266646} 153 | m_Material: {fileID: 0} 154 | m_IsTrigger: 0 155 | m_Enabled: 1 156 | serializedVersion: 2 157 | m_Size: {x: 1, y: 1, z: 1} 158 | m_Center: {x: 0, y: 0, z: 0} 159 | --- !u!23 &103266649 160 | MeshRenderer: 161 | m_ObjectHideFlags: 0 162 | m_PrefabParentObject: {fileID: 0} 163 | m_PrefabInternal: {fileID: 0} 164 | m_GameObject: {fileID: 103266646} 165 | m_Enabled: 1 166 | m_CastShadows: 1 167 | m_ReceiveShadows: 1 168 | m_DynamicOccludee: 1 169 | m_MotionVectors: 1 170 | m_LightProbeUsage: 1 171 | m_ReflectionProbeUsage: 1 172 | m_Materials: 173 | - {fileID: 2100000, guid: ef5066ddcad12b04dbaae7a32a4f2ed6, type: 2} 174 | m_StaticBatchInfo: 175 | firstSubMesh: 0 176 | subMeshCount: 0 177 | m_StaticBatchRoot: {fileID: 0} 178 | m_ProbeAnchor: {fileID: 0} 179 | m_LightProbeVolumeOverride: {fileID: 0} 180 | m_ScaleInLightmap: 1 181 | m_PreserveUVs: 0 182 | m_IgnoreNormalsForChartDetection: 0 183 | m_ImportantGI: 0 184 | m_StitchLightmapSeams: 0 185 | m_SelectedEditorRenderState: 3 186 | m_MinimumChartSize: 4 187 | m_AutoUVMaxDistance: 0.5 188 | m_AutoUVMaxAngle: 89 189 | m_LightmapParameters: {fileID: 0} 190 | m_SortingLayerID: 0 191 | m_SortingLayer: 0 192 | m_SortingOrder: 0 193 | --- !u!33 &103266650 194 | MeshFilter: 195 | m_ObjectHideFlags: 0 196 | m_PrefabParentObject: {fileID: 0} 197 | m_PrefabInternal: {fileID: 0} 198 | m_GameObject: {fileID: 103266646} 199 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 200 | --- !u!1 &170076733 201 | GameObject: 202 | m_ObjectHideFlags: 0 203 | m_PrefabParentObject: {fileID: 0} 204 | m_PrefabInternal: {fileID: 0} 205 | serializedVersion: 5 206 | m_Component: 207 | - component: {fileID: 170076735} 208 | - component: {fileID: 170076734} 209 | m_Layer: 0 210 | m_Name: Directional Light 211 | m_TagString: Untagged 212 | m_Icon: {fileID: 0} 213 | m_NavMeshLayer: 0 214 | m_StaticEditorFlags: 0 215 | m_IsActive: 1 216 | --- !u!108 &170076734 217 | Light: 218 | m_ObjectHideFlags: 0 219 | m_PrefabParentObject: {fileID: 0} 220 | m_PrefabInternal: {fileID: 0} 221 | m_GameObject: {fileID: 170076733} 222 | m_Enabled: 1 223 | serializedVersion: 8 224 | m_Type: 1 225 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 226 | m_Intensity: 1 227 | m_Range: 10 228 | m_SpotAngle: 30 229 | m_CookieSize: 10 230 | m_Shadows: 231 | m_Type: 2 232 | m_Resolution: -1 233 | m_CustomResolution: -1 234 | m_Strength: 1 235 | m_Bias: 0.05 236 | m_NormalBias: 0.4 237 | m_NearPlane: 0.2 238 | m_Cookie: {fileID: 0} 239 | m_DrawHalo: 0 240 | m_Flare: {fileID: 0} 241 | m_RenderMode: 0 242 | m_CullingMask: 243 | serializedVersion: 2 244 | m_Bits: 4294967295 245 | m_Lightmapping: 1 246 | m_AreaSize: {x: 1, y: 1} 247 | m_BounceIntensity: 1 248 | m_ColorTemperature: 6570 249 | m_UseColorTemperature: 0 250 | m_ShadowRadius: 0 251 | m_ShadowAngle: 0 252 | --- !u!4 &170076735 253 | Transform: 254 | m_ObjectHideFlags: 0 255 | m_PrefabParentObject: {fileID: 0} 256 | m_PrefabInternal: {fileID: 0} 257 | m_GameObject: {fileID: 170076733} 258 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 259 | m_LocalPosition: {x: 0, y: 3, z: 0} 260 | m_LocalScale: {x: 1, y: 1, z: 1} 261 | m_Children: [] 262 | m_Father: {fileID: 0} 263 | m_RootOrder: 0 264 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 265 | --- !u!1001 &486112143 266 | Prefab: 267 | m_ObjectHideFlags: 0 268 | serializedVersion: 2 269 | m_Modification: 270 | m_TransformParent: {fileID: 0} 271 | m_Modifications: 272 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 273 | type: 2} 274 | propertyPath: m_LocalPosition.x 275 | value: 0 276 | objectReference: {fileID: 0} 277 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 278 | type: 2} 279 | propertyPath: m_LocalPosition.y 280 | value: 0 281 | objectReference: {fileID: 0} 282 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 283 | type: 2} 284 | propertyPath: m_LocalPosition.z 285 | value: 0 286 | objectReference: {fileID: 0} 287 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 288 | type: 2} 289 | propertyPath: m_LocalRotation.x 290 | value: 0 291 | objectReference: {fileID: 0} 292 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 293 | type: 2} 294 | propertyPath: m_LocalRotation.y 295 | value: 0 296 | objectReference: {fileID: 0} 297 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 298 | type: 2} 299 | propertyPath: m_LocalRotation.z 300 | value: 0 301 | objectReference: {fileID: 0} 302 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 303 | type: 2} 304 | propertyPath: m_LocalRotation.w 305 | value: 1 306 | objectReference: {fileID: 0} 307 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 308 | type: 2} 309 | propertyPath: m_RootOrder 310 | value: 4 311 | objectReference: {fileID: 0} 312 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 313 | type: 2} 314 | propertyPath: m_AnchoredPosition.x 315 | value: 0 316 | objectReference: {fileID: 0} 317 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 318 | type: 2} 319 | propertyPath: m_AnchoredPosition.y 320 | value: 0 321 | objectReference: {fileID: 0} 322 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 323 | type: 2} 324 | propertyPath: m_SizeDelta.x 325 | value: 0 326 | objectReference: {fileID: 0} 327 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 328 | type: 2} 329 | propertyPath: m_SizeDelta.y 330 | value: 0 331 | objectReference: {fileID: 0} 332 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 333 | type: 2} 334 | propertyPath: m_AnchorMin.x 335 | value: 0 336 | objectReference: {fileID: 0} 337 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 338 | type: 2} 339 | propertyPath: m_AnchorMin.y 340 | value: 0 341 | objectReference: {fileID: 0} 342 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 343 | type: 2} 344 | propertyPath: m_AnchorMax.x 345 | value: 0 346 | objectReference: {fileID: 0} 347 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 348 | type: 2} 349 | propertyPath: m_AnchorMax.y 350 | value: 0 351 | objectReference: {fileID: 0} 352 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 353 | type: 2} 354 | propertyPath: m_Pivot.x 355 | value: 0 356 | objectReference: {fileID: 0} 357 | - target: {fileID: 224313560478563200, guid: 16580bf03b0b2cd43a91d480153f3fa0, 358 | type: 2} 359 | propertyPath: m_Pivot.y 360 | value: 0 361 | objectReference: {fileID: 0} 362 | - target: {fileID: 114491796399247544, guid: 16580bf03b0b2cd43a91d480153f3fa0, 363 | type: 2} 364 | propertyPath: mouseFlight 365 | value: 366 | objectReference: {fileID: 2010321024} 367 | m_RemovedComponents: [] 368 | m_ParentPrefab: {fileID: 100100000, guid: 16580bf03b0b2cd43a91d480153f3fa0, type: 2} 369 | m_IsPrefabParent: 0 370 | --- !u!4 &655246409 stripped 371 | Transform: 372 | m_PrefabParentObject: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, 373 | type: 2} 374 | m_PrefabInternal: {fileID: 1276877354} 375 | --- !u!1001 &659108612 376 | Prefab: 377 | m_ObjectHideFlags: 0 378 | serializedVersion: 2 379 | m_Modification: 380 | m_TransformParent: {fileID: 0} 381 | m_Modifications: 382 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 383 | propertyPath: m_LocalPosition.x 384 | value: 0 385 | objectReference: {fileID: 0} 386 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 387 | propertyPath: m_LocalPosition.y 388 | value: 285.3 389 | objectReference: {fileID: 0} 390 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 391 | propertyPath: m_LocalPosition.z 392 | value: 0 393 | objectReference: {fileID: 0} 394 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 395 | propertyPath: m_LocalRotation.x 396 | value: -0 397 | objectReference: {fileID: 0} 398 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 399 | propertyPath: m_LocalRotation.y 400 | value: -0 401 | objectReference: {fileID: 0} 402 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 403 | propertyPath: m_LocalRotation.z 404 | value: -0 405 | objectReference: {fileID: 0} 406 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 407 | propertyPath: m_LocalRotation.w 408 | value: 1 409 | objectReference: {fileID: 0} 410 | - target: {fileID: 4614794542237088, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 411 | propertyPath: m_RootOrder 412 | value: 3 413 | objectReference: {fileID: 0} 414 | - target: {fileID: 114412280367074530, guid: 1ffc29c315992624cb793d6cbf2c4ac1, 415 | type: 2} 416 | propertyPath: aircraft 417 | value: 418 | objectReference: {fileID: 655246409} 419 | m_RemovedComponents: [] 420 | m_ParentPrefab: {fileID: 100100000, guid: 1ffc29c315992624cb793d6cbf2c4ac1, type: 2} 421 | m_IsPrefabParent: 0 422 | --- !u!1 &748557972 423 | GameObject: 424 | m_ObjectHideFlags: 0 425 | m_PrefabParentObject: {fileID: 0} 426 | m_PrefabInternal: {fileID: 0} 427 | serializedVersion: 5 428 | m_Component: 429 | - component: {fileID: 748557973} 430 | - component: {fileID: 748557976} 431 | - component: {fileID: 748557975} 432 | - component: {fileID: 748557974} 433 | m_Layer: 0 434 | m_Name: Cube 435 | m_TagString: Untagged 436 | m_Icon: {fileID: 0} 437 | m_NavMeshLayer: 0 438 | m_StaticEditorFlags: 4294967295 439 | m_IsActive: 1 440 | --- !u!4 &748557973 441 | Transform: 442 | m_ObjectHideFlags: 0 443 | m_PrefabParentObject: {fileID: 0} 444 | m_PrefabInternal: {fileID: 0} 445 | m_GameObject: {fileID: 748557972} 446 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 447 | m_LocalPosition: {x: -499, y: 100, z: 1635} 448 | m_LocalScale: {x: 100, y: 200, z: 100} 449 | m_Children: [] 450 | m_Father: {fileID: 938911112} 451 | m_RootOrder: 4 452 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 453 | --- !u!65 &748557974 454 | BoxCollider: 455 | m_ObjectHideFlags: 0 456 | m_PrefabParentObject: {fileID: 0} 457 | m_PrefabInternal: {fileID: 0} 458 | m_GameObject: {fileID: 748557972} 459 | m_Material: {fileID: 0} 460 | m_IsTrigger: 0 461 | m_Enabled: 1 462 | serializedVersion: 2 463 | m_Size: {x: 1, y: 1, z: 1} 464 | m_Center: {x: 0, y: 0, z: 0} 465 | --- !u!23 &748557975 466 | MeshRenderer: 467 | m_ObjectHideFlags: 0 468 | m_PrefabParentObject: {fileID: 0} 469 | m_PrefabInternal: {fileID: 0} 470 | m_GameObject: {fileID: 748557972} 471 | m_Enabled: 1 472 | m_CastShadows: 1 473 | m_ReceiveShadows: 1 474 | m_DynamicOccludee: 1 475 | m_MotionVectors: 1 476 | m_LightProbeUsage: 1 477 | m_ReflectionProbeUsage: 1 478 | m_Materials: 479 | - {fileID: 2100000, guid: ef5066ddcad12b04dbaae7a32a4f2ed6, type: 2} 480 | m_StaticBatchInfo: 481 | firstSubMesh: 0 482 | subMeshCount: 0 483 | m_StaticBatchRoot: {fileID: 0} 484 | m_ProbeAnchor: {fileID: 0} 485 | m_LightProbeVolumeOverride: {fileID: 0} 486 | m_ScaleInLightmap: 1 487 | m_PreserveUVs: 0 488 | m_IgnoreNormalsForChartDetection: 0 489 | m_ImportantGI: 0 490 | m_StitchLightmapSeams: 0 491 | m_SelectedEditorRenderState: 3 492 | m_MinimumChartSize: 4 493 | m_AutoUVMaxDistance: 0.5 494 | m_AutoUVMaxAngle: 89 495 | m_LightmapParameters: {fileID: 0} 496 | m_SortingLayerID: 0 497 | m_SortingLayer: 0 498 | m_SortingOrder: 0 499 | --- !u!33 &748557976 500 | MeshFilter: 501 | m_ObjectHideFlags: 0 502 | m_PrefabParentObject: {fileID: 0} 503 | m_PrefabInternal: {fileID: 0} 504 | m_GameObject: {fileID: 748557972} 505 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 506 | --- !u!1 &938911111 507 | GameObject: 508 | m_ObjectHideFlags: 0 509 | m_PrefabParentObject: {fileID: 0} 510 | m_PrefabInternal: {fileID: 0} 511 | serializedVersion: 5 512 | m_Component: 513 | - component: {fileID: 938911112} 514 | m_Layer: 0 515 | m_Name: Scenery 516 | m_TagString: Untagged 517 | m_Icon: {fileID: 0} 518 | m_NavMeshLayer: 0 519 | m_StaticEditorFlags: 4294967295 520 | m_IsActive: 1 521 | --- !u!4 &938911112 522 | Transform: 523 | m_ObjectHideFlags: 0 524 | m_PrefabParentObject: {fileID: 0} 525 | m_PrefabInternal: {fileID: 0} 526 | m_GameObject: {fileID: 938911111} 527 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 528 | m_LocalPosition: {x: 0, y: 0, z: 0} 529 | m_LocalScale: {x: 1, y: 1, z: 1} 530 | m_Children: 531 | - {fileID: 2008349565} 532 | - {fileID: 103266647} 533 | - {fileID: 2088018737} 534 | - {fileID: 1971254800} 535 | - {fileID: 748557973} 536 | m_Father: {fileID: 0} 537 | m_RootOrder: 1 538 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 539 | --- !u!1001 &1276877354 540 | Prefab: 541 | m_ObjectHideFlags: 0 542 | serializedVersion: 2 543 | m_Modification: 544 | m_TransformParent: {fileID: 0} 545 | m_Modifications: 546 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 547 | propertyPath: m_LocalPosition.x 548 | value: 0 549 | objectReference: {fileID: 0} 550 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 551 | propertyPath: m_LocalPosition.y 552 | value: 285.3 553 | objectReference: {fileID: 0} 554 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 555 | propertyPath: m_LocalPosition.z 556 | value: 0 557 | objectReference: {fileID: 0} 558 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 559 | propertyPath: m_LocalRotation.x 560 | value: 0 561 | objectReference: {fileID: 0} 562 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 563 | propertyPath: m_LocalRotation.y 564 | value: 0 565 | objectReference: {fileID: 0} 566 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 567 | propertyPath: m_LocalRotation.z 568 | value: 0 569 | objectReference: {fileID: 0} 570 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 571 | propertyPath: m_LocalRotation.w 572 | value: 1 573 | objectReference: {fileID: 0} 574 | - target: {fileID: 4563113176137864, guid: 76845026de374da4aa455cd164e63143, type: 2} 575 | propertyPath: m_RootOrder 576 | value: 2 577 | objectReference: {fileID: 0} 578 | - target: {fileID: 114329657595640044, guid: 76845026de374da4aa455cd164e63143, 579 | type: 2} 580 | propertyPath: controller 581 | value: 582 | objectReference: {fileID: 2010321024} 583 | m_RemovedComponents: [] 584 | m_ParentPrefab: {fileID: 100100000, guid: 76845026de374da4aa455cd164e63143, type: 2} 585 | m_IsPrefabParent: 0 586 | --- !u!1 &1971254799 587 | GameObject: 588 | m_ObjectHideFlags: 0 589 | m_PrefabParentObject: {fileID: 0} 590 | m_PrefabInternal: {fileID: 0} 591 | serializedVersion: 5 592 | m_Component: 593 | - component: {fileID: 1971254800} 594 | - component: {fileID: 1971254803} 595 | - component: {fileID: 1971254802} 596 | - component: {fileID: 1971254801} 597 | m_Layer: 0 598 | m_Name: Cube 599 | m_TagString: Untagged 600 | m_Icon: {fileID: 0} 601 | m_NavMeshLayer: 0 602 | m_StaticEditorFlags: 4294967295 603 | m_IsActive: 1 604 | --- !u!4 &1971254800 605 | Transform: 606 | m_ObjectHideFlags: 0 607 | m_PrefabParentObject: {fileID: 0} 608 | m_PrefabInternal: {fileID: 0} 609 | m_GameObject: {fileID: 1971254799} 610 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 611 | m_LocalPosition: {x: -1178, y: 100, z: -544} 612 | m_LocalScale: {x: 100, y: 200, z: 100} 613 | m_Children: [] 614 | m_Father: {fileID: 938911112} 615 | m_RootOrder: 3 616 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 617 | --- !u!65 &1971254801 618 | BoxCollider: 619 | m_ObjectHideFlags: 0 620 | m_PrefabParentObject: {fileID: 0} 621 | m_PrefabInternal: {fileID: 0} 622 | m_GameObject: {fileID: 1971254799} 623 | m_Material: {fileID: 0} 624 | m_IsTrigger: 0 625 | m_Enabled: 1 626 | serializedVersion: 2 627 | m_Size: {x: 1, y: 1, z: 1} 628 | m_Center: {x: 0, y: 0, z: 0} 629 | --- !u!23 &1971254802 630 | MeshRenderer: 631 | m_ObjectHideFlags: 0 632 | m_PrefabParentObject: {fileID: 0} 633 | m_PrefabInternal: {fileID: 0} 634 | m_GameObject: {fileID: 1971254799} 635 | m_Enabled: 1 636 | m_CastShadows: 1 637 | m_ReceiveShadows: 1 638 | m_DynamicOccludee: 1 639 | m_MotionVectors: 1 640 | m_LightProbeUsage: 1 641 | m_ReflectionProbeUsage: 1 642 | m_Materials: 643 | - {fileID: 2100000, guid: ef5066ddcad12b04dbaae7a32a4f2ed6, type: 2} 644 | m_StaticBatchInfo: 645 | firstSubMesh: 0 646 | subMeshCount: 0 647 | m_StaticBatchRoot: {fileID: 0} 648 | m_ProbeAnchor: {fileID: 0} 649 | m_LightProbeVolumeOverride: {fileID: 0} 650 | m_ScaleInLightmap: 1 651 | m_PreserveUVs: 0 652 | m_IgnoreNormalsForChartDetection: 0 653 | m_ImportantGI: 0 654 | m_StitchLightmapSeams: 0 655 | m_SelectedEditorRenderState: 3 656 | m_MinimumChartSize: 4 657 | m_AutoUVMaxDistance: 0.5 658 | m_AutoUVMaxAngle: 89 659 | m_LightmapParameters: {fileID: 0} 660 | m_SortingLayerID: 0 661 | m_SortingLayer: 0 662 | m_SortingOrder: 0 663 | --- !u!33 &1971254803 664 | MeshFilter: 665 | m_ObjectHideFlags: 0 666 | m_PrefabParentObject: {fileID: 0} 667 | m_PrefabInternal: {fileID: 0} 668 | m_GameObject: {fileID: 1971254799} 669 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 670 | --- !u!1 &2008349564 671 | GameObject: 672 | m_ObjectHideFlags: 0 673 | m_PrefabParentObject: {fileID: 0} 674 | m_PrefabInternal: {fileID: 0} 675 | serializedVersion: 5 676 | m_Component: 677 | - component: {fileID: 2008349565} 678 | - component: {fileID: 2008349568} 679 | - component: {fileID: 2008349567} 680 | - component: {fileID: 2008349566} 681 | m_Layer: 0 682 | m_Name: Plane 683 | m_TagString: Untagged 684 | m_Icon: {fileID: 0} 685 | m_NavMeshLayer: 0 686 | m_StaticEditorFlags: 4294967295 687 | m_IsActive: 1 688 | --- !u!4 &2008349565 689 | Transform: 690 | m_ObjectHideFlags: 0 691 | m_PrefabParentObject: {fileID: 0} 692 | m_PrefabInternal: {fileID: 0} 693 | m_GameObject: {fileID: 2008349564} 694 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 695 | m_LocalPosition: {x: 0, y: 0, z: 0} 696 | m_LocalScale: {x: 1000, y: 1, z: 1000} 697 | m_Children: [] 698 | m_Father: {fileID: 938911112} 699 | m_RootOrder: 0 700 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 701 | --- !u!64 &2008349566 702 | MeshCollider: 703 | m_ObjectHideFlags: 0 704 | m_PrefabParentObject: {fileID: 0} 705 | m_PrefabInternal: {fileID: 0} 706 | m_GameObject: {fileID: 2008349564} 707 | m_Material: {fileID: 0} 708 | m_IsTrigger: 0 709 | m_Enabled: 1 710 | serializedVersion: 3 711 | m_Convex: 0 712 | m_CookingOptions: 14 713 | m_SkinWidth: 0.01 714 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 715 | --- !u!23 &2008349567 716 | MeshRenderer: 717 | m_ObjectHideFlags: 0 718 | m_PrefabParentObject: {fileID: 0} 719 | m_PrefabInternal: {fileID: 0} 720 | m_GameObject: {fileID: 2008349564} 721 | m_Enabled: 1 722 | m_CastShadows: 1 723 | m_ReceiveShadows: 1 724 | m_DynamicOccludee: 1 725 | m_MotionVectors: 1 726 | m_LightProbeUsage: 1 727 | m_ReflectionProbeUsage: 1 728 | m_Materials: 729 | - {fileID: 2100000, guid: 5ca49f2265d381648a018a5be176a4c4, type: 2} 730 | m_StaticBatchInfo: 731 | firstSubMesh: 0 732 | subMeshCount: 0 733 | m_StaticBatchRoot: {fileID: 0} 734 | m_ProbeAnchor: {fileID: 0} 735 | m_LightProbeVolumeOverride: {fileID: 0} 736 | m_ScaleInLightmap: 1 737 | m_PreserveUVs: 0 738 | m_IgnoreNormalsForChartDetection: 0 739 | m_ImportantGI: 0 740 | m_StitchLightmapSeams: 0 741 | m_SelectedEditorRenderState: 3 742 | m_MinimumChartSize: 4 743 | m_AutoUVMaxDistance: 0.5 744 | m_AutoUVMaxAngle: 89 745 | m_LightmapParameters: {fileID: 0} 746 | m_SortingLayerID: 0 747 | m_SortingLayer: 0 748 | m_SortingOrder: 0 749 | --- !u!33 &2008349568 750 | MeshFilter: 751 | m_ObjectHideFlags: 0 752 | m_PrefabParentObject: {fileID: 0} 753 | m_PrefabInternal: {fileID: 0} 754 | m_GameObject: {fileID: 2008349564} 755 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 756 | --- !u!114 &2010321024 stripped 757 | MonoBehaviour: 758 | m_PrefabParentObject: {fileID: 114412280367074530, guid: 1ffc29c315992624cb793d6cbf2c4ac1, 759 | type: 2} 760 | m_PrefabInternal: {fileID: 659108612} 761 | m_Script: {fileID: 11500000, guid: d9396f98894f2da47b58c709d5591ad8, type: 3} 762 | --- !u!1 &2088018736 763 | GameObject: 764 | m_ObjectHideFlags: 0 765 | m_PrefabParentObject: {fileID: 0} 766 | m_PrefabInternal: {fileID: 0} 767 | serializedVersion: 5 768 | m_Component: 769 | - component: {fileID: 2088018737} 770 | - component: {fileID: 2088018740} 771 | - component: {fileID: 2088018739} 772 | - component: {fileID: 2088018738} 773 | m_Layer: 0 774 | m_Name: Cube 775 | m_TagString: Untagged 776 | m_Icon: {fileID: 0} 777 | m_NavMeshLayer: 0 778 | m_StaticEditorFlags: 4294967295 779 | m_IsActive: 1 780 | --- !u!4 &2088018737 781 | Transform: 782 | m_ObjectHideFlags: 0 783 | m_PrefabParentObject: {fileID: 0} 784 | m_PrefabInternal: {fileID: 0} 785 | m_GameObject: {fileID: 2088018736} 786 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 787 | m_LocalPosition: {x: 364.4, y: 100, z: 190.3} 788 | m_LocalScale: {x: 100, y: 200, z: 100} 789 | m_Children: [] 790 | m_Father: {fileID: 938911112} 791 | m_RootOrder: 2 792 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 793 | --- !u!65 &2088018738 794 | BoxCollider: 795 | m_ObjectHideFlags: 0 796 | m_PrefabParentObject: {fileID: 0} 797 | m_PrefabInternal: {fileID: 0} 798 | m_GameObject: {fileID: 2088018736} 799 | m_Material: {fileID: 0} 800 | m_IsTrigger: 0 801 | m_Enabled: 1 802 | serializedVersion: 2 803 | m_Size: {x: 1, y: 1, z: 1} 804 | m_Center: {x: 0, y: 0, z: 0} 805 | --- !u!23 &2088018739 806 | MeshRenderer: 807 | m_ObjectHideFlags: 0 808 | m_PrefabParentObject: {fileID: 0} 809 | m_PrefabInternal: {fileID: 0} 810 | m_GameObject: {fileID: 2088018736} 811 | m_Enabled: 1 812 | m_CastShadows: 1 813 | m_ReceiveShadows: 1 814 | m_DynamicOccludee: 1 815 | m_MotionVectors: 1 816 | m_LightProbeUsage: 1 817 | m_ReflectionProbeUsage: 1 818 | m_Materials: 819 | - {fileID: 2100000, guid: ef5066ddcad12b04dbaae7a32a4f2ed6, type: 2} 820 | m_StaticBatchInfo: 821 | firstSubMesh: 0 822 | subMeshCount: 0 823 | m_StaticBatchRoot: {fileID: 0} 824 | m_ProbeAnchor: {fileID: 0} 825 | m_LightProbeVolumeOverride: {fileID: 0} 826 | m_ScaleInLightmap: 1 827 | m_PreserveUVs: 0 828 | m_IgnoreNormalsForChartDetection: 0 829 | m_ImportantGI: 0 830 | m_StitchLightmapSeams: 0 831 | m_SelectedEditorRenderState: 3 832 | m_MinimumChartSize: 4 833 | m_AutoUVMaxDistance: 0.5 834 | m_AutoUVMaxAngle: 89 835 | m_LightmapParameters: {fileID: 0} 836 | m_SortingLayerID: 0 837 | m_SortingLayer: 0 838 | m_SortingOrder: 0 839 | --- !u!33 &2088018740 840 | MeshFilter: 841 | m_ObjectHideFlags: 0 842 | m_PrefabParentObject: {fileID: 0} 843 | m_PrefabInternal: {fileID: 0} 844 | m_GameObject: {fileID: 2088018736} 845 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 846 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scenes/DemoFlight.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 20dddf1c73edf8b43a45ac49c16cb892 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f92b72444980ff34b9df0a5b6030593d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scripts/Hud.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) Brian Hernandez. All rights reserved. 3 | // Licensed under the MIT license. See LICENSE file in the project root for details. 4 | // 5 | 6 | using UnityEngine; 7 | 8 | namespace MFlight.Demo 9 | { 10 | public class Hud : MonoBehaviour 11 | { 12 | [Header("Components")] 13 | [SerializeField] private MouseFlightController mouseFlight = null; 14 | 15 | [Header("HUD Elements")] 16 | [SerializeField] private RectTransform boresight = null; 17 | [SerializeField] private RectTransform mousePos = null; 18 | 19 | private Camera playerCam = null; 20 | 21 | private void Awake() 22 | { 23 | if (mouseFlight == null) 24 | Debug.LogError(name + ": Hud - Mouse Flight Controller not assigned!"); 25 | 26 | playerCam = mouseFlight.GetComponentInChildren(); 27 | 28 | if (playerCam == null) 29 | Debug.LogError(name + ": Hud - No camera found on assigned Mouse Flight Controller!"); 30 | } 31 | 32 | private void Update() 33 | { 34 | if (mouseFlight == null || playerCam == null) 35 | return; 36 | 37 | UpdateGraphics(mouseFlight); 38 | } 39 | 40 | private void UpdateGraphics(MouseFlightController controller) 41 | { 42 | if (boresight != null) 43 | { 44 | boresight.position = playerCam.WorldToScreenPoint(controller.BoresightPos); 45 | boresight.gameObject.SetActive(boresight.position.z > 1f); 46 | } 47 | 48 | if (mousePos != null) 49 | { 50 | mousePos.position = playerCam.WorldToScreenPoint(controller.MouseAimPos); 51 | mousePos.gameObject.SetActive(mousePos.position.z > 1f); 52 | } 53 | } 54 | 55 | public void SetReferenceMouseFlight(MouseFlightController controller) 56 | { 57 | mouseFlight = controller; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scripts/Hud.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 482a72f78627d5042a6c7ac933bb722b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scripts/Plane.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) Brian Hernandez. All rights reserved. 3 | // Licensed under the MIT license. See LICENSE file in the project root for details. 4 | // 5 | 6 | using UnityEngine; 7 | 8 | namespace MFlight.Demo 9 | { 10 | /// 11 | /// This is a very demo-ey example of how to interpret the input generated by the 12 | /// MouseFlightController. The plane flies towards the MouseAimPos automatically in 13 | /// a similar fashion to how War Thunder's Instructor does it. There are also 14 | /// keyboard overrides for flight control. It's not perfect, but it works well enough 15 | /// for an example. 16 | /// 17 | [RequireComponent(typeof(Rigidbody))] 18 | public class Plane : MonoBehaviour 19 | { 20 | [Header("Components")] 21 | [SerializeField] private MouseFlightController controller = null; 22 | 23 | [Header("Physics")] 24 | [Tooltip("Force to push plane forwards with")] public float thrust = 100f; 25 | [Tooltip("Pitch, Yaw, Roll")] public Vector3 turnTorque = new Vector3(90f, 25f, 45f); 26 | [Tooltip("Multiplier for all forces")] public float forceMult = 1000f; 27 | 28 | [Header("Autopilot")] 29 | [Tooltip("Sensitivity for autopilot flight.")] public float sensitivity = 5f; 30 | [Tooltip("Angle at which airplane banks fully into target.")] public float aggressiveTurnAngle = 10f; 31 | 32 | [Header("Input")] 33 | [SerializeField] [Range(-1f, 1f)] private float pitch = 0f; 34 | [SerializeField] [Range(-1f, 1f)] private float yaw = 0f; 35 | [SerializeField] [Range(-1f, 1f)] private float roll = 0f; 36 | 37 | public float Pitch { set { pitch = Mathf.Clamp(value, -1f, 1f); } get { return pitch; } } 38 | public float Yaw { set { yaw = Mathf.Clamp(value, -1f, 1f); } get { return yaw; } } 39 | public float Roll { set { roll = Mathf.Clamp(value, -1f, 1f); } get { return pitch; } } 40 | 41 | private Rigidbody rigid; 42 | 43 | private bool rollOverride = false; 44 | private bool pitchOverride = false; 45 | 46 | private void Awake() 47 | { 48 | rigid = GetComponent(); 49 | 50 | if (controller == null) 51 | Debug.LogError(name + ": Plane - Missing reference to MouseFlightController!"); 52 | } 53 | 54 | private void Update() 55 | { 56 | // When the player commands their own stick input, it should override what the 57 | // autopilot is trying to do. 58 | rollOverride = false; 59 | pitchOverride = false; 60 | 61 | float keyboardRoll = Input.GetAxis("Horizontal"); 62 | if (Mathf.Abs(keyboardRoll) > .25f) 63 | { 64 | rollOverride = true; 65 | } 66 | 67 | float keyboardPitch = Input.GetAxis("Vertical"); 68 | if (Mathf.Abs(keyboardPitch) > .25f) 69 | { 70 | pitchOverride = true; 71 | rollOverride = true; 72 | } 73 | 74 | // Calculate the autopilot stick inputs. 75 | float autoYaw = 0f; 76 | float autoPitch = 0f; 77 | float autoRoll = 0f; 78 | if (controller != null) 79 | RunAutopilot(controller.MouseAimPos, out autoYaw, out autoPitch, out autoRoll); 80 | 81 | // Use either keyboard or autopilot input. 82 | yaw = autoYaw; 83 | pitch = (pitchOverride) ? keyboardPitch : autoPitch; 84 | roll = (rollOverride) ? keyboardRoll : autoRoll; 85 | } 86 | 87 | private void RunAutopilot(Vector3 flyTarget, out float yaw, out float pitch, out float roll) 88 | { 89 | // This is my usual trick of converting the fly to position to local space. 90 | // You can derive a lot of information from where the target is relative to self. 91 | var localFlyTarget = transform.InverseTransformPoint(flyTarget).normalized * sensitivity; 92 | var angleOffTarget = Vector3.Angle(transform.forward, flyTarget - transform.position); 93 | 94 | // IMPORTANT! 95 | // These inputs are created proportionally. This means it can be prone to 96 | // overshooting. The physics in this example are tweaked so that it's not a big 97 | // issue, but in something with different or more realistic physics this might 98 | // not be the case. Use of a PID controller for each axis is highly recommended. 99 | 100 | // ==================== 101 | // PITCH AND YAW 102 | // ==================== 103 | 104 | // Yaw/Pitch into the target so as to put it directly in front of the aircraft. 105 | // A target is directly in front the aircraft if the relative X and Y are both 106 | // zero. Note this does not handle for the case where the target is directly behind. 107 | yaw = Mathf.Clamp(localFlyTarget.x, -1f, 1f); 108 | pitch = -Mathf.Clamp(localFlyTarget.y, -1f, 1f); 109 | 110 | // ==================== 111 | // ROLL 112 | // ==================== 113 | 114 | // Roll is a little special because there are two different roll commands depending 115 | // on the situation. When the target is off axis, then the plane should roll into it. 116 | // When the target is directly in front, the plane should fly wings level. 117 | 118 | // An "aggressive roll" is input such that the aircraft rolls into the target so 119 | // that pitching up (handled above) will put the nose onto the target. This is 120 | // done by rolling such that the X component of the target's position is zeroed. 121 | var agressiveRoll = Mathf.Clamp(localFlyTarget.x, -1f, 1f); 122 | 123 | // A "wings level roll" is a roll commands the aircraft to fly wings level. 124 | // This can be done by zeroing out the Y component of the aircraft's right. 125 | var wingsLevelRoll = transform.right.y; 126 | 127 | // Blend between auto level and banking into the target. 128 | var wingsLevelInfluence = Mathf.InverseLerp(0f, aggressiveTurnAngle, angleOffTarget); 129 | roll = Mathf.Lerp(wingsLevelRoll, agressiveRoll, wingsLevelInfluence); 130 | } 131 | 132 | private void FixedUpdate() 133 | { 134 | // Ultra simple flight where the plane just gets pushed forward and manipulated 135 | // with torques to turn. 136 | rigid.AddRelativeForce(Vector3.forward * thrust * forceMult, ForceMode.Force); 137 | rigid.AddRelativeTorque(new Vector3(turnTorque.x * pitch, 138 | turnTorque.y * yaw, 139 | -turnTorque.z * roll) * forceMult, 140 | ForceMode.Force); 141 | } 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/Scripts/Plane.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e59c5387dadf66844ae1eed2cbe1e654 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3537bc7e2ca6757458f4f6313445e25f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/UI/Crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Assets/MouseFlight/Demo/UI/Crosshair.png -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/UI/Crosshair.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 921be87207a049f41b7a921881c5a712 3 | timeCreated: 1503454733 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 0 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: 1 34 | nPOTScale: 0 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 1 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 1 46 | spriteTessellationDetail: -1 47 | textureType: 8 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 2048 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/UI/MouseCrosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Assets/MouseFlight/Demo/UI/MouseCrosshair.png -------------------------------------------------------------------------------- /Assets/MouseFlight/Demo/UI/MouseCrosshair.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d782fbeb8af831440a3b3bc3c6116108 3 | timeCreated: 1503455014 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 0 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: 1 34 | nPOTScale: 0 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 1 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 1 46 | spriteTessellationDetail: -1 47 | textureType: 8 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 2048 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ccead141e57c944ab530771bbec3667 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Prefabs/MouseFlightRig.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1340265690153048} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1097798616190120 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4145331850755762} 22 | m_Layer: 0 23 | m_Name: MouseAim 24 | m_TagString: Untagged 25 | m_Icon: {fileID: 0} 26 | m_NavMeshLayer: 0 27 | m_StaticEditorFlags: 0 28 | m_IsActive: 1 29 | --- !u!1 &1340265690153048 30 | GameObject: 31 | m_ObjectHideFlags: 0 32 | m_PrefabParentObject: {fileID: 0} 33 | m_PrefabInternal: {fileID: 100100000} 34 | serializedVersion: 5 35 | m_Component: 36 | - component: {fileID: 4614794542237088} 37 | - component: {fileID: 114412280367074530} 38 | m_Layer: 0 39 | m_Name: MouseFlightRig 40 | m_TagString: Untagged 41 | m_Icon: {fileID: 0} 42 | m_NavMeshLayer: 0 43 | m_StaticEditorFlags: 0 44 | m_IsActive: 1 45 | --- !u!1 &1411132086413374 46 | GameObject: 47 | m_ObjectHideFlags: 1 48 | m_PrefabParentObject: {fileID: 0} 49 | m_PrefabInternal: {fileID: 100100000} 50 | serializedVersion: 5 51 | m_Component: 52 | - component: {fileID: 4696854366641388} 53 | - component: {fileID: 20238957528808562} 54 | - component: {fileID: 81750026235556554} 55 | m_Layer: 0 56 | m_Name: Main Camera 57 | m_TagString: MainCamera 58 | m_Icon: {fileID: 0} 59 | m_NavMeshLayer: 0 60 | m_StaticEditorFlags: 0 61 | m_IsActive: 1 62 | --- !u!1 &1767197396268232 63 | GameObject: 64 | m_ObjectHideFlags: 0 65 | m_PrefabParentObject: {fileID: 0} 66 | m_PrefabInternal: {fileID: 100100000} 67 | serializedVersion: 5 68 | m_Component: 69 | - component: {fileID: 4543348934785170} 70 | m_Layer: 0 71 | m_Name: CamRig 72 | m_TagString: Untagged 73 | m_Icon: {fileID: 0} 74 | m_NavMeshLayer: 0 75 | m_StaticEditorFlags: 0 76 | m_IsActive: 1 77 | --- !u!4 &4145331850755762 78 | Transform: 79 | m_ObjectHideFlags: 1 80 | m_PrefabParentObject: {fileID: 0} 81 | m_PrefabInternal: {fileID: 100100000} 82 | m_GameObject: {fileID: 1097798616190120} 83 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 84 | m_LocalPosition: {x: 0, y: 0, z: 0} 85 | m_LocalScale: {x: 1, y: 1, z: 1} 86 | m_Children: [] 87 | m_Father: {fileID: 4614794542237088} 88 | m_RootOrder: 0 89 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 90 | --- !u!4 &4543348934785170 91 | Transform: 92 | m_ObjectHideFlags: 1 93 | m_PrefabParentObject: {fileID: 0} 94 | m_PrefabInternal: {fileID: 100100000} 95 | m_GameObject: {fileID: 1767197396268232} 96 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 97 | m_LocalPosition: {x: 0, y: 0, z: 0} 98 | m_LocalScale: {x: 1, y: 1, z: 1} 99 | m_Children: 100 | - {fileID: 4696854366641388} 101 | m_Father: {fileID: 4614794542237088} 102 | m_RootOrder: 1 103 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 104 | --- !u!4 &4614794542237088 105 | Transform: 106 | m_ObjectHideFlags: 1 107 | m_PrefabParentObject: {fileID: 0} 108 | m_PrefabInternal: {fileID: 100100000} 109 | m_GameObject: {fileID: 1340265690153048} 110 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 111 | m_LocalPosition: {x: 0, y: 0, z: 0} 112 | m_LocalScale: {x: 1, y: 1, z: 1} 113 | m_Children: 114 | - {fileID: 4145331850755762} 115 | - {fileID: 4543348934785170} 116 | m_Father: {fileID: 0} 117 | m_RootOrder: 0 118 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 119 | --- !u!4 &4696854366641388 120 | Transform: 121 | m_ObjectHideFlags: 1 122 | m_PrefabParentObject: {fileID: 0} 123 | m_PrefabInternal: {fileID: 100100000} 124 | m_GameObject: {fileID: 1411132086413374} 125 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 126 | m_LocalPosition: {x: 0, y: 9, z: -30} 127 | m_LocalScale: {x: 1, y: 1, z: 1} 128 | m_Children: [] 129 | m_Father: {fileID: 4543348934785170} 130 | m_RootOrder: 0 131 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 132 | --- !u!20 &20238957528808562 133 | Camera: 134 | m_ObjectHideFlags: 1 135 | m_PrefabParentObject: {fileID: 0} 136 | m_PrefabInternal: {fileID: 100100000} 137 | m_GameObject: {fileID: 1411132086413374} 138 | m_Enabled: 1 139 | serializedVersion: 2 140 | m_ClearFlags: 1 141 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 142 | m_NormalizedViewPortRect: 143 | serializedVersion: 2 144 | x: 0 145 | y: 0 146 | width: 1 147 | height: 1 148 | near clip plane: 1 149 | far clip plane: 10000 150 | field of view: 60 151 | orthographic: 0 152 | orthographic size: 5 153 | m_Depth: -1 154 | m_CullingMask: 155 | serializedVersion: 2 156 | m_Bits: 4294967295 157 | m_RenderingPath: -1 158 | m_TargetTexture: {fileID: 0} 159 | m_TargetDisplay: 0 160 | m_TargetEye: 3 161 | m_HDR: 1 162 | m_AllowMSAA: 1 163 | m_AllowDynamicResolution: 0 164 | m_ForceIntoRT: 0 165 | m_OcclusionCulling: 1 166 | m_StereoConvergence: 10 167 | m_StereoSeparation: 0.022 168 | --- !u!81 &81750026235556554 169 | AudioListener: 170 | m_ObjectHideFlags: 1 171 | m_PrefabParentObject: {fileID: 0} 172 | m_PrefabInternal: {fileID: 100100000} 173 | m_GameObject: {fileID: 1411132086413374} 174 | m_Enabled: 1 175 | --- !u!114 &114412280367074530 176 | MonoBehaviour: 177 | m_ObjectHideFlags: 1 178 | m_PrefabParentObject: {fileID: 0} 179 | m_PrefabInternal: {fileID: 100100000} 180 | m_GameObject: {fileID: 1340265690153048} 181 | m_Enabled: 1 182 | m_EditorHideFlags: 0 183 | m_Script: {fileID: 11500000, guid: d9396f98894f2da47b58c709d5591ad8, type: 3} 184 | m_Name: 185 | m_EditorClassIdentifier: 186 | aircraft: {fileID: 0} 187 | mouseAim: {fileID: 4145331850755762} 188 | cameraRig: {fileID: 4543348934785170} 189 | cam: {fileID: 4696854366641388} 190 | useFixed: 0 191 | camSmoothSpeed: 5 192 | mouseSensitivity: 3 193 | aimDistance: 500 194 | showDebugInfo: 0 195 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Prefabs/MouseFlightRig.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ffc29c315992624cb793d6cbf2c4ac1 3 | timeCreated: 1546748872 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 100100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55249a5e54144c84c984fd372bbbd7ca 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Scripts/MouseFlightController.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) Brian Hernandez. All rights reserved. 3 | // Licensed under the MIT license. See LICENSE file in the project root for details. 4 | // 5 | 6 | using UnityEngine; 7 | 8 | namespace MFlight 9 | { 10 | /// 11 | /// Combination of camera rig and controller for aircraft. Requires a properly set 12 | /// up rig. I highly recommend either using or referencing the included prefab. 13 | /// 14 | public class MouseFlightController : MonoBehaviour 15 | { 16 | [Header("Components")] 17 | [SerializeField] [Tooltip("Transform of the aircraft the rig follows and references")] 18 | private Transform aircraft = null; 19 | [SerializeField] [Tooltip("Transform of the object the mouse rotates to generate MouseAim position")] 20 | private Transform mouseAim = null; 21 | [SerializeField] [Tooltip("Transform of the object on the rig which the camera is attached to")] 22 | private Transform cameraRig = null; 23 | [SerializeField] [Tooltip("Transform of the camera itself")] 24 | private Transform cam = null; 25 | 26 | [Header("Options")] 27 | [SerializeField] [Tooltip("Follow aircraft using fixed update loop")] 28 | private bool useFixed = true; 29 | 30 | [SerializeField] [Tooltip("How quickly the camera tracks the mouse aim point.")] 31 | private float camSmoothSpeed = 5f; 32 | 33 | [SerializeField] [Tooltip("Mouse sensitivity for the mouse flight target")] 34 | private float mouseSensitivity = 3f; 35 | 36 | [SerializeField] [Tooltip("How far the boresight and mouse flight are from the aircraft")] 37 | private float aimDistance = 500f; 38 | 39 | [Space] 40 | [SerializeField] [Tooltip("How far the boresight and mouse flight are from the aircraft")] 41 | private bool showDebugInfo = false; 42 | 43 | /// 44 | /// Get a point along the aircraft's boresight projected out to aimDistance meters. 45 | /// Useful for drawing a crosshair to aim fixed forward guns with, or to indicate what 46 | /// direction the aircraft is pointed. 47 | /// 48 | public Vector3 BoresightPos 49 | { 50 | get 51 | { 52 | return aircraft == null 53 | ? transform.forward * aimDistance 54 | : (aircraft.transform.forward * aimDistance) + aircraft.transform.position; 55 | } 56 | } 57 | 58 | /// 59 | /// Get the position that the mouse is indicating the aircraft should fly, projected 60 | /// out to aimDistance meters. Also meant to be used to draw a mouse cursor. 61 | /// 62 | public Vector3 MouseAimPos 63 | { 64 | get 65 | { 66 | return mouseAim == null 67 | ? transform.forward * aimDistance 68 | : (mouseAim.transform.forward * aimDistance) + mouseAim.transform.position; 69 | } 70 | } 71 | 72 | private void Awake() 73 | { 74 | if (aircraft == null) 75 | Debug.LogError(name + "MouseFlightController - No aircraft transform assigned!"); 76 | if (mouseAim == null) 77 | Debug.LogError(name + "MouseFlightController - No mouse aim transform assigned!"); 78 | if (cameraRig == null) 79 | Debug.LogError(name + "MouseFlightController - No camera rig transform assigned!"); 80 | if (cam == null) 81 | Debug.LogError(name + "MouseFlightController - No camera transform assigned!"); 82 | 83 | // To work correctly, the entire rig must not be parented to anything. 84 | // When parented to something (such as an aircraft) it will inherit those 85 | // rotations causing unintended rotations as it gets dragged around. 86 | transform.parent = null; 87 | } 88 | 89 | private void Update() 90 | { 91 | if (useFixed == false) 92 | UpdateCameraPos(); 93 | 94 | RotateRig(); 95 | } 96 | 97 | private void FixedUpdate() 98 | { 99 | if (useFixed == true) 100 | UpdateCameraPos(); 101 | } 102 | 103 | private void RotateRig() 104 | { 105 | if (mouseAim == null || cam == null || cameraRig == null) 106 | return; 107 | 108 | // Mouse input. 109 | float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity; 110 | float mouseY = -Input.GetAxis("Mouse Y") * mouseSensitivity; 111 | 112 | // Rotate the aim target that the plane is meant to fly towards. 113 | // Use the camera's axes in world space so that mouse motion is intuitive. 114 | mouseAim.Rotate(cam.right, mouseY, Space.World); 115 | mouseAim.Rotate(cam.up, mouseX, Space.World); 116 | 117 | // The up vector of the camera normally is aligned to the horizon. However, when 118 | // looking straight up/down this can feel a bit weird. At those extremes, the camera 119 | // stops aligning to the horizon and instead aligns to itself. 120 | Vector3 upVec = (Mathf.Abs(mouseAim.forward.y) > 0.9f) ? cameraRig.up : Vector3.up; 121 | 122 | // Smoothly rotate the camera to face the mouse aim. 123 | cameraRig.rotation = Damp(cameraRig.rotation, 124 | Quaternion.LookRotation(MouseAimPos - cameraRig.position, upVec), 125 | camSmoothSpeed, 126 | Time.deltaTime); 127 | } 128 | 129 | private void UpdateCameraPos() 130 | { 131 | if (aircraft != null) 132 | { 133 | // Move the whole rig to follow the aircraft. 134 | transform.position = aircraft.position; 135 | } 136 | } 137 | 138 | // Thanks to Rory Driscoll 139 | // http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/ 140 | /// 141 | /// Creates dampened motion between a and b that is framerate independent. 142 | /// 143 | /// Initial parameter 144 | /// Target parameter 145 | /// Smoothing factor 146 | /// Time since last damp call 147 | /// 148 | private Quaternion Damp(Quaternion a, Quaternion b, float lambda, float dt) 149 | { 150 | return Quaternion.Slerp(a, b, 1 - Mathf.Exp(-lambda * dt)); 151 | } 152 | 153 | private void OnDrawGizmos() 154 | { 155 | if (showDebugInfo == true) 156 | { 157 | Color oldColor = Gizmos.color; 158 | 159 | // Draw the boresight position. 160 | if (aircraft != null) 161 | { 162 | Gizmos.color = Color.white; 163 | Gizmos.DrawWireSphere(BoresightPos, 10f); 164 | } 165 | 166 | if (mouseAim != null) 167 | { 168 | // Draw the position of the mouse aim position. 169 | Gizmos.color = Color.red; 170 | Gizmos.DrawWireSphere(MouseAimPos, 10f); 171 | 172 | // Draw axes for the mouse aim transform. 173 | Gizmos.color = Color.blue; 174 | Gizmos.DrawRay(mouseAim.position, mouseAim.forward * 50f); 175 | Gizmos.color = Color.green; 176 | Gizmos.DrawRay(mouseAim.position, mouseAim.up * 50f); 177 | Gizmos.color = Color.red; 178 | Gizmos.DrawRay(mouseAim.position, mouseAim.right * 50f); 179 | } 180 | 181 | Gizmos.color = oldColor; 182 | } 183 | } 184 | } 185 | } 186 | -------------------------------------------------------------------------------- /Assets/MouseFlight/Scripts/MouseFlightController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9396f98894f2da47b58c709d5591ad8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: 7 | - hudPrefab: {fileID: 4929874321483434862, guid: 16580bf03b0b2cd43a91d480153f3fa0, 8 | type: 3} 9 | - aircraft: {instanceID: 0} 10 | - mouseAim: {instanceID: 0} 11 | - cameraRig: {instanceID: 0} 12 | - cam: {instanceID: 0} 13 | executionOrder: 0 14 | icon: {instanceID: 0} 15 | userData: 16 | assetBundleName: 17 | assetBundleVariant: 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Brian Hernandez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MouseFlight.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/MouseFlight.unitypackage -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | } 4 | } 5 | -------------------------------------------------------------------------------- /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 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /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/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: 7 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 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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: 7 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | -------------------------------------------------------------------------------- /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: 12 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_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /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: 3 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_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /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: 14 7 | productGUID: 8382b2f4a9fd75648bcda28d09390b6d 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | defaultScreenOrientation: 4 11 | targetDevice: 2 12 | useOnDemandResources: 0 13 | accelerometerFrequency: 60 14 | companyName: DefaultCompany 15 | productName: Empty 16 | defaultCursor: {fileID: 0} 17 | cursorHotspot: {x: 0, y: 0} 18 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 19 | m_ShowUnitySplashScreen: 1 20 | m_ShowUnitySplashLogo: 1 21 | m_SplashScreenOverlayOpacity: 1 22 | m_SplashScreenAnimation: 1 23 | m_SplashScreenLogoStyle: 1 24 | m_SplashScreenDrawMode: 0 25 | m_SplashScreenBackgroundAnimationZoom: 1 26 | m_SplashScreenLogoAnimationZoom: 1 27 | m_SplashScreenBackgroundLandscapeAspect: 1 28 | m_SplashScreenBackgroundPortraitAspect: 1 29 | m_SplashScreenBackgroundLandscapeUvs: 30 | serializedVersion: 2 31 | x: 0 32 | y: 0 33 | width: 1 34 | height: 1 35 | m_SplashScreenBackgroundPortraitUvs: 36 | serializedVersion: 2 37 | x: 0 38 | y: 0 39 | width: 1 40 | height: 1 41 | m_SplashScreenLogos: [] 42 | m_VirtualRealitySplashScreen: {fileID: 0} 43 | m_HolographicTrackingLossScreen: {fileID: 0} 44 | defaultScreenWidth: 1024 45 | defaultScreenHeight: 768 46 | defaultScreenWidthWeb: 960 47 | defaultScreenHeightWeb: 600 48 | m_StereoRenderingPath: 0 49 | m_ActiveColorSpace: 1 50 | m_MTRendering: 1 51 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 52 | iosShowActivityIndicatorOnLoading: -1 53 | androidShowActivityIndicatorOnLoading: -1 54 | tizenShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidBlitType: 0 67 | defaultIsFullScreen: 1 68 | defaultIsNativeResolution: 1 69 | macRetinaSupport: 1 70 | runInBackground: 0 71 | captureSingleScreen: 0 72 | muteOtherAudioSources: 0 73 | Prepare IOS For Recording: 0 74 | Force IOS Speakers When Recording: 0 75 | deferSystemGesturesMode: 0 76 | hideHomeButton: 0 77 | submitAnalytics: 1 78 | usePlayerLog: 1 79 | bakeCollisionMeshes: 0 80 | forceSingleInstance: 0 81 | resizableWindow: 0 82 | useMacAppStoreValidation: 0 83 | macAppStoreCategory: public.app-category.games 84 | gpuSkinning: 0 85 | graphicsJobs: 0 86 | xboxPIXTextureCapture: 0 87 | xboxEnableAvatar: 0 88 | xboxEnableKinect: 0 89 | xboxEnableKinectAutoTracking: 0 90 | xboxEnableFitness: 0 91 | visibleInBackground: 1 92 | allowFullscreenSwitch: 1 93 | graphicsJobMode: 0 94 | macFullscreenMode: 2 95 | d3d11FullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | n3dsDisableStereoscopicView: 0 102 | n3dsEnableSharedListOpt: 1 103 | n3dsEnableVSync: 0 104 | xboxOneResolution: 0 105 | xboxOneSResolution: 0 106 | xboxOneXResolution: 3 107 | xboxOneMonoLoggingLevel: 0 108 | xboxOneLoggingLevel: 1 109 | xboxOneDisableEsram: 0 110 | xboxOnePresentImmediateThreshold: 0 111 | videoMemoryForVertexBuffers: 0 112 | psp2PowerMode: 0 113 | psp2AcquireBGM: 1 114 | wiiUTVResolution: 0 115 | wiiUGamePadMSAA: 1 116 | wiiUSupportsNunchuk: 0 117 | wiiUSupportsClassicController: 0 118 | wiiUSupportsBalanceBoard: 0 119 | wiiUSupportsMotionPlus: 0 120 | wiiUSupportsProController: 0 121 | wiiUAllowScreenCapture: 1 122 | wiiUControllerCount: 0 123 | m_SupportedAspectRatios: 124 | 4:3: 1 125 | 5:4: 1 126 | 16:10: 1 127 | 16:9: 1 128 | Others: 1 129 | bundleVersion: 1.0 130 | preloadedAssets: [] 131 | metroInputSource: 0 132 | wsaTransparentSwapchain: 0 133 | m_HolographicPauseOnTrackingLoss: 1 134 | xboxOneDisableKinectGpuReservation: 0 135 | xboxOneEnable7thCore: 0 136 | vrSettings: 137 | cardboard: 138 | depthFormat: 0 139 | enableTransitionView: 0 140 | daydream: 141 | depthFormat: 0 142 | useSustainedPerformanceMode: 0 143 | enableVideoLayer: 0 144 | useProtectedVideoMemory: 0 145 | minimumSupportedHeadTracking: 0 146 | maximumSupportedHeadTracking: 1 147 | hololens: 148 | depthFormat: 1 149 | depthBufferSharingEnabled: 0 150 | oculus: 151 | sharedDepthBuffer: 0 152 | dashSupport: 0 153 | protectGraphicsMemory: 0 154 | useHDRDisplay: 0 155 | m_ColorGamuts: 00000000 156 | targetPixelDensity: 30 157 | resolutionScalingMode: 0 158 | androidSupportedAspectRatio: 1 159 | androidMaxAspectRatio: 2.1 160 | applicationIdentifier: {} 161 | buildNumber: {} 162 | AndroidBundleVersionCode: 1 163 | AndroidMinSdkVersion: 16 164 | AndroidTargetSdkVersion: 0 165 | AndroidPreferredInstallLocation: 1 166 | aotOptions: 167 | stripEngineCode: 1 168 | iPhoneStrippingLevel: 0 169 | iPhoneScriptCallOptimization: 0 170 | ForceInternetPermission: 0 171 | ForceSDCardPermission: 0 172 | CreateWallpaper: 0 173 | APKExpansionFiles: 0 174 | keepLoadedShadersAlive: 0 175 | StripUnusedMeshComponents: 0 176 | VertexChannelCompressionMask: 177 | serializedVersion: 2 178 | m_Bits: 238 179 | iPhoneSdkVersion: 988 180 | iOSTargetOSVersionString: 7.0 181 | tvOSSdkVersion: 0 182 | tvOSRequireExtendedGameController: 0 183 | tvOSTargetOSVersionString: 9.0 184 | uIPrerenderedIcon: 0 185 | uIRequiresPersistentWiFi: 0 186 | uIRequiresFullScreen: 1 187 | uIStatusBarHidden: 1 188 | uIExitOnSuspend: 0 189 | uIStatusBarStyle: 0 190 | iPhoneSplashScreen: {fileID: 0} 191 | iPhoneHighResSplashScreen: {fileID: 0} 192 | iPhoneTallHighResSplashScreen: {fileID: 0} 193 | iPhone47inSplashScreen: {fileID: 0} 194 | iPhone55inPortraitSplashScreen: {fileID: 0} 195 | iPhone55inLandscapeSplashScreen: {fileID: 0} 196 | iPhone58inPortraitSplashScreen: {fileID: 0} 197 | iPhone58inLandscapeSplashScreen: {fileID: 0} 198 | iPadPortraitSplashScreen: {fileID: 0} 199 | iPadHighResPortraitSplashScreen: {fileID: 0} 200 | iPadLandscapeSplashScreen: {fileID: 0} 201 | iPadHighResLandscapeSplashScreen: {fileID: 0} 202 | appleTVSplashScreen: {fileID: 0} 203 | appleTVSplashScreen2x: {fileID: 0} 204 | tvOSSmallIconLayers: [] 205 | tvOSSmallIconLayers2x: [] 206 | tvOSLargeIconLayers: [] 207 | tvOSTopShelfImageLayers: [] 208 | tvOSTopShelfImageLayers2x: [] 209 | tvOSTopShelfImageWideLayers: [] 210 | tvOSTopShelfImageWideLayers2x: [] 211 | iOSLaunchScreenType: 0 212 | iOSLaunchScreenPortrait: {fileID: 0} 213 | iOSLaunchScreenLandscape: {fileID: 0} 214 | iOSLaunchScreenBackgroundColor: 215 | serializedVersion: 2 216 | rgba: 0 217 | iOSLaunchScreenFillPct: 100 218 | iOSLaunchScreenSize: 100 219 | iOSLaunchScreenCustomXibPath: 220 | iOSLaunchScreeniPadType: 0 221 | iOSLaunchScreeniPadImage: {fileID: 0} 222 | iOSLaunchScreeniPadBackgroundColor: 223 | serializedVersion: 2 224 | rgba: 0 225 | iOSLaunchScreeniPadFillPct: 100 226 | iOSLaunchScreeniPadSize: 100 227 | iOSLaunchScreeniPadCustomXibPath: 228 | iOSUseLaunchScreenStoryboard: 0 229 | iOSLaunchScreenCustomStoryboardPath: 230 | iOSDeviceRequirements: [] 231 | iOSURLSchemes: [] 232 | iOSBackgroundModes: 0 233 | iOSMetalForceHardShadows: 0 234 | metalEditorSupport: 1 235 | metalAPIValidation: 1 236 | iOSRenderExtraFrameOnPause: 0 237 | appleDeveloperTeamID: 238 | iOSManualSigningProvisioningProfileID: 239 | tvOSManualSigningProvisioningProfileID: 240 | appleEnableAutomaticSigning: 0 241 | clonedFromGUID: 00000000000000000000000000000000 242 | AndroidTargetDevice: 0 243 | AndroidSplashScreenScale: 0 244 | androidSplashScreen: {fileID: 0} 245 | AndroidKeystoreName: 246 | AndroidKeyaliasName: 247 | AndroidTVCompatibility: 1 248 | AndroidIsGame: 1 249 | AndroidEnableTango: 0 250 | androidEnableBanner: 1 251 | androidUseLowAccuracyLocation: 0 252 | m_AndroidBanners: 253 | - width: 320 254 | height: 180 255 | banner: {fileID: 0} 256 | androidGamepadSupportLevel: 0 257 | resolutionDialogBanner: {fileID: 0} 258 | m_BuildTargetIcons: [] 259 | m_BuildTargetBatching: [] 260 | m_BuildTargetGraphicsAPIs: [] 261 | m_BuildTargetVRSettings: [] 262 | m_BuildTargetEnableVuforiaSettings: [] 263 | openGLRequireES31: 0 264 | openGLRequireES31AEP: 0 265 | m_TemplateCustomTags: {} 266 | mobileMTRendering: 267 | Android: 1 268 | iPhone: 1 269 | tvOS: 1 270 | m_BuildTargetGroupLightmapEncodingQuality: [] 271 | wiiUTitleID: 0005000011000000 272 | wiiUGroupID: 00010000 273 | wiiUCommonSaveSize: 4096 274 | wiiUAccountSaveSize: 2048 275 | wiiUOlvAccessKey: 0 276 | wiiUTinCode: 0 277 | wiiUJoinGameId: 0 278 | wiiUJoinGameModeMask: 0000000000000000 279 | wiiUCommonBossSize: 0 280 | wiiUAccountBossSize: 0 281 | wiiUAddOnUniqueIDs: [] 282 | wiiUMainThreadStackSize: 3072 283 | wiiULoaderThreadStackSize: 1024 284 | wiiUSystemHeapSize: 128 285 | wiiUTVStartupScreen: {fileID: 0} 286 | wiiUGamePadStartupScreen: {fileID: 0} 287 | wiiUDrcBufferDisabled: 0 288 | wiiUProfilerLibPath: 289 | playModeTestRunnerEnabled: 0 290 | actionOnDotNetUnhandledException: 1 291 | enableInternalProfiler: 0 292 | logObjCUncaughtExceptions: 1 293 | enableCrashReportAPI: 0 294 | cameraUsageDescription: 295 | locationUsageDescription: 296 | microphoneUsageDescription: 297 | switchNetLibKey: 298 | switchSocketMemoryPoolSize: 6144 299 | switchSocketAllocatorPoolSize: 128 300 | switchSocketConcurrencyLimit: 14 301 | switchScreenResolutionBehavior: 2 302 | switchUseCPUProfiler: 0 303 | switchApplicationID: 0x01004b9000490000 304 | switchNSODependencies: 305 | switchTitleNames_0: 306 | switchTitleNames_1: 307 | switchTitleNames_2: 308 | switchTitleNames_3: 309 | switchTitleNames_4: 310 | switchTitleNames_5: 311 | switchTitleNames_6: 312 | switchTitleNames_7: 313 | switchTitleNames_8: 314 | switchTitleNames_9: 315 | switchTitleNames_10: 316 | switchTitleNames_11: 317 | switchTitleNames_12: 318 | switchTitleNames_13: 319 | switchTitleNames_14: 320 | switchPublisherNames_0: 321 | switchPublisherNames_1: 322 | switchPublisherNames_2: 323 | switchPublisherNames_3: 324 | switchPublisherNames_4: 325 | switchPublisherNames_5: 326 | switchPublisherNames_6: 327 | switchPublisherNames_7: 328 | switchPublisherNames_8: 329 | switchPublisherNames_9: 330 | switchPublisherNames_10: 331 | switchPublisherNames_11: 332 | switchPublisherNames_12: 333 | switchPublisherNames_13: 334 | switchPublisherNames_14: 335 | switchIcons_0: {fileID: 0} 336 | switchIcons_1: {fileID: 0} 337 | switchIcons_2: {fileID: 0} 338 | switchIcons_3: {fileID: 0} 339 | switchIcons_4: {fileID: 0} 340 | switchIcons_5: {fileID: 0} 341 | switchIcons_6: {fileID: 0} 342 | switchIcons_7: {fileID: 0} 343 | switchIcons_8: {fileID: 0} 344 | switchIcons_9: {fileID: 0} 345 | switchIcons_10: {fileID: 0} 346 | switchIcons_11: {fileID: 0} 347 | switchIcons_12: {fileID: 0} 348 | switchIcons_13: {fileID: 0} 349 | switchIcons_14: {fileID: 0} 350 | switchSmallIcons_0: {fileID: 0} 351 | switchSmallIcons_1: {fileID: 0} 352 | switchSmallIcons_2: {fileID: 0} 353 | switchSmallIcons_3: {fileID: 0} 354 | switchSmallIcons_4: {fileID: 0} 355 | switchSmallIcons_5: {fileID: 0} 356 | switchSmallIcons_6: {fileID: 0} 357 | switchSmallIcons_7: {fileID: 0} 358 | switchSmallIcons_8: {fileID: 0} 359 | switchSmallIcons_9: {fileID: 0} 360 | switchSmallIcons_10: {fileID: 0} 361 | switchSmallIcons_11: {fileID: 0} 362 | switchSmallIcons_12: {fileID: 0} 363 | switchSmallIcons_13: {fileID: 0} 364 | switchSmallIcons_14: {fileID: 0} 365 | switchManualHTML: 366 | switchAccessibleURLs: 367 | switchLegalInformation: 368 | switchMainThreadStackSize: 1048576 369 | switchPresenceGroupId: 370 | switchLogoHandling: 0 371 | switchReleaseVersion: 0 372 | switchDisplayVersion: 1.0.0 373 | switchStartupUserAccount: 0 374 | switchTouchScreenUsage: 0 375 | switchSupportedLanguagesMask: 0 376 | switchLogoType: 0 377 | switchApplicationErrorCodeCategory: 378 | switchUserAccountSaveDataSize: 0 379 | switchUserAccountSaveDataJournalSize: 0 380 | switchApplicationAttribute: 0 381 | switchCardSpecSize: -1 382 | switchCardSpecClock: -1 383 | switchRatingsMask: 0 384 | switchRatingsInt_0: 0 385 | switchRatingsInt_1: 0 386 | switchRatingsInt_2: 0 387 | switchRatingsInt_3: 0 388 | switchRatingsInt_4: 0 389 | switchRatingsInt_5: 0 390 | switchRatingsInt_6: 0 391 | switchRatingsInt_7: 0 392 | switchRatingsInt_8: 0 393 | switchRatingsInt_9: 0 394 | switchRatingsInt_10: 0 395 | switchRatingsInt_11: 0 396 | switchLocalCommunicationIds_0: 397 | switchLocalCommunicationIds_1: 398 | switchLocalCommunicationIds_2: 399 | switchLocalCommunicationIds_3: 400 | switchLocalCommunicationIds_4: 401 | switchLocalCommunicationIds_5: 402 | switchLocalCommunicationIds_6: 403 | switchLocalCommunicationIds_7: 404 | switchParentalControl: 0 405 | switchAllowsScreenshot: 1 406 | switchAllowsVideoCapturing: 1 407 | switchAllowsRuntimeAddOnContentInstall: 0 408 | switchDataLossConfirmation: 0 409 | switchSupportedNpadStyles: 3 410 | switchSocketConfigEnabled: 0 411 | switchTcpInitialSendBufferSize: 32 412 | switchTcpInitialReceiveBufferSize: 64 413 | switchTcpAutoSendBufferSizeMax: 256 414 | switchTcpAutoReceiveBufferSizeMax: 256 415 | switchUdpSendBufferSize: 9 416 | switchUdpReceiveBufferSize: 42 417 | switchSocketBufferEfficiency: 4 418 | switchSocketInitializeEnabled: 1 419 | switchNetworkInterfaceManagerInitializeEnabled: 1 420 | switchPlayerConnectionEnabled: 1 421 | ps4NPAgeRating: 12 422 | ps4NPTitleSecret: 423 | ps4NPTrophyPackPath: 424 | ps4ParentalLevel: 11 425 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 426 | ps4Category: 0 427 | ps4MasterVersion: 01.00 428 | ps4AppVersion: 01.00 429 | ps4AppType: 0 430 | ps4ParamSfxPath: 431 | ps4VideoOutPixelFormat: 0 432 | ps4VideoOutInitialWidth: 1920 433 | ps4VideoOutBaseModeInitialWidth: 1920 434 | ps4VideoOutReprojectionRate: 60 435 | ps4PronunciationXMLPath: 436 | ps4PronunciationSIGPath: 437 | ps4BackgroundImagePath: 438 | ps4StartupImagePath: 439 | ps4StartupImagesFolder: 440 | ps4IconImagesFolder: 441 | ps4SaveDataImagePath: 442 | ps4SdkOverride: 443 | ps4BGMPath: 444 | ps4ShareFilePath: 445 | ps4ShareOverlayImagePath: 446 | ps4PrivacyGuardImagePath: 447 | ps4NPtitleDatPath: 448 | ps4RemotePlayKeyAssignment: -1 449 | ps4RemotePlayKeyMappingDir: 450 | ps4PlayTogetherPlayerCount: 0 451 | ps4EnterButtonAssignment: 1 452 | ps4ApplicationParam1: 0 453 | ps4ApplicationParam2: 0 454 | ps4ApplicationParam3: 0 455 | ps4ApplicationParam4: 0 456 | ps4DownloadDataSize: 0 457 | ps4GarlicHeapSize: 2048 458 | ps4ProGarlicHeapSize: 2560 459 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 460 | ps4pnSessions: 1 461 | ps4pnPresence: 1 462 | ps4pnFriends: 1 463 | ps4pnGameCustomData: 1 464 | playerPrefsSupport: 0 465 | restrictedAudioUsageRights: 0 466 | ps4UseResolutionFallback: 0 467 | ps4ReprojectionSupport: 0 468 | ps4UseAudio3dBackend: 0 469 | ps4SocialScreenEnabled: 0 470 | ps4ScriptOptimizationLevel: 0 471 | ps4Audio3dVirtualSpeakerCount: 14 472 | ps4attribCpuUsage: 0 473 | ps4PatchPkgPath: 474 | ps4PatchLatestPkgPath: 475 | ps4PatchChangeinfoPath: 476 | ps4PatchDayOne: 0 477 | ps4attribUserManagement: 0 478 | ps4attribMoveSupport: 0 479 | ps4attrib3DSupport: 0 480 | ps4attribShareSupport: 0 481 | ps4attribExclusiveVR: 0 482 | ps4disableAutoHideSplash: 0 483 | ps4videoRecordingFeaturesUsed: 0 484 | ps4contentSearchFeaturesUsed: 0 485 | ps4attribEyeToEyeDistanceSettingVR: 0 486 | ps4IncludedModules: [] 487 | monoEnv: 488 | psp2Splashimage: {fileID: 0} 489 | psp2NPTrophyPackPath: 490 | psp2NPSupportGBMorGJP: 0 491 | psp2NPAgeRating: 12 492 | psp2NPTitleDatPath: 493 | psp2NPCommsID: 494 | psp2NPCommunicationsID: 495 | psp2NPCommsPassphrase: 496 | psp2NPCommsSig: 497 | psp2ParamSfxPath: 498 | psp2ManualPath: 499 | psp2LiveAreaGatePath: 500 | psp2LiveAreaBackroundPath: 501 | psp2LiveAreaPath: 502 | psp2LiveAreaTrialPath: 503 | psp2PatchChangeInfoPath: 504 | psp2PatchOriginalPackage: 505 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 506 | psp2KeystoneFile: 507 | psp2MemoryExpansionMode: 0 508 | psp2DRMType: 0 509 | psp2StorageType: 0 510 | psp2MediaCapacity: 0 511 | psp2DLCConfigPath: 512 | psp2ThumbnailPath: 513 | psp2BackgroundPath: 514 | psp2SoundPath: 515 | psp2TrophyCommId: 516 | psp2TrophyPackagePath: 517 | psp2PackagedResourcesPath: 518 | psp2SaveDataQuota: 10240 519 | psp2ParentalLevel: 1 520 | psp2ShortTitle: Not Set 521 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 522 | psp2Category: 0 523 | psp2MasterVersion: 01.00 524 | psp2AppVersion: 01.00 525 | psp2TVBootMode: 0 526 | psp2EnterButtonAssignment: 2 527 | psp2TVDisableEmu: 0 528 | psp2AllowTwitterDialog: 1 529 | psp2Upgradable: 0 530 | psp2HealthWarning: 0 531 | psp2UseLibLocation: 0 532 | psp2InfoBarOnStartup: 0 533 | psp2InfoBarColor: 0 534 | psp2ScriptOptimizationLevel: 0 535 | psmSplashimage: {fileID: 0} 536 | splashScreenBackgroundSourceLandscape: {fileID: 0} 537 | splashScreenBackgroundSourcePortrait: {fileID: 0} 538 | spritePackerPolicy: 539 | webGLMemorySize: 256 540 | webGLExceptionSupport: 1 541 | webGLNameFilesAsHashes: 0 542 | webGLDataCaching: 0 543 | webGLDebugSymbols: 0 544 | webGLEmscriptenArgs: 545 | webGLModulesDirectory: 546 | webGLTemplate: APPLICATION:Default 547 | webGLAnalyzeBuildSize: 0 548 | webGLUseEmbeddedResources: 0 549 | webGLUseWasm: 0 550 | webGLCompressionFormat: 1 551 | scriptingDefineSymbols: {} 552 | platformArchitecture: {} 553 | scriptingBackend: {} 554 | incrementalIl2cppBuild: {} 555 | additionalIl2CppArgs: 556 | scriptingRuntimeVersion: 0 557 | apiCompatibilityLevelPerPlatform: {} 558 | m_RenderingPath: 1 559 | m_MobileRenderingPath: 1 560 | metroPackageName: Empty 561 | metroPackageVersion: 562 | metroCertificatePath: 563 | metroCertificatePassword: 564 | metroCertificateSubject: 565 | metroCertificateIssuer: 566 | metroCertificateNotAfter: 0000000000000000 567 | metroApplicationDescription: Empty 568 | wsaImages: {} 569 | metroTileShortName: 570 | metroCommandLineArgsFile: 571 | metroTileShowName: 0 572 | metroMediumTileShowName: 0 573 | metroLargeTileShowName: 0 574 | metroWideTileShowName: 0 575 | metroDefaultTileSize: 1 576 | metroTileForegroundText: 2 577 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 578 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 579 | a: 1} 580 | metroSplashScreenUseBackgroundColor: 0 581 | platformCapabilities: {} 582 | metroFTAName: 583 | metroFTAFileTypes: [] 584 | metroProtocolName: 585 | metroCompilationOverrides: 1 586 | tizenProductDescription: 587 | tizenProductURL: 588 | tizenSigningProfileName: 589 | tizenGPSPermissions: 0 590 | tizenMicrophonePermissions: 0 591 | tizenDeploymentTarget: 592 | tizenDeploymentTargetType: -1 593 | tizenMinOSVersion: 1 594 | n3dsUseExtSaveData: 0 595 | n3dsCompressStaticMem: 1 596 | n3dsExtSaveDataNumber: 0x12345 597 | n3dsStackSize: 131072 598 | n3dsTargetPlatform: 2 599 | n3dsRegion: 7 600 | n3dsMediaSize: 0 601 | n3dsLogoStyle: 3 602 | n3dsTitle: GameName 603 | n3dsProductCode: 604 | n3dsApplicationId: 0xFF3FF 605 | XboxOneProductId: 606 | XboxOneUpdateKey: 607 | XboxOneSandboxId: 608 | XboxOneContentId: 609 | XboxOneTitleId: 610 | XboxOneSCId: 611 | XboxOneGameOsOverridePath: 612 | XboxOnePackagingOverridePath: 613 | XboxOneAppManifestOverridePath: 614 | XboxOnePackageEncryption: 0 615 | XboxOnePackageUpdateGranularity: 2 616 | XboxOneDescription: 617 | XboxOneLanguage: 618 | - enus 619 | XboxOneCapability: [] 620 | XboxOneGameRating: {} 621 | XboxOneIsContentPackage: 0 622 | XboxOneEnableGPUVariability: 0 623 | XboxOneSockets: {} 624 | XboxOneSplashScreen: {fileID: 0} 625 | XboxOneAllowedProductIds: [] 626 | XboxOnePersistentLocalStorageSize: 0 627 | xboxOneScriptCompiler: 0 628 | vrEditorSettings: 629 | daydream: 630 | daydreamIconForeground: {fileID: 0} 631 | daydreamIconBackground: {fileID: 0} 632 | cloudServicesEnabled: {} 633 | facebookSdkVersion: 7.9.4 634 | apiCompatibilityLevel: 2 635 | cloudProjectId: 636 | projectName: 637 | organizationId: 638 | cloudEnabled: 0 639 | enableNativePlatformBackendsForNewInputSystem: 0 640 | disableOldInputManagerSupport: 0 641 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2017.3.1f1 2 | -------------------------------------------------------------------------------- /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: 1 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Low 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 | blendWeights: 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 | particleRaycastBudget: 16 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: High 39 | pixelLightCount: 4 40 | shadows: 2 41 | shadowResolution: 2 42 | shadowProjection: 1 43 | shadowCascades: 4 44 | shadowDistance: 150 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 1 49 | blendWeights: 4 50 | textureQuality: 0 51 | anisotropicTextures: 2 52 | antiAliasing: 4 53 | softParticles: 1 54 | softVegetation: 1 55 | realtimeReflectionProbes: 1 56 | billboardsFaceCameraPosition: 1 57 | vSyncCount: 1 58 | lodBias: 2 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 4096 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | m_PerPlatformDefaultQuality: 66 | Android: 0 67 | Nintendo 3DS: 1 68 | Nintendo Switch: 1 69 | PS4: 1 70 | PSM: 1 71 | PSP2: 0 72 | Standalone: 1 73 | Tizen: 0 74 | WebGL: 0 75 | WiiU: 1 76 | Windows Store Apps: 1 77 | XboxOne: 1 78 | iPhone: 0 79 | tvOS: 0 80 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 0 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Mouse Flight 3 | This project is an example of mouse controls for aircraft based on the excellent system used by Gaijin's War Thunder. It is in my opinion the single best and most robust system for controlling aircraft, especially those with more realistic physics. 4 | 5 | ![screenshot](Screenshots/flight.gif) 6 | 7 | This project was built in **Unity 2017.3.1f1**, and tested in 2018.3.0 and 5.6.4. 8 | 9 | Note: When importing the package into 5.6.4, the demo scene will need to have its lighting reset. (Open Window->Lighting->Settings, then click the gear icon on the top right -> Reset.) 10 | 11 | ## Download 12 | You can either clone the repository or [download the asset package](https://github.com/brihernandez/MouseFlight/raw/master/MouseFlight.unitypackage) located in the root. 13 | 14 | ## Demo Controls 15 | 16 | ![Demo plane](Screenshots/plane.png) 17 | 18 | To fly the demo plane, simply move the mouse around. The circle is controlled by the mouse, while the crosshair shows where the plane is pointed. The plane will automatically try to fly towards the crosshair. 19 | 20 | Sometimes you might want to manually control the pitch or roll for a maneuver, so a couple keyboard overrides exist. 21 | 22 | - W/S: pitch up/down 23 | - A/D: roll left/right 24 | 25 | # Usage 26 | The core of this project is the `MouseFlightController` component and the `MouseFlightRig` prefab. 27 | 28 | 1. Drop the `MouseFlightRig` prefab into your scene 29 | 2. Assign your vehicle's transform to the `Aircraft` property in the `MouseFlightController`'s Inspector 30 | 3. In code, use the `MouseFlightController.MouseAimPos` C# property to get the world postion the mouse cursor is pointing to 31 | 4. Make your vehicle fly to that position 32 | 5. Use the `MouseFlightController.MouseAimPos` and `MouseFlightController.BoresightPos` C# properties to draw HUD elements for the mouse cursor and aircraft's direction respectively 33 | 34 | The camera rig only handles telling where the aircraft is meant to fly. **How** your aircraft actually flies towards that point is an implementation detail specific to your project and will require scripting. The same goes for the HUD elements. 35 | 36 | To give an example of how you might do this, the demo includes a very simple Rigidbody based airplane with the steering behaviors necessary to fly itself. An extremely simple HUD is also included to demonstrate how it's supposed to work. 37 | 38 | # Control Principles 39 | The mouse is not an ideal method of controlling an aircraft. Most control schemes involve using the mouse as a substitute for a joystick or otherwise directly controlling the aircraft. While these can work, they don't take advantage of the mouse's greatest strength: as a pointing device. 40 | 41 | What the control scheme in this project does is allow the player to use the mouse as a pointing device to fly the plane. If you want to fly towards something, you simply put the mouse cursor over it and the plane will fly towards it. If you want to aim at something, just put the mouse cursor over it. 42 | 43 | # Mouse Control Rig 44 | 45 | ![Axes demonstrating the mouse aim transform](Screenshots/axes.png) 46 | 47 | The simplest way to accomplish this idea is to have an orbit camera that gets rotated by the mouse, crosshair in the middle of the screen, and then wherever the camera is pointed is where the plane flies. While this definitely does work, it can be a bit clumsy and make for some jarring camera movement depending on your game. Examples of this style of control would be the Halo games or World of Warplanes. 48 | 49 | ![Mouse flight rig](Screenshots/rig.png) 50 | 51 | To get around this and emphasize the mouse's pointing ability, the camera and mouse control need to be separated. As can be seen in the expanded hierarchy of the rig prefab, one transform is rotated directly by the mouse and used to point towards a direction, while the camera transform smoothly looks in this direction using its own, separate rig. This separation allows for accurate pointing with the mouse while maintaining smooth camera motion. This is the method used by War Thunder. 52 | 53 | ## Rig Transforms 54 | 55 | ### Aircraft 56 | The reference transform used for both the boresight position and for the rig to follow. You'll want to check the `Use Fixed` option depending on if the aircraft is moved in Update or FixedUpdate loops. Having this set wrong will result in jittery looking movement. 57 | 58 | ### Mouse Aim 59 | The heart of rig. This is an empty transform that is rotated directly by the mouse in order to generate the `MouseAimPos`. The `MouseAimPos` is the forward of this transform multiplied by the `Aim Distance` given in the inspector. 60 | 61 | In order to keep the rotations intuitive, the rotations **must happen relative to the camera**. This way, when the user moves the mouse left, the apparent position of the `MouseAimPos` (and consequently your cursor) should also move left on the screen regardless of the current orientation. 62 | 63 | ### Camera Rig 64 | Used to rotate a camera to face the aim position. This is the typical orbit camera setup where a camera is put on a parent transform centered on the player, and then that transform is rotated. Normally, this rig is kept level with horizon (up vector is world's up). However, when the aircraft is flying straight up or down, this will cause problems. In those situations, the camera rig's `Quaternion.LookRotation`s are generated using the rig's own up vector rather than the world's up. 65 | 66 | If you'd like to add camera motion, such as the camera moving back when the aircraft accelerates, this is the Transform to modify. 67 | 68 | ### Camera 69 | Transform of the camera itself. Only used as reference for rotating the MouseAim transform relative to the screen. 70 | 71 | # Changelog 72 | 73 | ### 1.1 (Jan 6 2019) 74 | 75 | - Converted project/package to 2017.3.1f1 for improved compatibility 76 | - Removed C# code that was dependent on .Net 4.6 for improved compatibility 77 | - Removed unused materials and variables 78 | 79 | ### 1.0 (Jan 4 2019) 80 | 81 | - Released 82 | -------------------------------------------------------------------------------- /Screenshots/axes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Screenshots/axes.png -------------------------------------------------------------------------------- /Screenshots/flight.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Screenshots/flight.gif -------------------------------------------------------------------------------- /Screenshots/plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Screenshots/plane.png -------------------------------------------------------------------------------- /Screenshots/rig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity3D-Projects/MouseFlight/d1874a01f4f5dcb46e7670abc3f21169d1f32882/Screenshots/rig.png --------------------------------------------------------------------------------