├── .github ├── logo.png └── thumbnail.png ├── .gitignore ├── Assets ├── 3rdPerson+Fly.meta ├── 3rdPerson+Fly │ ├── Animations.meta │ ├── Animations │ │ ├── Fly.meta │ │ ├── Fly │ │ │ ├── fly_dive.anim │ │ │ ├── fly_dive.anim.meta │ │ │ ├── fly_idle.anim │ │ │ └── fly_idle.anim.meta │ │ ├── Idle.meta │ │ ├── Idle │ │ │ ├── Idle.anim │ │ │ └── Idle.anim.meta │ │ ├── Jumping.meta │ │ ├── Jumping │ │ │ ├── fall.anim │ │ │ ├── fall.anim.meta │ │ │ ├── jump_start.anim │ │ │ └── jump_start.anim.meta │ │ ├── Locomotion.meta │ │ └── Locomotion │ │ │ ├── jog_fwd.anim │ │ │ ├── jog_fwd.anim.meta │ │ │ ├── run_fwd.anim │ │ │ ├── run_fwd.anim.meta │ │ │ ├── sprint_fwd.anim │ │ │ ├── sprint_fwd.anim.meta │ │ │ ├── strafe.anim │ │ │ ├── strafe.anim.meta │ │ │ ├── strafe_45.anim │ │ │ ├── strafe_45.anim.meta │ │ │ ├── walk_fwd.anim │ │ │ └── walk_fwd.anim.meta │ ├── Animators.meta │ ├── Animators │ │ ├── CharacterController.controller │ │ └── CharacterController.controller.meta │ ├── Materials.meta │ ├── Materials │ │ ├── Character.physicMaterial │ │ ├── Character.physicMaterial.meta │ │ ├── char_shadow.mat │ │ ├── char_shadow.mat.meta │ │ ├── char_shadow_toon.cubemap │ │ ├── char_shadow_toon.cubemap.meta │ │ ├── env_DarkTile.mat │ │ ├── env_DarkTile.mat.meta │ │ ├── env_Fence.mat │ │ ├── env_Fence.mat.meta │ │ ├── env_Gold.mat │ │ ├── env_Gold.mat.meta │ │ ├── env_GoldTile.mat │ │ ├── env_GoldTile.mat.meta │ │ ├── env_InnerRing.mat │ │ ├── env_InnerRing.mat.meta │ │ ├── env_RedTile.mat │ │ └── env_RedTile.mat.meta │ ├── Models.meta │ ├── Models │ │ ├── char_shadow.fbx │ │ ├── char_shadow.fbx.meta │ │ ├── env.fbx │ │ └── env.fbx.meta │ ├── Prefabs.meta │ ├── Prefabs │ │ ├── shadow.prefab │ │ └── shadow.prefab.meta │ ├── README.pdf │ ├── README.pdf.meta │ ├── Scenes.meta │ ├── Scenes │ │ ├── 3rdPerson+Fly.unity │ │ └── 3rdPerson+Fly.unity.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── LevelScripts.meta │ │ ├── LevelScripts │ │ │ ├── ControlsTutorial.cs │ │ │ ├── ControlsTutorial.cs.meta │ │ │ ├── HintManagement.cs │ │ │ ├── HintManagement.cs.meta │ │ │ ├── ThirdPersonOrbitCamBasic.cs │ │ │ └── ThirdPersonOrbitCamBasic.cs.meta │ │ ├── PlayerScripts.meta │ │ └── PlayerScripts │ │ │ ├── AimBehaviourBasic.cs │ │ │ ├── AimBehaviourBasic.cs.meta │ │ │ ├── BasicBehaviour.cs │ │ │ ├── BasicBehaviour.cs.meta │ │ │ ├── FlyBehaviour.cs │ │ │ ├── FlyBehaviour.cs.meta │ │ │ ├── MoveBehaviour.cs │ │ │ └── MoveBehaviour.cs.meta │ ├── Textures.meta │ └── Textures │ │ ├── char_shadow_darker.png │ │ ├── char_shadow_darker.png.meta │ │ ├── char_shadow_ligther.png │ │ ├── char_shadow_ligther.png.meta │ │ ├── decal_crosshair.png │ │ ├── decal_crosshair.png.meta │ │ ├── env_DarkTile.png │ │ ├── env_DarkTile.png.meta │ │ ├── env_LightTile.png │ │ ├── env_LightTile.png.meta │ │ ├── gamepad.png │ │ ├── gamepad.png.meta │ │ ├── keys.png │ │ └── keys.png.meta ├── Materials.meta ├── Materials │ ├── Generic 1.mat │ ├── Generic 1.mat.meta │ ├── Generic.mat │ ├── Generic.mat.meta │ ├── Lines.mat │ ├── Lines.mat.meta │ ├── Point.mat │ ├── Point.mat.meta │ ├── Scanner.mat │ └── Scanner.mat.meta ├── Prefabs.meta ├── Prefabs │ ├── Point.prefab │ └── Point.prefab.meta ├── Scenes.meta ├── Scenes │ ├── SampleScene.unity │ ├── SampleScene.unity.meta │ ├── SampleScene_Profiles.meta │ └── SampleScene_Profiles │ │ ├── Main Camera Profile.asset │ │ └── Main Camera Profile.asset.meta ├── Scripts.meta ├── Scripts │ ├── GridGenerator.cs │ ├── GridGenerator.cs.meta │ ├── ScannerController.cs │ └── ScannerController.cs.meta ├── Shaders.meta └── Shaders │ ├── Fade.shader │ ├── Fade.shader.meta │ ├── Scanner.shader │ └── Scanner.shader.meta ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset └── README.md /.github/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/.github/logo.png -------------------------------------------------------------------------------- /.github/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/.github/thumbnail.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Ll]ogs/ 3 | [Tt]emp/ 4 | [Oo]bj/ 5 | [Bb]uild/ 6 | [Bb]uilds/ 7 | Assets/AssetStoreTools* 8 | 9 | # Visual Studio 2015 cache directory 10 | /.vs/ 11 | .vscode 12 | 13 | # Ignore manually added packages 14 | com.* 15 | 16 | # Autogenerated VS/MD/Consulo solution and project files 17 | ExportedObj/ 18 | .consulo/ 19 | *.csproj 20 | *.unityproj 21 | *.sln 22 | *.suo 23 | *.tmp 24 | *.user 25 | *.userprefs 26 | *.pidb 27 | *.booproj 28 | *.svd 29 | *.pdb 30 | 31 | # Unity3D generated meta files 32 | *.pidb.meta 33 | *.pdb.meta 34 | 35 | # Unity3D Generated File On Crash Reports 36 | sysinfo.txt 37 | 38 | # Builds 39 | *.apk 40 | *.unitypackage 41 | 42 | .DS_Store 43 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4c95cfdd8f630a14d9de417410e1eea5 3 | folderAsset: yes 4 | timeCreated: 1505869342 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 197b8a076b9470d41931a4e667fa8f57 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Fly.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e06cc15435a32cf43833e3cdf60373c2 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Fly/fly_dive.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Fly/fly_dive.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Fly/fly_dive.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c23f37799d978ae48bffdbe1e5dc5e6c 3 | timeCreated: 1511392070 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 0 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Fly/fly_idle.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Fly/fly_idle.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Fly/fly_idle.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29af972271feaac4a853932c7977b571 3 | timeCreated: 1505868570 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Idle.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5fd03a5ddbe63e4c9e8e446cfb314a1 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Idle/Idle.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Idle/Idle.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Idle/Idle.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 471152417041a2940a4295d01794f152 3 | timeCreated: 1503968716 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Jumping.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0cf9c2fda5758542bb167301fdf4130 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Jumping/fall.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Jumping/fall.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Jumping/fall.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a09827d8ea45bb7449930c189d7791fc 3 | timeCreated: 1504254138 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Jumping/jump_start.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Jumping/jump_start.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Jumping/jump_start.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac5170d4101f60e4c90ef8f82f33cb88 3 | timeCreated: 1504656966 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3aefa2e21df3cad4bb64c54c505cffb1 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/jog_fwd.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Locomotion/jog_fwd.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/jog_fwd.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5bc3f026f85905469c9003b0efaddee 3 | timeCreated: 1503970107 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/run_fwd.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Locomotion/run_fwd.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/run_fwd.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe763b5e709308f4085e998069974f5e 3 | timeCreated: 1503970146 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/sprint_fwd.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Locomotion/sprint_fwd.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/sprint_fwd.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b283eb77c9cc3ff4793335e8c9cd0940 3 | timeCreated: 1503970188 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/strafe.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Locomotion/strafe.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/strafe.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2f405b6c56b4b441b2976c935d21e70 3 | timeCreated: 1503970484 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/strafe_45.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Locomotion/strafe_45.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/strafe_45.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87d1452aef245c14abb19ec855de2bc1 3 | timeCreated: 1503970486 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/walk_fwd.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animations/Locomotion/walk_fwd.anim -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animations/Locomotion/walk_fwd.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ebb08566d36984f458cd0a7adfc9f953 3 | timeCreated: 1503970252 4 | licenseType: Store 5 | NativeFormatImporter: 6 | mainObjectFileID: 7400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animators.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f4338d9d9ec5c7409ef268f793ef5f5 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animators/CharacterController.controller: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Animators/CharacterController.controller -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Animators/CharacterController.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ac2a1891f6a2814dbcb83cbd24d5ee1 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 641c7b8de77a29342a03cc015e323a01 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/Character.physicMaterial: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/Character.physicMaterial -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/Character.physicMaterial.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a665289b8701a143a4d81cc38730390 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/char_shadow.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/char_shadow.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/char_shadow.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d4b9a00252f83864d8a5ea8767ad6894 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/char_shadow_toon.cubemap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/char_shadow_toon.cubemap -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/char_shadow_toon.cubemap.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 08ace8642380dd0489507f969b3d9dd5 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_DarkTile.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/env_DarkTile.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_DarkTile.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d42b08d761358e49b969b4f3136ec7d 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_Fence.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/env_Fence.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_Fence.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa505519e7f70e74d83de9fa8e285ff4 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_Gold.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/env_Gold.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_Gold.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 493ecae6230b81b4385325e84dfc198e 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_GoldTile.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/env_GoldTile.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_GoldTile.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d2e318bf98ad6144ae3ced352c1962c 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_InnerRing.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/env_InnerRing.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_InnerRing.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a5567d14decdf744a0a4ba82ae38334 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_RedTile.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Materials/env_RedTile.mat -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Materials/env_RedTile.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0be8db44e223e8d4f8d86c944d88bca4 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4252e9fe937b336448ef2d2708529f77 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Models/char_shadow.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Models/char_shadow.fbx -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Models/char_shadow.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa0856ce0c0b3fb42af36e6c53346129 3 | timeCreated: 1511998412 4 | licenseType: Store 5 | ModelImporter: 6 | serializedVersion: 21 7 | fileIDToRecycleName: 8 | 100000: //RootNode 9 | 100002: Head 10 | 100004: Head_end 11 | 100006: Hips 12 | 100008: LeftArm 13 | 100010: LeftFoot 14 | 100012: LeftForeArm 15 | 100014: LeftHand 16 | 100016: LeftHandIndex1 17 | 100018: LeftHandIndex2 18 | 100020: LeftHandIndex3 19 | 100022: LeftHandIndex3_end 20 | 100024: LeftHandMiddle1 21 | 100026: LeftHandMiddle2 22 | 100028: LeftHandMiddle3 23 | 100030: LeftHandMiddle3_end 24 | 100032: LeftHandPinky1 25 | 100034: LeftHandPinky2 26 | 100036: LeftHandPinky3 27 | 100038: LeftHandPinky3_end 28 | 100040: LeftHandRing1 29 | 100042: LeftHandRing2 30 | 100044: LeftHandRing3 31 | 100046: LeftHandRing3_end 32 | 100048: LeftHandThumb1 33 | 100050: LeftHandThumb2 34 | 100052: LeftHandThumb3 35 | 100054: LeftHandThumb3_end 36 | 100056: LeftLeg 37 | 100058: LeftShoulder 38 | 100060: LeftToeBase 39 | 100062: LeftToeBase_end 40 | 100064: LeftUpLeg 41 | 100066: Neck 42 | 100068: RightArm 43 | 100070: RightFoot 44 | 100072: RightForeArm 45 | 100074: RightHand 46 | 100076: RightHandIndex1 47 | 100078: RightHandIndex2 48 | 100080: RightHandIndex3 49 | 100082: RightHandIndex3_end 50 | 100084: RightHandMiddle1 51 | 100086: RightHandMiddle2 52 | 100088: RightHandMiddle3 53 | 100090: RightHandMiddle3_end 54 | 100092: RightHandPinky1 55 | 100094: RightHandPinky2 56 | 100096: RightHandPinky3 57 | 100098: RightHandPinky3_end 58 | 100100: RightHandRing1 59 | 100102: RightHandRing2 60 | 100104: RightHandRing3 61 | 100106: RightHandRing3_end 62 | 100108: RightHandThumb1 63 | 100110: RightHandThumb2 64 | 100112: RightHandThumb3 65 | 100114: RightHandThumb3_end 66 | 100116: RightLeg 67 | 100118: RightShoulder 68 | 100120: RightToeBase 69 | 100122: RightToeBase_end 70 | 100124: RightUpLeg 71 | 100126: shadow_mesh 72 | 100128: skeleton 73 | 100130: Spine 74 | 100132: Spine1 75 | 100134: Spine2 76 | 400000: //RootNode 77 | 400002: Head 78 | 400004: Head_end 79 | 400006: Hips 80 | 400008: LeftArm 81 | 400010: LeftFoot 82 | 400012: LeftForeArm 83 | 400014: LeftHand 84 | 400016: LeftHandIndex1 85 | 400018: LeftHandIndex2 86 | 400020: LeftHandIndex3 87 | 400022: LeftHandIndex3_end 88 | 400024: LeftHandMiddle1 89 | 400026: LeftHandMiddle2 90 | 400028: LeftHandMiddle3 91 | 400030: LeftHandMiddle3_end 92 | 400032: LeftHandPinky1 93 | 400034: LeftHandPinky2 94 | 400036: LeftHandPinky3 95 | 400038: LeftHandPinky3_end 96 | 400040: LeftHandRing1 97 | 400042: LeftHandRing2 98 | 400044: LeftHandRing3 99 | 400046: LeftHandRing3_end 100 | 400048: LeftHandThumb1 101 | 400050: LeftHandThumb2 102 | 400052: LeftHandThumb3 103 | 400054: LeftHandThumb3_end 104 | 400056: LeftLeg 105 | 400058: LeftShoulder 106 | 400060: LeftToeBase 107 | 400062: LeftToeBase_end 108 | 400064: LeftUpLeg 109 | 400066: Neck 110 | 400068: RightArm 111 | 400070: RightFoot 112 | 400072: RightForeArm 113 | 400074: RightHand 114 | 400076: RightHandIndex1 115 | 400078: RightHandIndex2 116 | 400080: RightHandIndex3 117 | 400082: RightHandIndex3_end 118 | 400084: RightHandMiddle1 119 | 400086: RightHandMiddle2 120 | 400088: RightHandMiddle3 121 | 400090: RightHandMiddle3_end 122 | 400092: RightHandPinky1 123 | 400094: RightHandPinky2 124 | 400096: RightHandPinky3 125 | 400098: RightHandPinky3_end 126 | 400100: RightHandRing1 127 | 400102: RightHandRing2 128 | 400104: RightHandRing3 129 | 400106: RightHandRing3_end 130 | 400108: RightHandThumb1 131 | 400110: RightHandThumb2 132 | 400112: RightHandThumb3 133 | 400114: RightHandThumb3_end 134 | 400116: RightLeg 135 | 400118: RightShoulder 136 | 400120: RightToeBase 137 | 400122: RightToeBase_end 138 | 400124: RightUpLeg 139 | 400126: shadow_mesh 140 | 400128: skeleton 141 | 400130: Spine 142 | 400132: Spine1 143 | 400134: Spine2 144 | 4300000: shadow_mesh 145 | 9500000: //RootNode 146 | 13700000: shadow_mesh 147 | materials: 148 | importMaterials: 0 149 | materialName: 0 150 | materialSearch: 1 151 | animations: 152 | legacyGenerateAnimations: 4 153 | bakeSimulation: 0 154 | resampleCurves: 1 155 | optimizeGameObjects: 0 156 | motionNodeName: 157 | rigImportErrors: 158 | rigImportWarnings: 159 | animationImportErrors: 160 | animationImportWarnings: 161 | animationRetargetingWarnings: 162 | animationDoRetargetingWarnings: 0 163 | animationCompression: 3 164 | animationRotationError: 0.5 165 | animationPositionError: 0.5 166 | animationScaleError: 0.5 167 | animationWrapMode: 0 168 | extraExposedTransformPaths: [] 169 | extraUserProperties: [] 170 | clipAnimations: [] 171 | isReadable: 1 172 | meshes: 173 | lODScreenPercentages: [] 174 | globalScale: 1 175 | meshCompression: 0 176 | addColliders: 0 177 | importVisibility: 0 178 | importBlendShapes: 1 179 | importCameras: 0 180 | importLights: 0 181 | swapUVChannels: 0 182 | generateSecondaryUV: 0 183 | useFileUnits: 1 184 | optimizeMeshForGPU: 1 185 | keepQuads: 0 186 | weldVertices: 1 187 | secondaryUVAngleDistortion: 8 188 | secondaryUVAreaDistortion: 15.000001 189 | secondaryUVHardAngle: 88 190 | secondaryUVPackMargin: 4 191 | useFileScale: 1 192 | tangentSpace: 193 | normalSmoothAngle: 60 194 | normalImportMode: 0 195 | tangentImportMode: 3 196 | normalCalculationMode: 4 197 | importAnimation: 1 198 | copyAvatar: 0 199 | humanDescription: 200 | serializedVersion: 2 201 | human: 202 | - boneName: Hips 203 | humanName: Hips 204 | limit: 205 | min: {x: 0, y: 0, z: 0} 206 | max: {x: 0, y: 0, z: 0} 207 | value: {x: 0, y: 0, z: 0} 208 | length: 0 209 | modified: 0 210 | - boneName: LeftUpLeg 211 | humanName: LeftUpperLeg 212 | limit: 213 | min: {x: 0, y: 0, z: 0} 214 | max: {x: 0, y: 0, z: 0} 215 | value: {x: 0, y: 0, z: 0} 216 | length: 0 217 | modified: 0 218 | - boneName: RightUpLeg 219 | humanName: RightUpperLeg 220 | limit: 221 | min: {x: 0, y: 0, z: 0} 222 | max: {x: 0, y: 0, z: 0} 223 | value: {x: 0, y: 0, z: 0} 224 | length: 0 225 | modified: 0 226 | - boneName: LeftLeg 227 | humanName: LeftLowerLeg 228 | limit: 229 | min: {x: 0, y: 0, z: 0} 230 | max: {x: 0, y: 0, z: 0} 231 | value: {x: 0, y: 0, z: 0} 232 | length: 0 233 | modified: 0 234 | - boneName: RightLeg 235 | humanName: RightLowerLeg 236 | limit: 237 | min: {x: 0, y: 0, z: 0} 238 | max: {x: 0, y: 0, z: 0} 239 | value: {x: 0, y: 0, z: 0} 240 | length: 0 241 | modified: 0 242 | - boneName: LeftFoot 243 | humanName: LeftFoot 244 | limit: 245 | min: {x: 0, y: 0, z: 0} 246 | max: {x: 0, y: 0, z: 0} 247 | value: {x: 0, y: 0, z: 0} 248 | length: 0 249 | modified: 0 250 | - boneName: RightFoot 251 | humanName: RightFoot 252 | limit: 253 | min: {x: 0, y: 0, z: 0} 254 | max: {x: 0, y: 0, z: 0} 255 | value: {x: 0, y: 0, z: 0} 256 | length: 0 257 | modified: 0 258 | - boneName: Spine 259 | humanName: Spine 260 | limit: 261 | min: {x: 0, y: 0, z: 0} 262 | max: {x: 0, y: 0, z: 0} 263 | value: {x: 0, y: 0, z: 0} 264 | length: 0 265 | modified: 0 266 | - boneName: Spine1 267 | humanName: Chest 268 | limit: 269 | min: {x: 0, y: 0, z: 0} 270 | max: {x: 0, y: 0, z: 0} 271 | value: {x: 0, y: 0, z: 0} 272 | length: 0 273 | modified: 0 274 | - boneName: Neck 275 | humanName: Neck 276 | limit: 277 | min: {x: 0, y: 0, z: 0} 278 | max: {x: 0, y: 0, z: 0} 279 | value: {x: 0, y: 0, z: 0} 280 | length: 0 281 | modified: 0 282 | - boneName: Head 283 | humanName: Head 284 | limit: 285 | min: {x: 0, y: 0, z: 0} 286 | max: {x: 0, y: 0, z: 0} 287 | value: {x: 0, y: 0, z: 0} 288 | length: 0 289 | modified: 0 290 | - boneName: LeftShoulder 291 | humanName: LeftShoulder 292 | limit: 293 | min: {x: 0, y: 0, z: 0} 294 | max: {x: 0, y: 0, z: 0} 295 | value: {x: 0, y: 0, z: 0} 296 | length: 0 297 | modified: 0 298 | - boneName: RightShoulder 299 | humanName: RightShoulder 300 | limit: 301 | min: {x: 0, y: 0, z: 0} 302 | max: {x: 0, y: 0, z: 0} 303 | value: {x: 0, y: 0, z: 0} 304 | length: 0 305 | modified: 0 306 | - boneName: LeftArm 307 | humanName: LeftUpperArm 308 | limit: 309 | min: {x: 0, y: 0, z: 0} 310 | max: {x: 0, y: 0, z: 0} 311 | value: {x: 0, y: 0, z: 0} 312 | length: 0 313 | modified: 0 314 | - boneName: RightArm 315 | humanName: RightUpperArm 316 | limit: 317 | min: {x: 0, y: 0, z: 0} 318 | max: {x: 0, y: 0, z: 0} 319 | value: {x: 0, y: 0, z: 0} 320 | length: 0 321 | modified: 0 322 | - boneName: LeftForeArm 323 | humanName: LeftLowerArm 324 | limit: 325 | min: {x: 0, y: 0, z: 0} 326 | max: {x: 0, y: 0, z: 0} 327 | value: {x: 0, y: 0, z: 0} 328 | length: 0 329 | modified: 0 330 | - boneName: RightForeArm 331 | humanName: RightLowerArm 332 | limit: 333 | min: {x: 0, y: 0, z: 0} 334 | max: {x: 0, y: 0, z: 0} 335 | value: {x: 0, y: 0, z: 0} 336 | length: 0 337 | modified: 0 338 | - boneName: LeftHand 339 | humanName: LeftHand 340 | limit: 341 | min: {x: 0, y: 0, z: 0} 342 | max: {x: 0, y: 0, z: 0} 343 | value: {x: 0, y: 0, z: 0} 344 | length: 0 345 | modified: 0 346 | - boneName: RightHand 347 | humanName: RightHand 348 | limit: 349 | min: {x: 0, y: 0, z: 0} 350 | max: {x: 0, y: 0, z: 0} 351 | value: {x: 0, y: 0, z: 0} 352 | length: 0 353 | modified: 0 354 | - boneName: LeftToeBase 355 | humanName: LeftToes 356 | limit: 357 | min: {x: 0, y: 0, z: 0} 358 | max: {x: 0, y: 0, z: 0} 359 | value: {x: 0, y: 0, z: 0} 360 | length: 0 361 | modified: 0 362 | - boneName: RightToeBase 363 | humanName: RightToes 364 | limit: 365 | min: {x: 0, y: 0, z: 0} 366 | max: {x: 0, y: 0, z: 0} 367 | value: {x: 0, y: 0, z: 0} 368 | length: 0 369 | modified: 0 370 | - boneName: LeftHandThumb1 371 | humanName: Left Thumb Proximal 372 | limit: 373 | min: {x: 0, y: 0, z: 0} 374 | max: {x: 0, y: 0, z: 0} 375 | value: {x: 0, y: 0, z: 0} 376 | length: 0 377 | modified: 0 378 | - boneName: LeftHandThumb2 379 | humanName: Left Thumb Intermediate 380 | limit: 381 | min: {x: 0, y: 0, z: 0} 382 | max: {x: 0, y: 0, z: 0} 383 | value: {x: 0, y: 0, z: 0} 384 | length: 0 385 | modified: 0 386 | - boneName: LeftHandThumb3 387 | humanName: Left Thumb Distal 388 | limit: 389 | min: {x: 0, y: 0, z: 0} 390 | max: {x: 0, y: 0, z: 0} 391 | value: {x: 0, y: 0, z: 0} 392 | length: 0 393 | modified: 0 394 | - boneName: LeftHandIndex1 395 | humanName: Left Index Proximal 396 | limit: 397 | min: {x: 0, y: 0, z: 0} 398 | max: {x: 0, y: 0, z: 0} 399 | value: {x: 0, y: 0, z: 0} 400 | length: 0 401 | modified: 0 402 | - boneName: LeftHandIndex2 403 | humanName: Left Index Intermediate 404 | limit: 405 | min: {x: 0, y: 0, z: 0} 406 | max: {x: 0, y: 0, z: 0} 407 | value: {x: 0, y: 0, z: 0} 408 | length: 0 409 | modified: 0 410 | - boneName: LeftHandIndex3 411 | humanName: Left Index Distal 412 | limit: 413 | min: {x: 0, y: 0, z: 0} 414 | max: {x: 0, y: 0, z: 0} 415 | value: {x: 0, y: 0, z: 0} 416 | length: 0 417 | modified: 0 418 | - boneName: LeftHandMiddle1 419 | humanName: Left Middle Proximal 420 | limit: 421 | min: {x: 0, y: 0, z: 0} 422 | max: {x: 0, y: 0, z: 0} 423 | value: {x: 0, y: 0, z: 0} 424 | length: 0 425 | modified: 0 426 | - boneName: LeftHandMiddle2 427 | humanName: Left Middle Intermediate 428 | limit: 429 | min: {x: 0, y: 0, z: 0} 430 | max: {x: 0, y: 0, z: 0} 431 | value: {x: 0, y: 0, z: 0} 432 | length: 0 433 | modified: 0 434 | - boneName: LeftHandMiddle3 435 | humanName: Left Middle Distal 436 | limit: 437 | min: {x: 0, y: 0, z: 0} 438 | max: {x: 0, y: 0, z: 0} 439 | value: {x: 0, y: 0, z: 0} 440 | length: 0 441 | modified: 0 442 | - boneName: LeftHandRing1 443 | humanName: Left Ring Proximal 444 | limit: 445 | min: {x: 0, y: 0, z: 0} 446 | max: {x: 0, y: 0, z: 0} 447 | value: {x: 0, y: 0, z: 0} 448 | length: 0 449 | modified: 0 450 | - boneName: LeftHandRing2 451 | humanName: Left Ring Intermediate 452 | limit: 453 | min: {x: 0, y: 0, z: 0} 454 | max: {x: 0, y: 0, z: 0} 455 | value: {x: 0, y: 0, z: 0} 456 | length: 0 457 | modified: 0 458 | - boneName: LeftHandRing3 459 | humanName: Left Ring Distal 460 | limit: 461 | min: {x: 0, y: 0, z: 0} 462 | max: {x: 0, y: 0, z: 0} 463 | value: {x: 0, y: 0, z: 0} 464 | length: 0 465 | modified: 0 466 | - boneName: LeftHandPinky1 467 | humanName: Left Little Proximal 468 | limit: 469 | min: {x: 0, y: 0, z: 0} 470 | max: {x: 0, y: 0, z: 0} 471 | value: {x: 0, y: 0, z: 0} 472 | length: 0 473 | modified: 0 474 | - boneName: LeftHandPinky2 475 | humanName: Left Little Intermediate 476 | limit: 477 | min: {x: 0, y: 0, z: 0} 478 | max: {x: 0, y: 0, z: 0} 479 | value: {x: 0, y: 0, z: 0} 480 | length: 0 481 | modified: 0 482 | - boneName: LeftHandPinky3 483 | humanName: Left Little Distal 484 | limit: 485 | min: {x: 0, y: 0, z: 0} 486 | max: {x: 0, y: 0, z: 0} 487 | value: {x: 0, y: 0, z: 0} 488 | length: 0 489 | modified: 0 490 | - boneName: RightHandThumb1 491 | humanName: Right Thumb Proximal 492 | limit: 493 | min: {x: 0, y: 0, z: 0} 494 | max: {x: 0, y: 0, z: 0} 495 | value: {x: 0, y: 0, z: 0} 496 | length: 0 497 | modified: 0 498 | - boneName: RightHandThumb2 499 | humanName: Right Thumb Intermediate 500 | limit: 501 | min: {x: 0, y: 0, z: 0} 502 | max: {x: 0, y: 0, z: 0} 503 | value: {x: 0, y: 0, z: 0} 504 | length: 0 505 | modified: 0 506 | - boneName: RightHandThumb3 507 | humanName: Right Thumb Distal 508 | limit: 509 | min: {x: 0, y: 0, z: 0} 510 | max: {x: 0, y: 0, z: 0} 511 | value: {x: 0, y: 0, z: 0} 512 | length: 0 513 | modified: 0 514 | - boneName: RightHandIndex1 515 | humanName: Right Index Proximal 516 | limit: 517 | min: {x: 0, y: 0, z: 0} 518 | max: {x: 0, y: 0, z: 0} 519 | value: {x: 0, y: 0, z: 0} 520 | length: 0 521 | modified: 0 522 | - boneName: RightHandIndex2 523 | humanName: Right Index Intermediate 524 | limit: 525 | min: {x: 0, y: 0, z: 0} 526 | max: {x: 0, y: 0, z: 0} 527 | value: {x: 0, y: 0, z: 0} 528 | length: 0 529 | modified: 0 530 | - boneName: RightHandIndex3 531 | humanName: Right Index Distal 532 | limit: 533 | min: {x: 0, y: 0, z: 0} 534 | max: {x: 0, y: 0, z: 0} 535 | value: {x: 0, y: 0, z: 0} 536 | length: 0 537 | modified: 0 538 | - boneName: RightHandMiddle1 539 | humanName: Right Middle Proximal 540 | limit: 541 | min: {x: 0, y: 0, z: 0} 542 | max: {x: 0, y: 0, z: 0} 543 | value: {x: 0, y: 0, z: 0} 544 | length: 0 545 | modified: 0 546 | - boneName: RightHandMiddle2 547 | humanName: Right Middle Intermediate 548 | limit: 549 | min: {x: 0, y: 0, z: 0} 550 | max: {x: 0, y: 0, z: 0} 551 | value: {x: 0, y: 0, z: 0} 552 | length: 0 553 | modified: 0 554 | - boneName: RightHandMiddle3 555 | humanName: Right Middle Distal 556 | limit: 557 | min: {x: 0, y: 0, z: 0} 558 | max: {x: 0, y: 0, z: 0} 559 | value: {x: 0, y: 0, z: 0} 560 | length: 0 561 | modified: 0 562 | - boneName: RightHandRing1 563 | humanName: Right Ring Proximal 564 | limit: 565 | min: {x: 0, y: 0, z: 0} 566 | max: {x: 0, y: 0, z: 0} 567 | value: {x: 0, y: 0, z: 0} 568 | length: 0 569 | modified: 0 570 | - boneName: RightHandRing2 571 | humanName: Right Ring Intermediate 572 | limit: 573 | min: {x: 0, y: 0, z: 0} 574 | max: {x: 0, y: 0, z: 0} 575 | value: {x: 0, y: 0, z: 0} 576 | length: 0 577 | modified: 0 578 | - boneName: RightHandRing3 579 | humanName: Right Ring Distal 580 | limit: 581 | min: {x: 0, y: 0, z: 0} 582 | max: {x: 0, y: 0, z: 0} 583 | value: {x: 0, y: 0, z: 0} 584 | length: 0 585 | modified: 0 586 | - boneName: RightHandPinky1 587 | humanName: Right Little Proximal 588 | limit: 589 | min: {x: 0, y: 0, z: 0} 590 | max: {x: 0, y: 0, z: 0} 591 | value: {x: 0, y: 0, z: 0} 592 | length: 0 593 | modified: 0 594 | - boneName: RightHandPinky2 595 | humanName: Right Little Intermediate 596 | limit: 597 | min: {x: 0, y: 0, z: 0} 598 | max: {x: 0, y: 0, z: 0} 599 | value: {x: 0, y: 0, z: 0} 600 | length: 0 601 | modified: 0 602 | - boneName: RightHandPinky3 603 | humanName: Right Little Distal 604 | limit: 605 | min: {x: 0, y: 0, z: 0} 606 | max: {x: 0, y: 0, z: 0} 607 | value: {x: 0, y: 0, z: 0} 608 | length: 0 609 | modified: 0 610 | - boneName: Spine2 611 | humanName: UpperChest 612 | limit: 613 | min: {x: 0, y: 0, z: 0} 614 | max: {x: 0, y: 0, z: 0} 615 | value: {x: 0, y: 0, z: 0} 616 | length: 0 617 | modified: 0 618 | skeleton: 619 | - name: char_shadow2(Clone) 620 | parentName: 621 | position: {x: 0, y: 0, z: 0} 622 | rotation: {x: 0, y: 0, z: 0, w: 1} 623 | scale: {x: 1, y: 1, z: 1} 624 | - name: shadow_mesh 625 | parentName: char_shadow2(Clone) 626 | position: {x: 0.00000000980217, y: -0.000000034859404, z: 0.0000000041723194} 627 | rotation: {x: 0.00000008333754, y: -5.2386884e-10, z: -9.0221874e-10, w: 1} 628 | scale: {x: 1, y: 1, z: 1} 629 | - name: skeleton 630 | parentName: char_shadow2(Clone) 631 | position: {x: -0, y: 0, z: 0} 632 | rotation: {x: 0.000000081460335, y: 0, z: -0, w: 1} 633 | scale: {x: 1, y: 1, z: 1} 634 | - name: Hips 635 | parentName: skeleton 636 | position: {x: -0.0010248765, y: 1.0411949, z: -0.02405585} 637 | rotation: {x: 0.00000003767695, y: 1, z: 0.00000003566858, w: -0.0000000754979} 638 | scale: {x: 1, y: 1, z: 1} 639 | - name: Spine 640 | parentName: Hips 641 | position: {x: -0.00026315777, y: 0.094652705, z: 0.002681601} 642 | rotation: {x: 0.015795633, y: -0.0015114173, z: 0.0006367536, w: 0.99987394} 643 | scale: {x: 0.99999994, y: 0.99999994, z: 0.9999999} 644 | - name: Spine1 645 | parentName: Spine 646 | position: {x: -0.0000000074878335, y: 0.099083625, z: -1.884473e-10} 647 | rotation: {x: 9.314363e-10, y: 1.7371349e-10, z: -9.276846e-11, w: 1} 648 | scale: {x: 1, y: 1, z: 1} 649 | - name: Spine2 650 | parentName: Spine1 651 | position: {x: -0.000000008651987, y: 0.113238536, z: -0.0000000063815966} 652 | rotation: {x: -0.015798934, y: 0.0015558705, z: -0.0011586522, w: 0.99987334} 653 | scale: {x: 1, y: 0.9999996, z: 1.0000004} 654 | - name: Neck 655 | parentName: Spine2 656 | position: {x: -0.00039508886, y: 0.13352633, z: 0.0068816077} 657 | rotation: {x: -0.08801817, y: -0.000025557838, z: -0.0000022736874, w: 0.9961189} 658 | scale: {x: 1, y: 0.9999874, z: 1.0000125} 659 | - name: Head 660 | parentName: Neck 661 | position: {x: -0.000000007899944, y: 0.10065884, z: 0.000000005968086} 662 | rotation: {x: 0.022610163, y: -0.00000006647556, z: -0.00000001525181, w: 0.99974436} 663 | scale: {x: 1, y: 0.9999993, z: 1.000001} 664 | - name: Head_end 665 | parentName: Head 666 | position: {x: -0, y: 0.18031675, z: 0} 667 | rotation: {x: 0, y: -0, z: -0, w: 1} 668 | scale: {x: 1, y: 1, z: 1} 669 | - name: LeftShoulder 670 | parentName: Spine2 671 | position: {x: 0.061343048, y: 0.09179819, z: 0.00403292} 672 | rotation: {x: 0.538482, y: 0.4984955, z: -0.49847153, w: 0.4615902} 673 | scale: {x: 0.99959844, y: 0.9999963, z: 1.0004058} 674 | - name: LeftArm 675 | parentName: LeftShoulder 676 | position: {x: 0.0000000067055224, y: 0.1238425, z: 0.000000053942202} 677 | rotation: {x: 0.0022017653, y: 0.012705636, z: -0.003560572, w: 0.99991053} 678 | scale: {x: 0.99999976, y: 0.99999976, z: 1.0000006} 679 | - name: LeftForeArm 680 | parentName: LeftArm 681 | position: {x: -0.000000009536743, y: 0.28031144, z: 0.000000034570693} 682 | rotation: {x: -0.049162965, y: -0.049023032, z: 0.0029368135, w: 0.9975827} 683 | scale: {x: 0.9999962, y: 0.99999624, z: 1.0000079} 684 | - name: LeftHand 685 | parentName: LeftForeArm 686 | position: {x: -0.0000000035762786, y: 0.27268124, z: 0.000000050682573} 687 | rotation: {x: -0.000909279, y: 0.7055412, z: -0.0021114277, w: 0.7086652} 688 | scale: {x: 0.99959165, y: 1.0000039, z: 1.0004041} 689 | - name: LeftHandThumb1 690 | parentName: LeftHand 691 | position: {x: -0.008647742, y: 0.03647645, z: 0.027744856} 692 | rotation: {x: 0.3264151, y: -0.5670704, z: -0.1974306, w: 0.73000383} 693 | scale: {x: 0.99978054, y: 0.9998179, z: 1.0004016} 694 | - name: LeftHandThumb2 695 | parentName: LeftHandThumb1 696 | position: {x: 0.00000004649162, y: 0.03724718, z: 0.00000008434057} 697 | rotation: {x: 0.022371195, y: 0.36815745, z: 0.024360916, w: 0.929175} 698 | scale: {x: 0.9998485, y: 0.99994665, z: 1.0002058} 699 | - name: LeftHandThumb3 700 | parentName: LeftHandThumb2 701 | position: {x: -0.000000042915342, y: 0.027661769, z: 0.00000015258789} 702 | rotation: {x: -0.012199049, y: 0.013830609, z: 0.029373996, w: 0.99939835} 703 | scale: {x: 0.99999946, y: 0.99999994, z: 1.0000005} 704 | - name: LeftHandThumb3_end 705 | parentName: LeftHandThumb3 706 | position: {x: -0, y: 0.025121046, z: 0} 707 | rotation: {x: 0, y: -0, z: -0, w: 1} 708 | scale: {x: 1, y: 1, z: 1} 709 | - name: LeftHandIndex1 710 | parentName: LeftHand 711 | position: {x: 0.0011740859, y: 0.10743478, z: 0.036019158} 712 | rotation: {x: 0.008643079, y: -0.7251958, z: -0.047005665, w: 0.6868819} 713 | scale: {x: 0.9995997, y: 0.9999934, z: 1.0004073} 714 | - name: LeftHandIndex2 715 | parentName: LeftHandIndex1 716 | position: {x: -0.000000024437904, y: 0.028035482, z: -0.000000092322004} 717 | rotation: {x: 0.028842935, y: 0.035561096, z: 0.029351432, w: 0.9985199} 718 | scale: {x: 0.9999981, y: 0.99999785, z: 1.0000039} 719 | - name: LeftHandIndex3 720 | parentName: LeftHandIndex2 721 | position: {x: -0.0000000023841857, y: 0.027663805, z: -0.00000040746758} 722 | rotation: {x: 0.021691887, y: 0.021950062, z: 0.005498925, w: 0.9995086} 723 | scale: {x: 0.9999993, y: 0.9999993, z: 1.0000017} 724 | - name: LeftHandIndex3_end 725 | parentName: LeftHandIndex3 726 | position: {x: -0, y: 0.025443388, z: 0} 727 | rotation: {x: 0, y: -0, z: -0, w: 1} 728 | scale: {x: 1, y: 1, z: 1} 729 | - name: LeftHandMiddle1 730 | parentName: LeftHand 731 | position: {x: 0.004683911, y: 0.10930563, z: 0.012414703} 732 | rotation: {x: 0.0014221924, y: -0.7102265, z: -0.007797821, w: 0.70392865} 733 | scale: {x: 0.99959606, y: 0.99999547, z: 1.0004083} 734 | - name: LeftHandMiddle2 735 | parentName: LeftHandMiddle1 736 | position: {x: 0.0000000011920929, y: 0.029487297, z: 0.00000018930062} 737 | rotation: {x: 0.02070469, y: 0.021009648, z: -0.005860486, w: 0.9995477} 738 | scale: {x: 0.9999992, y: 0.9999994, z: 1.0000015} 739 | - name: LeftHandMiddle3 740 | parentName: LeftHandMiddle2 741 | position: {x: 5.9604643e-10, y: 0.029648429, z: 0.000000083222986} 742 | rotation: {x: 0.016461557, y: 0.017060516, z: 0.0057983054, w: 0.99970216} 743 | scale: {x: 0.99999946, y: 0.99999976, z: 1.000001} 744 | - name: LeftHandMiddle3_end 745 | parentName: LeftHandMiddle3 746 | position: {x: -0, y: 0.028103594, z: 0} 747 | rotation: {x: 0, y: -0, z: -0, w: 1} 748 | scale: {x: 1, y: 1, z: 1} 749 | - name: LeftHandRing1 750 | parentName: LeftHand 751 | position: {x: 0.005536025, y: 0.10946402, z: -0.011908538} 752 | rotation: {x: -0.016459482, y: -0.7323608, z: -0.036204852, w: 0.6797544} 753 | scale: {x: 0.9995987, y: 0.9999955, z: 1.0004061} 754 | - name: LeftHandRing2 755 | parentName: LeftHandRing1 756 | position: {x: 0.000000011920928, y: 0.027187256, z: 0.000000023841856} 757 | rotation: {x: 0.03988751, y: 0.073684126, z: 0.002766259, w: 0.99647987} 758 | scale: {x: 0.99999136, y: 0.9999916, z: 1.000017} 759 | - name: LeftHandRing3 760 | parentName: LeftHandRing2 761 | position: {x: -0.000000005960464, y: 0.023403171, z: -0.00000001013279} 762 | rotation: {x: 0.02038265, y: 0.020857202, z: 0.0011635789, w: 0.999574} 763 | scale: {x: 0.9999992, y: 0.99999934, z: 1.0000014} 764 | - name: LeftHandRing3_end 765 | parentName: LeftHandRing3 766 | position: {x: -0, y: 0.023915742, z: 0} 767 | rotation: {x: 0, y: -0, z: -0, w: 1} 768 | scale: {x: 1, y: 1, z: 1} 769 | - name: LeftHandPinky1 770 | parentName: LeftHand 771 | position: {x: 0.0027295693, y: 0.1062688, z: -0.03370346} 772 | rotation: {x: -0.009610458, y: -0.7141318, z: -0.0046726256, w: 0.69992983} 773 | scale: {x: 0.99959624, y: 0.9999963, z: 1.0004083} 774 | - name: LeftHandPinky2 775 | parentName: LeftHandPinky1 776 | position: {x: -0.000000010728836, y: 0.023957876, z: -0.00000008895993} 777 | rotation: {x: 0.010656667, y: 0.011189205, z: -0.03098026, w: 0.99940056} 778 | scale: {x: 0.9999998, y: 0.9999999, z: 1.0000002} 779 | - name: LeftHandPinky3 780 | parentName: LeftHandPinky2 781 | position: {x: -2.9802322e-10, y: 0.021255152, z: 0.000000006398186} 782 | rotation: {x: 0.016498279, y: 0.017400958, z: -0.0047529405, w: 0.9997012} 783 | scale: {x: 0.9999995, y: 0.9999995, z: 1.000001} 784 | - name: LeftHandPinky3_end 785 | parentName: LeftHandPinky3 786 | position: {x: -0, y: 0.020845506, z: 0} 787 | rotation: {x: 0, y: -0, z: -0, w: 1} 788 | scale: {x: 1, y: 1, z: 1} 789 | - name: RightShoulder 790 | parentName: Spine2 791 | position: {x: -0.061551053, y: 0.09179844, z: 0.0040173517} 792 | rotation: {x: 0.538421, y: -0.49855724, z: 0.49853605, w: 0.46152505} 793 | scale: {x: 0.99959815, y: 0.99999595, z: 1.0004057} 794 | - name: RightArm 795 | parentName: RightShoulder 796 | position: {x: 0.0000000088661904, y: 0.1238425, z: 0.000000050365923} 797 | rotation: {x: 0.0032912188, y: -0.012695578, z: 0.0035414388, w: 0.99990773} 798 | scale: {x: 0.9999998, y: 0.9999996, z: 1.0000005} 799 | - name: RightForeArm 800 | parentName: RightArm 801 | position: {x: -0.000000019781291, y: 0.28031197, z: 0.0000003531575} 802 | rotation: {x: -0.04916363, y: 0.04902299, z: -0.0029367462, w: 0.9975826} 803 | scale: {x: 0.9999963, y: 0.9999962, z: 1.0000079} 804 | - name: RightHand 805 | parentName: RightForeArm 806 | position: {x: 0.0000000016391277, y: 0.2726811, z: 0.00000010529533} 807 | rotation: {x: -0.0021117693, y: 0.7086653, z: -0.0009074289, w: 0.7055411} 808 | scale: {x: 0.9995918, y: 1.0000035, z: 1.0004044} 809 | - name: RightHandThumb1 810 | parentName: RightHand 811 | position: {x: -0.008647515, y: 0.036480792, z: -0.027744858} 812 | rotation: {x: -0.1974256, y: -0.7300232, z: 0.32640228, w: 0.5670546} 813 | scale: {x: 0.99978024, y: 0.99981815, z: 1.0004015} 814 | - name: RightHandThumb2 815 | parentName: RightHandThumb1 816 | position: {x: -0.00000004529953, y: 0.037249837, z: -0.00000016838312} 817 | rotation: {x: 0.022370461, y: -0.36812684, z: -0.024359977, w: 0.9291872} 818 | scale: {x: 0.9998482, y: 0.9999465, z: 1.0002056} 819 | - name: RightHandThumb3 820 | parentName: RightHandThumb2 821 | position: {x: -0.000000051259992, y: 0.027663492, z: -0.000000042915342} 822 | rotation: {x: -0.012198134, y: -0.013824928, z: -0.029369982, w: 0.9993986} 823 | scale: {x: 0.99999946, y: 0.9999998, z: 1.0000005} 824 | - name: RightHandThumb3_end 825 | parentName: RightHandThumb3 826 | position: {x: -0, y: 0.025122194, z: 0} 827 | rotation: {x: 0, y: -0, z: -0, w: 1} 828 | scale: {x: 1, y: 1, z: 1} 829 | - name: RightHandIndex1 830 | parentName: RightHand 831 | position: {x: 0.0011745673, y: 0.10744044, z: -0.03601907} 832 | rotation: {x: -0.047006242, y: -0.6868794, z: 0.0086405855, w: 0.7251982} 833 | scale: {x: 0.9995993, y: 0.99999374, z: 1.0004072} 834 | - name: RightHandIndex2 835 | parentName: RightHandIndex1 836 | position: {x: 0.000000017881392, y: 0.028035684, z: -0.00000015306286} 837 | rotation: {x: 0.028836867, y: -0.03556478, z: -0.029345287, w: 0.99852014} 838 | scale: {x: 0.9999983, y: 0.9999979, z: 1.0000039} 839 | - name: RightHandIndex3 840 | parentName: RightHandIndex2 841 | position: {x: -0.000000007450581, y: 0.027663864, z: 0.00000011877157} 842 | rotation: {x: 0.021692099, y: -0.021952985, z: -0.005498998, w: 0.99950856} 843 | scale: {x: 0.9999992, y: 0.99999905, z: 1.0000014} 844 | - name: RightHandIndex3_end 845 | parentName: RightHandIndex3 846 | position: {x: -0, y: 0.025443349, z: 0} 847 | rotation: {x: 0, y: -0, z: -0, w: 1} 848 | scale: {x: 1, y: 1, z: 1} 849 | - name: RightHandMiddle1 850 | parentName: RightHand 851 | position: {x: 0.0046846014, y: 0.1093077, z: -0.012414601} 852 | rotation: {x: -0.0077995537, y: -0.7039285, z: 0.0014192472, w: 0.7102266} 853 | scale: {x: 0.9995957, y: 0.99999624, z: 1.000408} 854 | - name: RightHandMiddle2 855 | parentName: RightHandMiddle1 856 | position: {x: 0.0000000011920929, y: 0.029487113, z: 0.00000010304153} 857 | rotation: {x: 0.020707147, y: -0.021010138, z: 0.0058605336, w: 0.99954766} 858 | scale: {x: 0.99999905, y: 0.99999905, z: 1.0000011} 859 | - name: RightHandMiddle3 860 | parentName: RightHandMiddle2 861 | position: {x: 0.000000001490116, y: 0.029648384, z: 0.0000003246963} 862 | rotation: {x: 0.016465282, y: -0.017060688, z: -0.0057984726, w: 0.9997021} 863 | scale: {x: 0.99999964, y: 0.9999997, z: 1.000001} 864 | - name: RightHandMiddle3_end 865 | parentName: RightHandMiddle3 866 | position: {x: -0, y: 0.02810359, z: 0} 867 | rotation: {x: 0, y: -0, z: -0, w: 1} 868 | scale: {x: 1, y: 1, z: 1} 869 | - name: RightHandRing1 870 | parentName: RightHand 871 | position: {x: 0.0055366787, y: 0.109462276, z: 0.011908648} 872 | rotation: {x: -0.0362037, y: -0.6797524, z: -0.016459683, w: 0.7323626} 873 | scale: {x: 0.99959826, y: 0.9999962, z: 1.000406} 874 | - name: RightHandRing2 875 | parentName: RightHandRing1 876 | position: {x: 0.000000023841856, y: 0.027187381, z: -0.00000007927417} 877 | rotation: {x: 0.039883696, y: -0.073682964, z: -0.0027661715, w: 0.9964801} 878 | scale: {x: 0.9999915, y: 0.9999914, z: 1.000017} 879 | - name: RightHandRing3 880 | parentName: RightHandRing2 881 | position: {x: -0.00000000834465, y: 0.023402872, z: 0.000000036358834} 882 | rotation: {x: 0.020397235, y: -0.020860218, z: -0.0011648063, w: 0.99957365} 883 | scale: {x: 0.99999934, y: 0.99999946, z: 1.0000014} 884 | - name: RightHandRing3_end 885 | parentName: RightHandRing3 886 | position: {x: -0, y: 0.023915911, z: 0} 887 | rotation: {x: 0, y: -0, z: -0, w: 1} 888 | scale: {x: 1, y: 1, z: 1} 889 | - name: RightHandPinky1 890 | parentName: RightHand 891 | position: {x: 0.002730159, y: 0.10626373, z: 0.033703577} 892 | rotation: {x: -0.0046739033, y: -0.69992876, z: -0.00961302, w: 0.71413267} 893 | scale: {x: 0.9995957, y: 0.9999962, z: 1.0004082} 894 | - name: RightHandPinky2 895 | parentName: RightHandPinky1 896 | position: {x: -0.0000000017881393, y: 0.023957653, z: -0.00000014051794} 897 | rotation: {x: 0.010666205, y: -0.011190588, z: 0.030980289, w: 0.99940044} 898 | scale: {x: 0.9999997, y: 0.9999998, z: 1.0000002} 899 | - name: RightHandPinky3 900 | parentName: RightHandPinky2 901 | position: {x: -0.000000002980232, y: 0.021255188, z: 0.00000001816079} 902 | rotation: {x: 0.016483776, y: -0.0174043, z: 0.0047535384, w: 0.9997014} 903 | scale: {x: 0.99999946, y: 0.99999946, z: 1.000001} 904 | - name: RightHandPinky3_end 905 | parentName: RightHandPinky3 906 | position: {x: -0, y: 0.020845663, z: 0} 907 | rotation: {x: 0, y: -0, z: -0, w: 1} 908 | scale: {x: 1, y: 1, z: 1} 909 | - name: LeftUpLeg 910 | parentName: Hips 911 | position: {x: 0.08081393, y: -0.06252, z: -0.003564874} 912 | rotation: {x: 0.9996256, y: 0.019231746, z: -0.019249002, w: 0.0028922863} 913 | scale: {x: 0.9998441, y: 0.9999997, z: 0.9999973} 914 | - name: LeftLeg 915 | parentName: LeftUpLeg 916 | position: {x: 0.000000015199184, y: 0.40885338, z: -0.0000000017881393} 917 | rotation: {x: -0.03187888, y: -0.0035883214, z: -0.0023996306, w: 0.99948245} 918 | scale: {x: 0.99999994, y: 0.9999999, z: 0.9999999} 919 | - name: LeftFoot 920 | parentName: LeftLeg 921 | position: {x: -0.0000000035762786, y: 0.4671403, z: 0.0000000011920929} 922 | rotation: {x: 0.471651, y: 0.0037261834, z: -0.01775927, w: 0.8815986} 923 | scale: {x: 1.0000001, y: 0.9999998, z: 0.9999999} 924 | - name: LeftToeBase 925 | parentName: LeftFoot 926 | position: {x: -0.0000000055468705, y: 0.17153767, z: 0.00000001079652} 927 | rotation: {x: 0.008276872, y: 0.9458388, z: 0.32193565, w: -0.040961657} 928 | scale: {x: 1, y: 1.0000004, z: 1.0000002} 929 | - name: LeftToeBase_end 930 | parentName: LeftToeBase 931 | position: {x: -0, y: 0.059487283, z: 0} 932 | rotation: {x: 0, y: -0, z: -0, w: 1} 933 | scale: {x: 1, y: 1, z: 1} 934 | - name: RightUpLeg 935 | parentName: Hips 936 | position: {x: -0.08286372, y: -0.06251998, z: -0.003564815} 937 | rotation: {x: 0.9996252, y: -0.019233102, z: 0.019267887, w: 0.0028923159} 938 | scale: {x: 0.9999941, y: 1, z: 0.9999998} 939 | - name: RightLeg 940 | parentName: RightUpLeg 941 | position: {x: -0.000000013932586, y: 0.40885344, z: 0} 942 | rotation: {x: -0.03187894, y: 0.0035755502, z: 0.0023991263, w: 0.9994825} 943 | scale: {x: 0.99999994, y: 0.9999999, z: 0.9999999} 944 | - name: RightFoot 945 | parentName: RightLeg 946 | position: {x: 0.0000000032782554, y: 0.4671401, z: 0.000000004172325} 947 | rotation: {x: 0.47165015, y: -0.0037228111, z: 0.01775562, w: 0.8815991} 948 | scale: {x: 1, y: 0.9999997, z: 0.99999994} 949 | - name: RightToeBase 950 | parentName: RightFoot 951 | position: {x: -0.000000011547355, y: 0.1715372, z: -0.000000003359878} 952 | rotation: {x: -0.008277892, y: 0.9458391, z: 0.3219362, w: 0.040951755} 953 | scale: {x: 1, y: 1.0000005, z: 0.99999994} 954 | - name: RightToeBase_end 955 | parentName: RightToeBase 956 | position: {x: -0, y: 0.05948729, z: 0} 957 | rotation: {x: 0, y: -0, z: -0, w: 1} 958 | scale: {x: 1, y: 1, z: 1} 959 | armTwist: 0.5 960 | foreArmTwist: 0.5 961 | upperLegTwist: 0.5 962 | legTwist: 0.5 963 | armStretch: 0.05 964 | legStretch: 0.05 965 | feetSpacing: 0 966 | rootMotionBoneName: 967 | rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} 968 | hasTranslationDoF: 0 969 | hasExtraRoot: 1 970 | skeletonHasParents: 1 971 | lastHumanDescriptionAvatarSource: {instanceID: 0} 972 | animationType: 3 973 | humanoidOversampling: 1 974 | additionalBone: 0 975 | userData: 976 | assetBundleName: 977 | assetBundleVariant: 978 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Models/env.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43060da07e259604d8ac81b964f96459 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: 6 | - first: 7 | 1: 100000 8 | second: //RootNode 9 | - first: 10 | 1: 100002 11 | second: Mesh1 12 | - first: 13 | 4: 400000 14 | second: //RootNode 15 | - first: 16 | 4: 400002 17 | second: Mesh1 18 | - first: 19 | 23: 2300000 20 | second: Mesh1 21 | - first: 22 | 33: 3300000 23 | second: Mesh1 24 | - first: 25 | 43: 4300000 26 | second: Mesh1 27 | - first: 28 | 64: 6400000 29 | second: Mesh1 30 | - first: 31 | 95: 9500000 32 | second: //RootNode 33 | externalObjects: 34 | - first: 35 | type: UnityEngine:Material 36 | assembly: UnityEngine.CoreModule 37 | name: Color_A01 38 | second: {fileID: 2100000, guid: 0f18cee81154e4446b57c0a08a0c5784, type: 2} 39 | - first: 40 | type: UnityEngine:Material 41 | assembly: UnityEngine.CoreModule 42 | name: Color_B06 43 | second: {fileID: 2100000, guid: 9d797621ccc055949af03b1834ad28f3, type: 2} 44 | - first: 45 | type: UnityEngine:Material 46 | assembly: UnityEngine.CoreModule 47 | name: Color_H08 48 | second: {fileID: 2100000, guid: db7eb7293cc0c134abfa1a9961ebee67, type: 2} 49 | - first: 50 | type: UnityEngine:Material 51 | assembly: UnityEngine.CoreModule 52 | name: FrontColor 53 | second: {fileID: 2100000, guid: 7991a352556e77c4d85c272bf5bddf5b, type: 2} 54 | - first: 55 | type: UnityEngine:Material 56 | assembly: UnityEngine.CoreModule 57 | name: Rectangles_Stacked_1x12 58 | second: {fileID: 2100000, guid: 5cfab921792740a45ac2c8d84c5847a8, type: 2} 59 | - first: 60 | type: UnityEngine:Material 61 | assembly: UnityEngine.CoreModule 62 | name: Rectangles_Stacked_1x2 63 | second: {fileID: 2100000, guid: 6cb99446ea175a140a1888978f6862d2, type: 2} 64 | materials: 65 | importMaterials: 0 66 | materialName: 0 67 | materialSearch: 1 68 | materialLocation: 0 69 | animations: 70 | legacyGenerateAnimations: 4 71 | bakeSimulation: 0 72 | resampleCurves: 1 73 | optimizeGameObjects: 0 74 | motionNodeName: 75 | rigImportErrors: 76 | rigImportWarnings: 77 | animationImportErrors: 78 | animationImportWarnings: 79 | animationRetargetingWarnings: 80 | animationDoRetargetingWarnings: 0 81 | importAnimatedCustomProperties: 0 82 | importConstraints: 0 83 | animationCompression: 1 84 | animationRotationError: 0.5 85 | animationPositionError: 0.5 86 | animationScaleError: 0.5 87 | animationWrapMode: 0 88 | extraExposedTransformPaths: [] 89 | extraUserProperties: [] 90 | clipAnimations: [] 91 | isReadable: 1 92 | meshes: 93 | lODScreenPercentages: [] 94 | globalScale: 1 95 | meshCompression: 0 96 | addColliders: 1 97 | useSRGBMaterialColor: 1 98 | sortHierarchyByName: 1 99 | importVisibility: 0 100 | importBlendShapes: 1 101 | importCameras: 0 102 | importLights: 0 103 | swapUVChannels: 0 104 | generateSecondaryUV: 0 105 | useFileUnits: 1 106 | keepQuads: 0 107 | weldVertices: 1 108 | preserveHierarchy: 0 109 | skinWeightsMode: 0 110 | maxBonesPerVertex: 4 111 | minBoneWeight: 0.001 112 | meshOptimizationFlags: -1 113 | indexFormat: 1 114 | secondaryUVAngleDistortion: 8 115 | secondaryUVAreaDistortion: 15.000001 116 | secondaryUVHardAngle: 88 117 | secondaryUVPackMargin: 4 118 | useFileScale: 0 119 | tangentSpace: 120 | normalSmoothAngle: 60 121 | normalImportMode: 0 122 | tangentImportMode: 4 123 | normalCalculationMode: 0 124 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 125 | blendShapeNormalImportMode: 1 126 | normalSmoothingSource: 0 127 | referencedClips: [] 128 | importAnimation: 1 129 | copyAvatar: 0 130 | humanDescription: 131 | serializedVersion: 3 132 | human: [] 133 | skeleton: [] 134 | armTwist: 0.5 135 | foreArmTwist: 0.5 136 | upperLegTwist: 0.5 137 | legTwist: 0.5 138 | armStretch: 0.05 139 | legStretch: 0.05 140 | feetSpacing: 0 141 | globalScale: 1 142 | rootMotionBoneName: 143 | hasTranslationDoF: 0 144 | hasExtraRoot: 0 145 | skeletonHasParents: 0 146 | lastHumanDescriptionAvatarSource: {instanceID: 0} 147 | animationType: 2 148 | humanoidOversampling: 1 149 | additionalBone: 0 150 | userData: 151 | assetBundleName: 152 | assetBundleVariant: 153 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ae93ac891c5aa842a28be4ff92d2e1a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Prefabs/shadow.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Prefabs/shadow.prefab -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Prefabs/shadow.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99aff40f3c93eea4eaf473f85c4c09c6 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/README.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/README.pdf -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/README.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 56efd77465500044fa2b957f531762eb 3 | timeCreated: 1507091259 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c6b5f509fbde9744887f1cf2bcd2e22e 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scenes/3rdPerson+Fly.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Scenes/3rdPerson+Fly.unity -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scenes/3rdPerson+Fly.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: edce6a3cd6b78e7459bd2864b9295f8c 3 | timeCreated: 1505869402 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b68cf27312661fb48ae1c6e4e53e15a9 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d0828fc1c85b1545aef83398c6359b6 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts/ControlsTutorial.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // This class is created for the example scene. There is no support for this script. 4 | public class ControlsTutorial : MonoBehaviour 5 | { 6 | private string message = ""; 7 | private bool showMsg = false; 8 | 9 | private int w = 550; 10 | private int h = 100; 11 | private Rect textArea; 12 | private GUIStyle style; 13 | private Color textColor; 14 | 15 | private GameObject KeyboardCommands; 16 | private GameObject gamepadCommands; 17 | 18 | void Awake() 19 | { 20 | style = new GUIStyle(); 21 | style.alignment = TextAnchor.MiddleCenter; 22 | style.fontSize = 36; 23 | style.wordWrap = true; 24 | textColor = Color.white; 25 | textColor.a = 0; 26 | textArea = new Rect((Screen.width-w)/2, 0, w, h); 27 | 28 | KeyboardCommands = this.transform.Find("ScreenHUD/Keyboard").gameObject; 29 | gamepadCommands = this.transform.Find("ScreenHUD/Gamepad").gameObject; 30 | } 31 | 32 | void Update() 33 | { 34 | if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) 35 | { 36 | Cursor.lockState = CursorLockMode.Locked; 37 | Cursor.visible = false; 38 | } 39 | if (Input.GetKeyDown("escape")) 40 | { 41 | Cursor.lockState = CursorLockMode.Locked; 42 | Cursor.visible = true; 43 | } 44 | KeyboardCommands.SetActive(Input.GetKey(KeyCode.F2)); 45 | gamepadCommands.SetActive(Input.GetKey(KeyCode.F3) || Input.GetKey(KeyCode.Joystick1Button7)); 46 | } 47 | 48 | void OnGUI() 49 | { 50 | if(showMsg) 51 | { 52 | if(textColor.a <= 1) 53 | textColor.a += 0.5f * Time.deltaTime; 54 | } 55 | // no hint to show 56 | else 57 | { 58 | if(textColor.a > 0) 59 | textColor.a -= 0.5f * Time.deltaTime; 60 | } 61 | 62 | style.normal.textColor = textColor; 63 | 64 | GUI.Label(textArea, message, style); 65 | } 66 | 67 | public void SetShowMsg(bool show) 68 | { 69 | showMsg = show; 70 | } 71 | 72 | public void SetMessage(string msg) 73 | { 74 | message = msg; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts/ControlsTutorial.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10f2785937e90f84bb96560b7426b333 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts/HintManagement.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | // This class is created for the example scene. There is no support for this script. 5 | public class HintManagement : MonoBehaviour 6 | { 7 | public string message = ""; 8 | public string message2 = ""; 9 | public KeyCode changeMessageKey; 10 | 11 | private GameObject player; 12 | private bool used = false; 13 | 14 | private ControlsTutorial manager; 15 | 16 | void Awake() 17 | { 18 | player = GameObject.FindGameObjectWithTag("Player"); 19 | manager = GameObject.FindGameObjectWithTag("GameController").GetComponent (); 20 | } 21 | 22 | void OnTriggerEnter(Collider other) 23 | { 24 | if((other.gameObject == player) && !used) 25 | { 26 | manager.SetShowMsg(true); 27 | manager.SetMessage(message); 28 | used = true; 29 | } 30 | } 31 | 32 | void OnTriggerExit(Collider other) 33 | { 34 | if(other.gameObject == player) 35 | { 36 | manager.SetShowMsg(false); 37 | Destroy(gameObject); 38 | } 39 | } 40 | 41 | private void OnTriggerStay(Collider other) 42 | { 43 | if(message2 != "" && other.gameObject == player && Input.GetKeyDown(changeMessageKey)) 44 | { 45 | manager.SetMessage(message2); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts/HintManagement.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f86760de18a61b34e84d55ada8244805 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts/ThirdPersonOrbitCamBasic.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // This class corresponds to the 3rd person camera features. 4 | public class ThirdPersonOrbitCamBasic : MonoBehaviour 5 | { 6 | public Transform player; // Player's reference. 7 | public Vector3 pivotOffset = new Vector3(0.0f, 1.0f, 0.0f); // Offset to repoint the camera. 8 | public Vector3 camOffset = new Vector3(0.4f, 0.5f, -2.0f); // Offset to relocate the camera related to the player position. 9 | public float smooth = 10f; // Speed of camera responsiveness. 10 | public float horizontalAimingSpeed = 6f; // Horizontal turn speed. 11 | public float verticalAimingSpeed = 6f; // Vertical turn speed. 12 | public float maxVerticalAngle = 30f; // Camera max clamp angle. 13 | public float minVerticalAngle = -60f; // Camera min clamp angle. 14 | public string XAxis = "Analog X"; // The default horizontal axis input name. 15 | public string YAxis = "Analog Y"; // The default vertical axis input name. 16 | 17 | private float angleH = 0; // Float to store camera horizontal angle related to mouse movement. 18 | private float angleV = 0; // Float to store camera vertical angle related to mouse movement. 19 | private Transform cam; // This transform. 20 | private Vector3 relCameraPos; // Current camera position relative to the player. 21 | private float relCameraPosMag; // Current camera distance to the player. 22 | private Vector3 smoothPivotOffset; // Camera current pivot offset on interpolation. 23 | private Vector3 smoothCamOffset; // Camera current offset on interpolation. 24 | private Vector3 targetPivotOffset; // Camera pivot offset target to iterpolate. 25 | private Vector3 targetCamOffset; // Camera offset target to interpolate. 26 | private float defaultFOV; // Default camera Field of View. 27 | private float targetFOV; // Target camera Field of View. 28 | private float targetMaxVerticalAngle; // Custom camera max vertical clamp angle. 29 | 30 | // Get the camera horizontal angle. 31 | public float GetH { get { return angleH; } } 32 | 33 | void Awake() 34 | { 35 | // Reference to the camera transform. 36 | cam = transform; 37 | 38 | // Set camera default position. 39 | cam.position = player.position + Quaternion.identity * pivotOffset + Quaternion.identity * camOffset; 40 | cam.rotation = Quaternion.identity; 41 | 42 | // Get camera position relative to the player, used for collision test. 43 | relCameraPos = transform.position - player.position; 44 | relCameraPosMag = relCameraPos.magnitude - 0.5f; 45 | 46 | // Set up references and default values. 47 | smoothPivotOffset = pivotOffset; 48 | smoothCamOffset = camOffset; 49 | defaultFOV = cam.GetComponent().fieldOfView; 50 | angleH = player.eulerAngles.y; 51 | 52 | ResetTargetOffsets (); 53 | ResetFOV (); 54 | ResetMaxVerticalAngle(); 55 | } 56 | 57 | void Update() 58 | { 59 | // Get mouse movement to orbit the camera. 60 | // Mouse: 61 | angleH += Mathf.Clamp(Input.GetAxis("Mouse X"), -1, 1) * horizontalAimingSpeed; 62 | angleV += Mathf.Clamp(Input.GetAxis("Mouse Y"), -1, 1) * verticalAimingSpeed; 63 | // Joystick: 64 | angleH += Mathf.Clamp(Input.GetAxis(XAxis), -1, 1) * 60 * horizontalAimingSpeed * Time.deltaTime; 65 | angleV += Mathf.Clamp(Input.GetAxis(YAxis), -1, 1) * 60 * verticalAimingSpeed * Time.deltaTime; 66 | 67 | // Set vertical movement limit. 68 | angleV = Mathf.Clamp(angleV, minVerticalAngle, targetMaxVerticalAngle); 69 | 70 | // Set camera orientation. 71 | Quaternion camYRotation = Quaternion.Euler(0, angleH, 0); 72 | Quaternion aimRotation = Quaternion.Euler(-angleV, angleH, 0); 73 | cam.rotation = aimRotation; 74 | 75 | // Set FOV. 76 | cam.GetComponent().fieldOfView = Mathf.Lerp (cam.GetComponent().fieldOfView, targetFOV, Time.deltaTime); 77 | 78 | // Test for collision with the environment based on current camera position. 79 | Vector3 baseTempPosition = player.position + camYRotation * targetPivotOffset; 80 | Vector3 noCollisionOffset = targetCamOffset; 81 | for(float zOffset = targetCamOffset.z; zOffset <= 0; zOffset += 0.5f) 82 | { 83 | noCollisionOffset.z = zOffset; 84 | if (DoubleViewingPosCheck (baseTempPosition + aimRotation * noCollisionOffset, Mathf.Abs(zOffset)) || zOffset == 0) 85 | { 86 | break; 87 | } 88 | } 89 | 90 | // Repostition the camera. 91 | smoothPivotOffset = Vector3.Lerp(smoothPivotOffset, targetPivotOffset, smooth * Time.deltaTime); 92 | smoothCamOffset = Vector3.Lerp(smoothCamOffset, noCollisionOffset, smooth * Time.deltaTime); 93 | 94 | cam.position = player.position + camYRotation * smoothPivotOffset + aimRotation * smoothCamOffset; 95 | } 96 | 97 | // Set camera offsets to custom values. 98 | public void SetTargetOffsets(Vector3 newPivotOffset, Vector3 newCamOffset) 99 | { 100 | targetPivotOffset = newPivotOffset; 101 | targetCamOffset = newCamOffset; 102 | } 103 | 104 | // Reset camera offsets to default values. 105 | public void ResetTargetOffsets() 106 | { 107 | targetPivotOffset = pivotOffset; 108 | targetCamOffset = camOffset; 109 | } 110 | 111 | // Reset the camera vertical offset. 112 | public void ResetYCamOffset() 113 | { 114 | targetCamOffset.y = camOffset.y; 115 | } 116 | 117 | // Set camera vertical offset. 118 | public void SetYCamOffset(float y) 119 | { 120 | targetCamOffset.y = y; 121 | } 122 | 123 | // Set camera horizontal offset. 124 | public void SetXCamOffset(float x) 125 | { 126 | targetCamOffset.x = x; 127 | } 128 | 129 | // Set custom Field of View. 130 | public void SetFOV(float customFOV) 131 | { 132 | this.targetFOV = customFOV; 133 | } 134 | 135 | // Reset Field of View to default value. 136 | public void ResetFOV() 137 | { 138 | this.targetFOV = defaultFOV; 139 | } 140 | 141 | // Set max vertical camera rotation angle. 142 | public void SetMaxVerticalAngle(float angle) 143 | { 144 | this.targetMaxVerticalAngle = angle; 145 | } 146 | 147 | // Reset max vertical camera rotation angle to default value. 148 | public void ResetMaxVerticalAngle() 149 | { 150 | this.targetMaxVerticalAngle = maxVerticalAngle; 151 | } 152 | 153 | // Double check for collisions: concave objects doesn't detect hit from outside, so cast in both directions. 154 | bool DoubleViewingPosCheck(Vector3 checkPos, float offset) 155 | { 156 | float playerFocusHeight = player.GetComponent ().height * 0.75f; 157 | return ViewingPosCheck (checkPos, playerFocusHeight) && ReverseViewingPosCheck (checkPos, playerFocusHeight, offset); 158 | } 159 | 160 | // Check for collision from camera to player. 161 | bool ViewingPosCheck (Vector3 checkPos, float deltaPlayerHeight) 162 | { 163 | // Cast target. 164 | Vector3 target = player.position + (Vector3.up * deltaPlayerHeight); 165 | // If a raycast from the check position to the player hits something... 166 | if (Physics.SphereCast(checkPos, 0.2f, target - checkPos, out RaycastHit hit, relCameraPosMag)) 167 | { 168 | // ... if it is not the player... 169 | if(hit.transform != player && !hit.transform.GetComponent().isTrigger) 170 | { 171 | // This position isn't appropriate. 172 | return false; 173 | } 174 | } 175 | // If we haven't hit anything or we've hit the player, this is an appropriate position. 176 | return true; 177 | } 178 | 179 | // Check for collision from player to camera. 180 | bool ReverseViewingPosCheck(Vector3 checkPos, float deltaPlayerHeight, float maxDistance) 181 | { 182 | // Cast origin. 183 | Vector3 origin = player.position + (Vector3.up * deltaPlayerHeight); 184 | if (Physics.SphereCast(origin, 0.2f, checkPos - origin, out RaycastHit hit, maxDistance)) 185 | { 186 | if(hit.transform != player && hit.transform != transform && !hit.transform.GetComponent().isTrigger) 187 | { 188 | return false; 189 | } 190 | } 191 | return true; 192 | } 193 | 194 | // Get camera magnitude. 195 | public float GetCurrentPivotMagnitude(Vector3 finalPivotOffset) 196 | { 197 | return Mathf.Abs ((finalPivotOffset - smoothPivotOffset).magnitude); 198 | } 199 | } 200 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/LevelScripts/ThirdPersonOrbitCamBasic.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 455241d876ac8b44d8a43bf97c726307 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bbbed778c32c9564183f656215edbcd2 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/AimBehaviourBasic.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | // AimBehaviour inherits from GenericBehaviour. This class corresponds to aim and strafe behaviour. 5 | public class AimBehaviourBasic : GenericBehaviour 6 | { 7 | public string aimButton = "Aim", shoulderButton = "Aim Shoulder"; // Default aim and switch shoulders buttons. 8 | public Texture2D crosshair; // Crosshair texture. 9 | public float aimTurnSmoothing = 0.15f; // Speed of turn response when aiming to match camera facing. 10 | public Vector3 aimPivotOffset = new Vector3(0.5f, 1.2f, 0f); // Offset to repoint the camera when aiming. 11 | public Vector3 aimCamOffset = new Vector3(0f, 0.4f, -0.7f); // Offset to relocate the camera when aiming. 12 | 13 | private int aimBool; // Animator variable related to aiming. 14 | private bool aim; // Boolean to determine whether or not the player is aiming. 15 | 16 | // Start is always called after any Awake functions. 17 | void Start () 18 | { 19 | // Set up the references. 20 | aimBool = Animator.StringToHash("Aim"); 21 | } 22 | 23 | // Update is used to set features regardless the active behaviour. 24 | void Update () 25 | { 26 | // Activate/deactivate aim by input. 27 | if (Input.GetAxisRaw(aimButton) != 0 && !aim) 28 | { 29 | StartCoroutine(ToggleAimOn()); 30 | } 31 | else if (aim && Input.GetAxisRaw(aimButton) == 0) 32 | { 33 | StartCoroutine(ToggleAimOff()); 34 | } 35 | 36 | // No sprinting while aiming. 37 | canSprint = !aim; 38 | 39 | // Toggle camera aim position left or right, switching shoulders. 40 | if (aim && Input.GetButtonDown (shoulderButton)) 41 | { 42 | aimCamOffset.x = aimCamOffset.x * (-1); 43 | aimPivotOffset.x = aimPivotOffset.x * (-1); 44 | } 45 | 46 | // Set aim boolean on the Animator Controller. 47 | behaviourManager.GetAnim.SetBool (aimBool, aim); 48 | } 49 | 50 | // Co-rountine to start aiming mode with delay. 51 | private IEnumerator ToggleAimOn() 52 | { 53 | yield return new WaitForSeconds(0.05f); 54 | // Aiming is not possible. 55 | if (behaviourManager.GetTempLockStatus(this.behaviourCode) || behaviourManager.IsOverriding(this)) 56 | yield return false; 57 | 58 | // Start aiming. 59 | else 60 | { 61 | aim = true; 62 | int signal = 1; 63 | aimCamOffset.x = Mathf.Abs(aimCamOffset.x) * signal; 64 | aimPivotOffset.x = Mathf.Abs(aimPivotOffset.x) * signal; 65 | yield return new WaitForSeconds(0.1f); 66 | behaviourManager.GetAnim.SetFloat(speedFloat, 0); 67 | // This state overrides the active one. 68 | behaviourManager.OverrideWithBehaviour(this); 69 | } 70 | } 71 | 72 | // Co-rountine to end aiming mode with delay. 73 | private IEnumerator ToggleAimOff() 74 | { 75 | aim = false; 76 | yield return new WaitForSeconds(0.3f); 77 | behaviourManager.GetCamScript.ResetTargetOffsets(); 78 | behaviourManager.GetCamScript.ResetMaxVerticalAngle(); 79 | yield return new WaitForSeconds(0.05f); 80 | behaviourManager.RevokeOverridingBehaviour(this); 81 | } 82 | 83 | // LocalFixedUpdate overrides the virtual function of the base class. 84 | public override void LocalFixedUpdate() 85 | { 86 | // Set camera position and orientation to the aim mode parameters. 87 | if(aim) 88 | behaviourManager.GetCamScript.SetTargetOffsets (aimPivotOffset, aimCamOffset); 89 | } 90 | 91 | // LocalLateUpdate: manager is called here to set player rotation after camera rotates, avoiding flickering. 92 | public override void LocalLateUpdate() 93 | { 94 | AimManagement(); 95 | } 96 | 97 | // Handle aim parameters when aiming is active. 98 | void AimManagement() 99 | { 100 | // Deal with the player orientation when aiming. 101 | Rotating(); 102 | } 103 | 104 | // Rotate the player to match correct orientation, according to camera. 105 | void Rotating() 106 | { 107 | Vector3 forward = behaviourManager.playerCamera.TransformDirection(Vector3.forward); 108 | // Player is moving on ground, Y component of camera facing is not relevant. 109 | forward.y = 0.0f; 110 | forward = forward.normalized; 111 | 112 | // Always rotates the player according to the camera horizontal rotation in aim mode. 113 | Quaternion targetRotation = Quaternion.Euler(0, behaviourManager.GetCamScript.GetH, 0); 114 | 115 | float minSpeed = Quaternion.Angle(transform.rotation, targetRotation) * aimTurnSmoothing; 116 | 117 | // Rotate entire player to face camera. 118 | behaviourManager.SetLastDirection(forward); 119 | transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, minSpeed * Time.deltaTime); 120 | 121 | } 122 | 123 | // Draw the crosshair when aiming. 124 | void OnGUI () 125 | { 126 | if (crosshair) 127 | { 128 | float mag = behaviourManager.GetCamScript.GetCurrentPivotMagnitude(aimPivotOffset); 129 | if (mag < 0.05f) 130 | GUI.DrawTexture(new Rect(Screen.width / 2 - (crosshair.width * 0.5f), 131 | Screen.height / 2 - (crosshair.height * 0.5f), 132 | crosshair.width, crosshair.height), crosshair); 133 | } 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/AimBehaviourBasic.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 247335de9c2ba3d49bbbada1d0562339 3 | timeCreated: 1464206982 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/BasicBehaviour.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | // This class manages which player behaviour is active or overriding, and call its local functions. 5 | // Contains basic setup and common functions used by all the player behaviours. 6 | public class BasicBehaviour : MonoBehaviour 7 | { 8 | public Transform playerCamera; // Reference to the camera that focus the player. 9 | public float turnSmoothing = 0.06f; // Speed of turn when moving to match camera facing. 10 | public float sprintFOV = 100f; // the FOV to use on the camera when player is sprinting. 11 | public string sprintButton = "Sprint"; // Default sprint button input name. 12 | 13 | private float h; // Horizontal Axis. 14 | private float v; // Vertical Axis. 15 | private int currentBehaviour; // Reference to the current player behaviour. 16 | private int defaultBehaviour; // The default behaviour of the player when any other is not active. 17 | private int behaviourLocked; // Reference to temporary locked behaviour that forbids override. 18 | private Vector3 lastDirection; // Last direction the player was moving. 19 | private Animator anim; // Reference to the Animator component. 20 | private ThirdPersonOrbitCamBasic camScript; // Reference to the third person camera script. 21 | private bool sprint; // Boolean to determine whether or not the player activated the sprint mode. 22 | private bool changedFOV; // Boolean to store when the sprint action has changed de camera FOV. 23 | private int hFloat; // Animator variable related to Horizontal Axis. 24 | private int vFloat; // Animator variable related to Vertical Axis. 25 | private List behaviours; // The list containing all the enabled player behaviours. 26 | private List overridingBehaviours; // List of current overriding behaviours. 27 | private Rigidbody rBody; // Reference to the player's rigidbody. 28 | private int groundedBool; // Animator variable related to whether or not the player is on the ground. 29 | private Vector3 colExtents; // Collider extents for ground test. 30 | 31 | // Get current horizontal and vertical axes. 32 | public float GetH { get { return h; } } 33 | public float GetV { get { return v; } } 34 | 35 | // Get the player camera script. 36 | public ThirdPersonOrbitCamBasic GetCamScript { get { return camScript; } } 37 | 38 | // Get the player's rigid body. 39 | public Rigidbody GetRigidBody { get { return rBody; } } 40 | 41 | // Get the player's animator controller. 42 | public Animator GetAnim { get { return anim; } } 43 | 44 | // Get current default behaviour. 45 | public int GetDefaultBehaviour { get { return defaultBehaviour; } } 46 | 47 | void Awake () 48 | { 49 | // Set up the references. 50 | behaviours = new List (); 51 | overridingBehaviours = new List(); 52 | anim = GetComponent (); 53 | hFloat = Animator.StringToHash("H"); 54 | vFloat = Animator.StringToHash("V"); 55 | camScript = playerCamera.GetComponent (); 56 | rBody = GetComponent (); 57 | 58 | // Grounded verification variables. 59 | groundedBool = Animator.StringToHash("Grounded"); 60 | colExtents = GetComponent().bounds.extents; 61 | } 62 | 63 | void Update() 64 | { 65 | // Store the input axes. 66 | h = Input.GetAxis("Horizontal"); 67 | v = Input.GetAxis("Vertical"); 68 | 69 | // Set the input axes on the Animator Controller. 70 | anim.SetFloat(hFloat, h, 0.1f, Time.deltaTime); 71 | anim.SetFloat(vFloat, v, 0.1f, Time.deltaTime); 72 | 73 | // Toggle sprint by input. 74 | sprint = Input.GetButton (sprintButton); 75 | 76 | // Set the correct camera FOV for sprint mode. 77 | if(IsSprinting()) 78 | { 79 | changedFOV = true; 80 | camScript.SetFOV(sprintFOV); 81 | } 82 | else if(changedFOV) 83 | { 84 | camScript.ResetFOV(); 85 | changedFOV = false; 86 | } 87 | // Set the grounded test on the Animator Controller. 88 | anim.SetBool(groundedBool, IsGrounded()); 89 | } 90 | 91 | // Call the FixedUpdate functions of the active or overriding behaviours. 92 | void FixedUpdate() 93 | { 94 | // Call the active behaviour if no other is overriding. 95 | bool isAnyBehaviourActive = false; 96 | if (behaviourLocked > 0 || overridingBehaviours.Count == 0) 97 | { 98 | foreach (GenericBehaviour behaviour in behaviours) 99 | { 100 | if (behaviour.isActiveAndEnabled && currentBehaviour == behaviour.GetBehaviourCode()) 101 | { 102 | isAnyBehaviourActive = true; 103 | behaviour.LocalFixedUpdate(); 104 | } 105 | } 106 | } 107 | // Call the overriding behaviours if any. 108 | else 109 | { 110 | foreach (GenericBehaviour behaviour in overridingBehaviours) 111 | { 112 | behaviour.LocalFixedUpdate(); 113 | } 114 | } 115 | 116 | // Ensure the player will stand on ground if no behaviour is active or overriding. 117 | if (!isAnyBehaviourActive && overridingBehaviours.Count == 0) 118 | { 119 | rBody.useGravity = true; 120 | Repositioning (); 121 | } 122 | } 123 | 124 | // Call the LateUpdate functions of the active or overriding behaviours. 125 | private void LateUpdate() 126 | { 127 | // Call the active behaviour if no other is overriding. 128 | if (behaviourLocked > 0 || overridingBehaviours.Count == 0) 129 | { 130 | foreach (GenericBehaviour behaviour in behaviours) 131 | { 132 | if (behaviour.isActiveAndEnabled && currentBehaviour == behaviour.GetBehaviourCode()) 133 | { 134 | behaviour.LocalLateUpdate(); 135 | } 136 | } 137 | } 138 | // Call the overriding behaviours if any. 139 | else 140 | { 141 | foreach (GenericBehaviour behaviour in overridingBehaviours) 142 | { 143 | behaviour.LocalLateUpdate(); 144 | } 145 | } 146 | 147 | } 148 | 149 | // Put a new behaviour on the behaviours watch list. 150 | public void SubscribeBehaviour(GenericBehaviour behaviour) 151 | { 152 | behaviours.Add (behaviour); 153 | } 154 | 155 | // Set the default player behaviour. 156 | public void RegisterDefaultBehaviour(int behaviourCode) 157 | { 158 | defaultBehaviour = behaviourCode; 159 | currentBehaviour = behaviourCode; 160 | } 161 | 162 | // Attempt to set a custom behaviour as the active one. 163 | // Always changes from default behaviour to the passed one. 164 | public void RegisterBehaviour(int behaviourCode) 165 | { 166 | if (currentBehaviour == defaultBehaviour) 167 | { 168 | currentBehaviour = behaviourCode; 169 | } 170 | } 171 | 172 | // Attempt to deactivate a player behaviour and return to the default one. 173 | public void UnregisterBehaviour(int behaviourCode) 174 | { 175 | if (currentBehaviour == behaviourCode) 176 | { 177 | currentBehaviour = defaultBehaviour; 178 | } 179 | } 180 | 181 | // Attempt to override any active behaviour with the behaviours on queue. 182 | // Use to change to one or more behaviours that must overlap the active one (ex.: aim behaviour). 183 | public bool OverrideWithBehaviour(GenericBehaviour behaviour) 184 | { 185 | // Behaviour is not on queue. 186 | if (!overridingBehaviours.Contains(behaviour)) 187 | { 188 | // No behaviour is currently being overridden. 189 | if (overridingBehaviours.Count == 0) 190 | { 191 | // Call OnOverride function of the active behaviour before overrides it. 192 | foreach (GenericBehaviour overriddenBehaviour in behaviours) 193 | { 194 | if (overriddenBehaviour.isActiveAndEnabled && currentBehaviour == overriddenBehaviour.GetBehaviourCode()) 195 | { 196 | overriddenBehaviour.OnOverride(); 197 | break; 198 | } 199 | } 200 | } 201 | // Add overriding behaviour to the queue. 202 | overridingBehaviours.Add(behaviour); 203 | return true; 204 | } 205 | return false; 206 | } 207 | 208 | // Attempt to revoke the overriding behaviour and return to the active one. 209 | // Called when exiting the overriding behaviour (ex.: stopped aiming). 210 | public bool RevokeOverridingBehaviour(GenericBehaviour behaviour) 211 | { 212 | if (overridingBehaviours.Contains(behaviour)) 213 | { 214 | overridingBehaviours.Remove(behaviour); 215 | return true; 216 | } 217 | return false; 218 | } 219 | 220 | // Check if any or a specific behaviour is currently overriding the active one. 221 | public bool IsOverriding(GenericBehaviour behaviour = null) 222 | { 223 | if (behaviour == null) 224 | return overridingBehaviours.Count > 0; 225 | return overridingBehaviours.Contains(behaviour); 226 | } 227 | 228 | // Check if the active behaviour is the passed one. 229 | public bool IsCurrentBehaviour(int behaviourCode) 230 | { 231 | return this.currentBehaviour == behaviourCode; 232 | } 233 | 234 | // Check if any other behaviour is temporary locked. 235 | public bool GetTempLockStatus(int behaviourCodeIgnoreSelf = 0) 236 | { 237 | return (behaviourLocked != 0 && behaviourLocked != behaviourCodeIgnoreSelf); 238 | } 239 | 240 | // Atempt to lock on a specific behaviour. 241 | // No other behaviour can overrhide during the temporary lock. 242 | // Use for temporary transitions like jumping, entering/exiting aiming mode, etc. 243 | public void LockTempBehaviour(int behaviourCode) 244 | { 245 | if (behaviourLocked == 0) 246 | { 247 | behaviourLocked = behaviourCode; 248 | } 249 | } 250 | 251 | // Attempt to unlock the current locked behaviour. 252 | // Use after a temporary transition ends. 253 | public void UnlockTempBehaviour(int behaviourCode) 254 | { 255 | if(behaviourLocked == behaviourCode) 256 | { 257 | behaviourLocked = 0; 258 | } 259 | } 260 | 261 | // Common functions to any behaviour: 262 | 263 | // Check if player is sprinting. 264 | public virtual bool IsSprinting() 265 | { 266 | return sprint && IsMoving() && CanSprint(); 267 | } 268 | 269 | // Check if player can sprint (all behaviours must allow). 270 | public bool CanSprint() 271 | { 272 | foreach (GenericBehaviour behaviour in behaviours) 273 | { 274 | if (!behaviour.AllowSprint ()) 275 | return false; 276 | } 277 | foreach(GenericBehaviour behaviour in overridingBehaviours) 278 | { 279 | if (!behaviour.AllowSprint()) 280 | return false; 281 | } 282 | return true; 283 | } 284 | 285 | // Check if the player is moving on the horizontal plane. 286 | public bool IsHorizontalMoving() 287 | { 288 | return h != 0; 289 | } 290 | 291 | // Check if the player is moving. 292 | public bool IsMoving() 293 | { 294 | return (h != 0)|| (v != 0); 295 | } 296 | 297 | // Get the last player direction of facing. 298 | public Vector3 GetLastDirection() 299 | { 300 | return lastDirection; 301 | } 302 | 303 | // Set the last player direction of facing. 304 | public void SetLastDirection(Vector3 direction) 305 | { 306 | lastDirection = direction; 307 | } 308 | 309 | // Put the player on a standing up position based on last direction faced. 310 | public void Repositioning() 311 | { 312 | if(lastDirection != Vector3.zero) 313 | { 314 | lastDirection.y = 0; 315 | Quaternion targetRotation = Quaternion.LookRotation (lastDirection); 316 | Quaternion newRotation = Quaternion.Slerp(rBody.rotation, targetRotation, turnSmoothing); 317 | rBody.MoveRotation (newRotation); 318 | } 319 | } 320 | 321 | // Function to tell whether or not the player is on ground. 322 | public bool IsGrounded() 323 | { 324 | Ray ray = new Ray(this.transform.position + Vector3.up * 2 * colExtents.x, Vector3.down); 325 | return Physics.SphereCast(ray, colExtents.x, colExtents.x + 0.2f); 326 | } 327 | } 328 | 329 | // This is the base class for all player behaviours, any custom behaviour must inherit from this. 330 | // Contains references to local components that may differ according to the behaviour itself. 331 | public abstract class GenericBehaviour : MonoBehaviour 332 | { 333 | //protected Animator anim; // Reference to the Animator component. 334 | protected int speedFloat; // Speed parameter on the Animator. 335 | protected BasicBehaviour behaviourManager; // Reference to the basic behaviour manager. 336 | protected int behaviourCode; // The code that identifies a behaviour. 337 | protected bool canSprint; // Boolean to store if the behaviour allows the player to sprint. 338 | 339 | void Awake() 340 | { 341 | // Set up the references. 342 | behaviourManager = GetComponent (); 343 | speedFloat = Animator.StringToHash("Speed"); 344 | canSprint = true; 345 | 346 | // Set the behaviour code based on the inheriting class. 347 | behaviourCode = this.GetType().GetHashCode(); 348 | } 349 | 350 | // Protected, virtual functions can be overridden by inheriting classes. 351 | // The active behaviour will control the player actions with these functions: 352 | 353 | // The local equivalent for MonoBehaviour's FixedUpdate function. 354 | public virtual void LocalFixedUpdate() { } 355 | // The local equivalent for MonoBehaviour's LateUpdate function. 356 | public virtual void LocalLateUpdate() { } 357 | // This function is called when another behaviour overrides the current one. 358 | public virtual void OnOverride() { } 359 | 360 | // Get the behaviour code. 361 | public int GetBehaviourCode() 362 | { 363 | return behaviourCode; 364 | } 365 | 366 | // Check if the behaviour allows sprinting. 367 | public bool AllowSprint() 368 | { 369 | return canSprint; 370 | } 371 | } 372 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/BasicBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d91044bddee1594cb64cddcbb5e76b9 3 | timeCreated: 1486494352 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/FlyBehaviour.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // FlyBehaviour inherits from GenericBehaviour. This class corresponds to the flying behaviour. 4 | public class FlyBehaviour : GenericBehaviour 5 | { 6 | public string flyButton = "Fly"; // Default fly button. 7 | public float flySpeed = 4.0f; // Default flying speed. 8 | public float sprintFactor = 2.0f; // How much sprinting affects fly speed. 9 | public float flyMaxVerticalAngle = 60f; // Angle to clamp camera vertical movement when flying. 10 | 11 | private int flyBool; // Animator variable related to flying. 12 | private bool fly = false; // Boolean to determine whether or not the player activated fly mode. 13 | private CapsuleCollider col; // Reference to the player capsulle collider. 14 | 15 | // Start is always called after any Awake functions. 16 | void Start() 17 | { 18 | // Set up the references. 19 | flyBool = Animator.StringToHash("Fly"); 20 | col = this.GetComponent(); 21 | // Subscribe this behaviour on the manager. 22 | behaviourManager.SubscribeBehaviour(this); 23 | } 24 | 25 | // Update is used to set features regardless the active behaviour. 26 | void Update() 27 | { 28 | // Toggle fly by input, only if there is no overriding state or temporary transitions. 29 | if (Input.GetButtonDown(flyButton) && !behaviourManager.IsOverriding() 30 | && !behaviourManager.GetTempLockStatus(behaviourManager.GetDefaultBehaviour)) 31 | { 32 | fly = !fly; 33 | 34 | // Force end jump transition. 35 | behaviourManager.UnlockTempBehaviour(behaviourManager.GetDefaultBehaviour); 36 | 37 | // Obey gravity. It's the law! 38 | behaviourManager.GetRigidBody.useGravity = !fly; 39 | 40 | // Player is flying. 41 | if (fly) 42 | { 43 | // Register this behaviour. 44 | behaviourManager.RegisterBehaviour(this.behaviourCode); 45 | } 46 | else 47 | { 48 | // Set collider direction to vertical. 49 | col.direction = 1; 50 | // Set camera default offset. 51 | behaviourManager.GetCamScript.ResetTargetOffsets(); 52 | 53 | // Unregister this behaviour and set current behaviour to the default one. 54 | behaviourManager.UnregisterBehaviour(this.behaviourCode); 55 | } 56 | } 57 | 58 | // Assert this is the active behaviour 59 | fly = fly && behaviourManager.IsCurrentBehaviour(this.behaviourCode); 60 | 61 | // Set fly related variables on the Animator Controller. 62 | behaviourManager.GetAnim.SetBool(flyBool, fly); 63 | } 64 | 65 | // This function is called when another behaviour overrides the current one. 66 | public override void OnOverride() 67 | { 68 | // Ensure the collider will return to vertical position when behaviour is overriden. 69 | col.direction = 1; 70 | } 71 | 72 | // LocalFixedUpdate overrides the virtual function of the base class. 73 | public override void LocalFixedUpdate() 74 | { 75 | // Set camera limit angle related to fly mode. 76 | behaviourManager.GetCamScript.SetMaxVerticalAngle(flyMaxVerticalAngle); 77 | 78 | // Call the fly manager. 79 | FlyManagement(behaviourManager.GetH, behaviourManager.GetV); 80 | } 81 | // Deal with the player movement when flying. 82 | void FlyManagement(float horizontal, float vertical) 83 | { 84 | // Add a force player's rigidbody according to the fly direction. 85 | Vector3 direction = Rotating(horizontal, vertical); 86 | behaviourManager.GetRigidBody.AddForce((direction * flySpeed * 100 * (behaviourManager.IsSprinting() ? sprintFactor : 1)), ForceMode.Acceleration); 87 | } 88 | 89 | // Rotate the player to match correct orientation, according to camera and key pressed. 90 | Vector3 Rotating(float horizontal, float vertical) 91 | { 92 | Vector3 forward = behaviourManager.playerCamera.TransformDirection(Vector3.forward); 93 | // Camera forward Y component is relevant when flying. 94 | forward = forward.normalized; 95 | 96 | Vector3 right = new Vector3(forward.z, 0, -forward.x); 97 | 98 | // Calculate target direction based on camera forward and direction key. 99 | Vector3 targetDirection = forward * vertical + right * horizontal; 100 | 101 | // Rotate the player to the correct fly position. 102 | if ((behaviourManager.IsMoving() && targetDirection != Vector3.zero)) 103 | { 104 | Quaternion targetRotation = Quaternion.LookRotation(targetDirection); 105 | 106 | Quaternion newRotation = Quaternion.Slerp(behaviourManager.GetRigidBody.rotation, targetRotation, behaviourManager.turnSmoothing); 107 | 108 | behaviourManager.GetRigidBody.MoveRotation(newRotation); 109 | behaviourManager.SetLastDirection(targetDirection); 110 | } 111 | 112 | // Player is flying and idle? 113 | if (!(Mathf.Abs(horizontal) > 0.2 || Mathf.Abs(vertical) > 0.2)) 114 | { 115 | // Rotate the player to stand position. 116 | behaviourManager.Repositioning(); 117 | // Set collider direction to vertical. 118 | col.direction = 1; 119 | } 120 | else 121 | { 122 | // Set collider direction to horizontal. 123 | col.direction = 2; 124 | } 125 | 126 | // Return the current fly direction. 127 | return targetDirection; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/FlyBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b86dbbaaa422b64d8a77740b0e66a5a 3 | timeCreated: 1463542274 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/MoveBehaviour.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | // MoveBehaviour inherits from GenericBehaviour. This class corresponds to basic walk and run behaviour, it is the default behaviour. 4 | public class MoveBehaviour : GenericBehaviour 5 | { 6 | public float walkSpeed = 0.15f; // Default walk speed. 7 | public float runSpeed = 1.0f; // Default run speed. 8 | public float sprintSpeed = 2.0f; // Default sprint speed. 9 | public float speedDampTime = 0.1f; // Default damp time to change the animations based on current speed. 10 | public string jumpButton = "Jump"; // Default jump button. 11 | public float jumpHeight = 1.5f; // Default jump height. 12 | public float jumpIntertialForce = 10f; // Default horizontal inertial force when jumping. 13 | 14 | private float speed, speedSeeker; // Moving speed. 15 | private int jumpBool; // Animator variable related to jumping. 16 | private int groundedBool; // Animator variable related to whether or not the player is on ground. 17 | private bool jump; // Boolean to determine whether or not the player started a jump. 18 | private bool isColliding; // Boolean to determine if the player has collided with an obstacle. 19 | 20 | // Start is always called after any Awake functions. 21 | void Start() 22 | { 23 | // Set up the references. 24 | jumpBool = Animator.StringToHash("Jump"); 25 | groundedBool = Animator.StringToHash("Grounded"); 26 | behaviourManager.GetAnim.SetBool(groundedBool, true); 27 | 28 | // Subscribe and register this behaviour as the default behaviour. 29 | behaviourManager.SubscribeBehaviour(this); 30 | behaviourManager.RegisterDefaultBehaviour(this.behaviourCode); 31 | speedSeeker = runSpeed; 32 | } 33 | 34 | // Update is used to set features regardless the active behaviour. 35 | void Update() 36 | { 37 | // Get jump input. 38 | if (!jump && Input.GetButtonDown(jumpButton) && behaviourManager.IsCurrentBehaviour(this.behaviourCode) && !behaviourManager.IsOverriding()) 39 | { 40 | jump = true; 41 | } 42 | } 43 | 44 | // LocalFixedUpdate overrides the virtual function of the base class. 45 | public override void LocalFixedUpdate() 46 | { 47 | // Call the basic movement manager. 48 | MovementManagement(behaviourManager.GetH, behaviourManager.GetV); 49 | 50 | // Call the jump manager. 51 | JumpManagement(); 52 | } 53 | 54 | // Execute the idle and walk/run jump movements. 55 | void JumpManagement() 56 | { 57 | // Start a new jump. 58 | if (jump && !behaviourManager.GetAnim.GetBool(jumpBool) && behaviourManager.IsGrounded()) 59 | { 60 | // Set jump related parameters. 61 | behaviourManager.LockTempBehaviour(this.behaviourCode); 62 | behaviourManager.GetAnim.SetBool(jumpBool, true); 63 | // Is a locomotion jump? 64 | if (behaviourManager.GetAnim.GetFloat(speedFloat) > 0.1) 65 | { 66 | // Temporarily change player friction to pass through obstacles. 67 | GetComponent().material.dynamicFriction = 0f; 68 | GetComponent().material.staticFriction = 0f; 69 | // Remove vertical velocity to avoid "super jumps" on slope ends. 70 | RemoveVerticalVelocity(); 71 | // Set jump vertical impulse velocity. 72 | float velocity = 2f * Mathf.Abs(Physics.gravity.y) * jumpHeight; 73 | velocity = Mathf.Sqrt(velocity); 74 | behaviourManager.GetRigidBody.AddForce(Vector3.up * velocity, ForceMode.VelocityChange); 75 | } 76 | } 77 | // Is already jumping? 78 | else if (behaviourManager.GetAnim.GetBool(jumpBool)) 79 | { 80 | // Keep forward movement while in the air. 81 | if (!behaviourManager.IsGrounded() && !isColliding && behaviourManager.GetTempLockStatus()) 82 | { 83 | behaviourManager.GetRigidBody.AddForce(transform.forward * jumpIntertialForce * Physics.gravity.magnitude * sprintSpeed, ForceMode.Acceleration); 84 | } 85 | // Has landed? 86 | if ((behaviourManager.GetRigidBody.velocity.y < 0) && behaviourManager.IsGrounded()) 87 | { 88 | behaviourManager.GetAnim.SetBool(groundedBool, true); 89 | // Change back player friction to default. 90 | GetComponent().material.dynamicFriction = 0.6f; 91 | GetComponent().material.staticFriction = 0.6f; 92 | // Set jump related parameters. 93 | jump = false; 94 | behaviourManager.GetAnim.SetBool(jumpBool, false); 95 | behaviourManager.UnlockTempBehaviour(this.behaviourCode); 96 | } 97 | } 98 | } 99 | 100 | // Deal with the basic player movement 101 | void MovementManagement(float horizontal, float vertical) 102 | { 103 | // On ground, obey gravity. 104 | if (behaviourManager.IsGrounded()) 105 | behaviourManager.GetRigidBody.useGravity = true; 106 | 107 | // Avoid takeoff when reached a slope end. 108 | else if (!behaviourManager.GetAnim.GetBool(jumpBool) && behaviourManager.GetRigidBody.velocity.y > 0) 109 | { 110 | RemoveVerticalVelocity(); 111 | } 112 | 113 | // Call function that deals with player orientation. 114 | Rotating(horizontal, vertical); 115 | 116 | // Set proper speed. 117 | Vector2 dir = new Vector2(horizontal, vertical); 118 | speed = Vector2.ClampMagnitude(dir, 1f).magnitude; 119 | // This is for PC only, gamepads control speed via analog stick. 120 | speedSeeker += Input.GetAxis("Mouse ScrollWheel"); 121 | speedSeeker = Mathf.Clamp(speedSeeker, walkSpeed, runSpeed); 122 | speed *= speedSeeker; 123 | if (behaviourManager.IsSprinting()) 124 | { 125 | speed = sprintSpeed; 126 | } 127 | 128 | behaviourManager.GetAnim.SetFloat(speedFloat, speed, speedDampTime, Time.deltaTime); 129 | } 130 | 131 | // Remove vertical rigidbody velocity. 132 | private void RemoveVerticalVelocity() 133 | { 134 | Vector3 horizontalVelocity = behaviourManager.GetRigidBody.velocity; 135 | horizontalVelocity.y = 0; 136 | behaviourManager.GetRigidBody.velocity = horizontalVelocity; 137 | } 138 | 139 | // Rotate the player to match correct orientation, according to camera and key pressed. 140 | Vector3 Rotating(float horizontal, float vertical) 141 | { 142 | // Get camera forward direction, without vertical component. 143 | Vector3 forward = behaviourManager.playerCamera.TransformDirection(Vector3.forward); 144 | 145 | // Player is moving on ground, Y component of camera facing is not relevant. 146 | forward.y = 0.0f; 147 | forward = forward.normalized; 148 | 149 | // Calculate target direction based on camera forward and direction key. 150 | Vector3 right = new Vector3(forward.z, 0, -forward.x); 151 | Vector3 targetDirection; 152 | targetDirection = forward * vertical + right * horizontal; 153 | 154 | // Lerp current direction to calculated target direction. 155 | if ((behaviourManager.IsMoving() && targetDirection != Vector3.zero)) 156 | { 157 | Quaternion targetRotation = Quaternion.LookRotation(targetDirection); 158 | 159 | Quaternion newRotation = Quaternion.Slerp(behaviourManager.GetRigidBody.rotation, targetRotation, behaviourManager.turnSmoothing); 160 | behaviourManager.GetRigidBody.MoveRotation(newRotation); 161 | behaviourManager.SetLastDirection(targetDirection); 162 | } 163 | // If idle, Ignore current camera facing and consider last moving direction. 164 | if (!(Mathf.Abs(horizontal) > 0.9 || Mathf.Abs(vertical) > 0.9)) 165 | { 166 | behaviourManager.Repositioning(); 167 | } 168 | 169 | return targetDirection; 170 | } 171 | 172 | // Collision detection. 173 | private void OnCollisionStay(Collision collision) 174 | { 175 | isColliding = true; 176 | // Slide on vertical obstacles 177 | if (behaviourManager.IsCurrentBehaviour(this.GetBehaviourCode()) && collision.GetContact(0).normal.y <= 0.1f) 178 | { 179 | float vel = behaviourManager.GetAnim.velocity.magnitude; 180 | Vector3 tangentMove = Vector3.ProjectOnPlane(transform.forward, collision.GetContact(0).normal).normalized * vel; 181 | behaviourManager.GetRigidBody.AddForce(tangentMove, ForceMode.VelocityChange); 182 | } 183 | 184 | } 185 | private void OnCollisionExit(Collision collision) 186 | { 187 | isColliding = false; 188 | } 189 | } 190 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Scripts/PlayerScripts/MoveBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b04cfe015b44cfc4fb97244a8ce150c0 3 | timeCreated: 1464039802 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c4cff5163a42c4f44829f08b81e10bc3 3 | folderAsset: yes 4 | timeCreated: 1431130079 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/char_shadow_darker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/char_shadow_darker.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/char_shadow_darker.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d585d2695f979e542b4bd075efd2bcc4 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -1 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 0 46 | textureType: -1 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/char_shadow_ligther.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/char_shadow_ligther.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/char_shadow_ligther.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5fa5f49fd43855249b3637ed79c7706a 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -1 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 0 46 | textureType: -1 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/decal_crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/decal_crosshair.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/decal_crosshair.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 145fa8a1dfcf6c3459f8df4ac782dba2 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: 0.25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -1 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | allowsAlphaSplitting: 0 39 | spriteMode: 0 40 | spriteExtrude: 1 41 | spriteMeshType: 1 42 | alignment: 0 43 | spritePivot: {x: 0.5, y: 0.5} 44 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 45 | spritePixelsToUnits: 100 46 | alphaIsTransparency: 1 47 | spriteTessellationDetail: -1 48 | textureType: -1 49 | buildTargetSettings: [] 50 | spriteSheet: 51 | serializedVersion: 2 52 | sprites: [] 53 | outline: [] 54 | spritePackingTag: 55 | userData: 56 | assetBundleName: 57 | assetBundleVariant: 58 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/env_DarkTile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/env_DarkTile.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/env_DarkTile.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 121916f4a6aaeb449ab44e28dc1d9ab3 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -1 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 0 46 | textureType: -1 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/env_LightTile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/env_LightTile.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/env_LightTile.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb58717e3152d994b844301b27a4bae1 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: .25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 8 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -1 28 | maxTextureSize: 1024 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | spriteMode: 0 39 | spriteExtrude: 1 40 | spriteMeshType: 1 41 | alignment: 0 42 | spritePivot: {x: .5, y: .5} 43 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 44 | spritePixelsToUnits: 100 45 | alphaIsTransparency: 0 46 | textureType: -1 47 | buildTargetSettings: [] 48 | spriteSheet: 49 | sprites: [] 50 | spritePackingTag: 51 | userData: 52 | assetBundleName: 53 | assetBundleVariant: 54 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/gamepad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/gamepad.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/gamepad.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29cf0593d32107a4194c6eda267fbb08 3 | timeCreated: 1507675107 4 | licenseType: Store 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 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: -1 35 | mipBias: -1 36 | wrapU: 1 37 | wrapV: -1 38 | wrapW: -1 39 | nPOTScale: 0 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 1 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 8 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 1 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/3rdPerson+Fly/Textures/keys.png -------------------------------------------------------------------------------- /Assets/3rdPerson+Fly/Textures/keys.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a13c0ef82261a884d95d2f33f5d5c662 3 | timeCreated: 1507675107 4 | licenseType: Store 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 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: -1 35 | mipBias: -1 36 | wrapU: 1 37 | wrapV: -1 38 | wrapW: -1 39 | nPOTScale: 0 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 1 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 8 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 1 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4638dd2bf59436549807e8fa3609f36f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Generic 1.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Generic 1 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.5377358, g: 0, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Generic 1.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80637fbef8c2dcd409d6563897cc5ebe 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Generic.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Generic 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9433962, g: 0.6232816, b: 0.30704877, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Generic.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 635ac3aa177bcef4d84b3211b2532878 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Lines.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/Materials/Lines.mat -------------------------------------------------------------------------------- /Assets/Materials/Lines.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5bc1d6562b69494eba04b6e326885c5 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Point.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/Materials/Point.mat -------------------------------------------------------------------------------- /Assets/Materials/Point.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fbb4b409aae90dc43b601d53a081137c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Scanner.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/Materials/Scanner.mat -------------------------------------------------------------------------------- /Assets/Materials/Scanner.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64d09604cd9e6bb499eb3d784b34bb4c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d0c857f2296a9a45a8630979822f57a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/Point.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/Prefabs/Point.prefab -------------------------------------------------------------------------------- /Assets/Prefabs/Point.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1594f0e17e6f616448ca06bb0a1d5771 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4bcebd09e16291b4fb14e07f32300e83 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/Scenes/SampleScene.unity -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene_Profiles.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ad7fd6abce1279345b23cd3fd18dc8b0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene_Profiles/Main Camera Profile.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/Assets/Scenes/SampleScene_Profiles/Main Camera Profile.asset -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene_Profiles/Main Camera Profile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2375844938915f640809932a2353f8a5 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86df2b570ba774f4f8b2b60eeac2328a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/GridGenerator.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | public class GridGenerator : MonoBehaviour{ 5 | public Material linesMaterial; 6 | public Material pointsMaterial; 7 | public Transform target; 8 | public int dimension; 9 | public GameObject pointPrefab; 10 | 11 | Vector3 center; 12 | GameObject points; 13 | 14 | const string ALPHA = "_Alpha"; 15 | const float MAXTRANSPARENCY = 0.5f; 16 | 17 | void Start(){ 18 | spawnPoints(); 19 | resetMaterials(); 20 | center = transform.position; 21 | center = Vector3.zero; 22 | } 23 | 24 | void Update(){ 25 | if(Input.GetKeyUp(KeyCode.R)){ 26 | show(); 27 | } 28 | } 29 | 30 | void OnPostRender(){ 31 | draw3DMatrix(); 32 | } 33 | 34 | void draw3DMatrix(){ 35 | 36 | Vector3 offset = center + new Vector3(dimension/2, dimension/2, dimension/2); 37 | 38 | for(int i=0; i<=dimension; i++){ 39 | for(int j=0; j<=dimension; j++){ 40 | Vector3 A1 = new Vector3(0, i, j) - offset; 41 | Vector3 B1 = new Vector3(center.x + dimension, i, j) - offset; 42 | drawLine(A1, B1); 43 | 44 | Vector3 A2 = new Vector3(i, j, 0) - offset; 45 | Vector3 B2 = new Vector3(i, j, center.z + dimension) - offset; 46 | drawLine(A2, B2); 47 | } 48 | } 49 | 50 | for(int i=0; i<=dimension; i++){ 51 | for(int j=0; j<=dimension; j++){ 52 | Vector3 A1 = new Vector3(i, j, 0) - offset; 53 | Vector3 B1 = new Vector3(i, j, center.z + dimension) - offset; 54 | drawLine(A1, B1); 55 | 56 | Vector3 A2 = new Vector3(i, 0, j) - offset; 57 | Vector3 B2 = new Vector3(i, center.y + dimension, j) - offset; 58 | drawLine(A2, B2); 59 | } 60 | } 61 | 62 | } 63 | 64 | void drawLine(Vector3 from, Vector3 to){ 65 | linesMaterial.SetPass(0); 66 | GL.Begin(GL.LINES); 67 | GL.Vertex(from); 68 | GL.Vertex(to); 69 | GL.End(); 70 | } 71 | 72 | void spawnPoints(){ 73 | points = new GameObject(); 74 | Vector3 offset = center + new Vector3(dimension/2, dimension/2, dimension/2); 75 | 76 | for(int i=0; i<=dimension; i++){ 77 | for(int j=0; j<=dimension; j++){ 78 | for(int k=0; k<=dimension; k++){ 79 | Vector3 pos = new Vector3(i, j, k) - offset; 80 | GameObject p = Instantiate(pointPrefab, pos, Quaternion.identity); 81 | p.transform.SetParent(points.transform); 82 | } 83 | } 84 | } 85 | } 86 | 87 | void resetMaterials(){ 88 | linesMaterial.SetFloat(ALPHA, 0); 89 | pointsMaterial.SetFloat(ALPHA, 0); 90 | } 91 | 92 | public void show(){ 93 | StartCoroutine(showCoroutine()); 94 | } 95 | 96 | public void hide(){ 97 | StartCoroutine(hideCoroutine()); 98 | } 99 | 100 | IEnumerator showCoroutine(){ 101 | float alpha = 0; 102 | linesMaterial.SetFloat(ALPHA, alpha); 103 | pointsMaterial.SetFloat(ALPHA, alpha); 104 | while (alpha < MAXTRANSPARENCY){ 105 | alpha += 0.01f; 106 | linesMaterial.SetFloat(ALPHA, alpha); 107 | pointsMaterial.SetFloat(ALPHA, alpha); 108 | yield return null; 109 | } 110 | } 111 | 112 | IEnumerator hideCoroutine(){ 113 | float alpha = MAXTRANSPARENCY; 114 | linesMaterial.SetFloat(ALPHA, alpha); 115 | pointsMaterial.SetFloat(ALPHA, alpha); 116 | while (alpha > 0f){ 117 | alpha -= 0.01f; 118 | linesMaterial.SetFloat(ALPHA, alpha); 119 | pointsMaterial.SetFloat(ALPHA, alpha); 120 | yield return null; 121 | } 122 | } 123 | 124 | } 125 | -------------------------------------------------------------------------------- /Assets/Scripts/GridGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ff89484dc34acd4c8ae06926f202dea 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/ScannerController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.Rendering.PostProcessing; 5 | 6 | public class ScannerController : MonoBehaviour{ 7 | 8 | const int MAXDISTORSION = 76; 9 | const int MINDISTORSION = 1; 10 | const float MAXDISTANCE = 15; 11 | const float MINDISTANCE = 0.1f; 12 | 13 | public Transform origin; 14 | public Material scannerMat; 15 | public float initialScanDistance = 0; 16 | public float maxScanDistance = 20; 17 | public float scanThickness; 18 | public GridGenerator gridGenerator; 19 | 20 | [ColorUsage(true, true)] 21 | public List colors; 22 | 23 | Camera cam; 24 | float scanDistance; 25 | float scanDistance1; 26 | float scanDistance2; 27 | 28 | IEnumerator scanHandler = null; 29 | 30 | LensDistortion lensDistortion = null; 31 | DepthOfField dof = null; 32 | 33 | void Start(){ 34 | PostProcessVolume ppv = gameObject.GetComponent(); 35 | ppv.profile.TryGetSettings(out lensDistortion); 36 | ppv.profile.TryGetSettings(out dof); 37 | } 38 | 39 | void OnEnable(){ 40 | cam = GetComponent(); 41 | cam.depthTextureMode = DepthTextureMode.Depth; 42 | } 43 | 44 | void OnRenderImage(RenderTexture src, RenderTexture dst){ 45 | scannerMat.SetVector("_WorldSpaceScannerPos", origin.position); 46 | scannerMat.SetFloat("_ScanDistance1", scanDistance1); 47 | scannerMat.SetFloat("_ScanDistance2", scanDistance2); 48 | scannerMat.SetFloat("_ScanWidth", scanThickness); 49 | 50 | if(colors.Count >= 3){ 51 | scannerMat.SetColor("_FirstColor", colors[0]); 52 | scannerMat.SetColor("_SecondColor", colors[1]); 53 | scannerMat.SetColor("_FillColor", colors[2]); 54 | } 55 | 56 | raycastCornerBlit(src, dst, scannerMat); 57 | } 58 | 59 | void raycastCornerBlit(RenderTexture source, RenderTexture dest, Material mat){ 60 | float camFar = cam.farClipPlane; 61 | float camFov = cam.fieldOfView; 62 | float camAspect = cam.aspect; 63 | 64 | float fovWHalf = camFov * 0.5f; 65 | 66 | Vector3 toRight = cam.transform.right * Mathf.Tan(fovWHalf * Mathf.Deg2Rad) * camAspect; 67 | Vector3 toTop = cam.transform.up * Mathf.Tan(fovWHalf * Mathf.Deg2Rad); 68 | 69 | Vector3 topLeft = (cam.transform.forward - toRight + toTop); 70 | float camScale = topLeft.magnitude * camFar; 71 | 72 | topLeft.Normalize(); 73 | topLeft *= camScale; 74 | 75 | Vector3 topRight = (cam.transform.forward + toRight + toTop); 76 | topRight.Normalize(); 77 | topRight *= camScale; 78 | 79 | Vector3 bottomRight = (cam.transform.forward + toRight - toTop); 80 | bottomRight.Normalize(); 81 | bottomRight *= camScale; 82 | 83 | Vector3 bottomLeft = (cam.transform.forward - toRight - toTop); 84 | bottomLeft.Normalize(); 85 | bottomLeft *= camScale; 86 | 87 | RenderTexture.active = dest; 88 | 89 | mat.SetTexture("_MainTex", source); 90 | 91 | GL.PushMatrix(); 92 | GL.LoadOrtho(); 93 | 94 | mat.SetPass(0); 95 | 96 | GL.Begin(GL.QUADS); 97 | 98 | GL.MultiTexCoord2(0, 0.0f, 0.0f); 99 | GL.MultiTexCoord(1, bottomLeft); 100 | GL.Vertex3(0.0f, 0.0f, 0.0f); 101 | 102 | GL.MultiTexCoord2(0, 1.0f, 0.0f); 103 | GL.MultiTexCoord(1, bottomRight); 104 | GL.Vertex3(1.0f, 0.0f, 0.0f); 105 | 106 | GL.MultiTexCoord2(0, 1.0f, 1.0f); 107 | GL.MultiTexCoord(1, topRight); 108 | GL.Vertex3(1.0f, 1.0f, 0.0f); 109 | 110 | GL.MultiTexCoord2(0, 0.0f, 1.0f); 111 | GL.MultiTexCoord(1, topLeft); 112 | GL.Vertex3(0.0f, 1.0f, 0.0f); 113 | 114 | GL.End(); 115 | GL.PopMatrix(); 116 | } 117 | 118 | void Update(){ 119 | if(Input.GetKeyUp(KeyCode.Space)){ 120 | if(scanDistance <= 0){ 121 | scan(); 122 | }else{ 123 | scanBack(); 124 | } 125 | } 126 | } 127 | 128 | void checkAndBlock(){ 129 | if(scanHandler != null){ 130 | StopCoroutine(scanHandler); 131 | } 132 | } 133 | 134 | void scan(){ 135 | checkAndBlock(); 136 | scanHandler = scanCoroutine(); 137 | StartCoroutine(scanHandler); 138 | } 139 | 140 | void scanBack(){ 141 | checkAndBlock(); 142 | scanHandler = scanBackCoroutine(); 143 | StartCoroutine(scanHandler); 144 | } 145 | 146 | IEnumerator scanCoroutine(){ 147 | distorsion(); 148 | scanDistance = initialScanDistance; 149 | bool startShow = false; 150 | while(scanDistance <= maxScanDistance ){ 151 | if(scanDistance > maxScanDistance/2 && !startShow){ 152 | gridGenerator.show(); 153 | startShow = true; 154 | } 155 | scanDistance1 = scanDistance+1; 156 | yield return new WaitForSecondsRealtime(.01f); 157 | scanDistance2 = scanDistance1; 158 | yield return new WaitForSecondsRealtime(.01f); 159 | scanDistance2 = scanDistance1+1; 160 | yield return new WaitForSecondsRealtime(.01f); 161 | scanDistance ++; 162 | 163 | } 164 | scanDistance = maxScanDistance; 165 | scanHandler = null; 166 | } 167 | 168 | IEnumerator scanBackCoroutine(){ 169 | bool startHide = false; 170 | while(scanDistance > 0 ){ 171 | if(scanDistance < maxScanDistance/2 && !startHide){ 172 | gridGenerator.hide(); 173 | startHide = true; 174 | distorsion(); 175 | } 176 | scanDistance1 = scanDistance-1; 177 | yield return new WaitForSecondsRealtime(.01f); 178 | scanDistance2 = scanDistance1; 179 | yield return new WaitForSecondsRealtime(.01f); 180 | scanDistance2 = scanDistance1-1; 181 | yield return new WaitForSecondsRealtime(.01f); 182 | scanDistance --; 183 | 184 | } 185 | scanDistance = initialScanDistance; 186 | scanHandler = null; 187 | } 188 | 189 | void distorsion(){ 190 | StartCoroutine(distorsionCoroutine()); 191 | } 192 | 193 | IEnumerator distorsionCoroutine(){ 194 | if(dof != null && lensDistortion != null){ 195 | int distAmount = MAXDISTORSION; 196 | float distance = MINDISTANCE; 197 | 198 | while(distAmount >= MINDISTORSION ){ 199 | lensDistortion.intensity.value = distAmount; 200 | dof.focusDistance.value = distance; 201 | distAmount -=5 ; 202 | distance += 0.1f; 203 | yield return new WaitForSecondsRealtime(.01f); 204 | } 205 | 206 | lensDistortion.intensity.value = MINDISTORSION; 207 | dof.focusDistance.value = MAXDISTANCE; 208 | } 209 | } 210 | } 211 | -------------------------------------------------------------------------------- /Assets/Scripts/ScannerController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc77305aae742084f8e25b167e24488f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4c73685a7d0aa0848afe504c01eef331 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Shaders/Fade.shader: -------------------------------------------------------------------------------- 1 | Shader "TNTC/Fade"{ 2 | Properties{ 3 | _MainColor ("Color", Color) = (1,1,1,1) 4 | _Alpha("Alpha", Range (0, 1)) = 1 5 | 6 | } 7 | SubShader{ 8 | Tags {"Queue"="Transparent" "RenderType"="Transparent" } 9 | LOD 100 10 | 11 | Blend SrcAlpha OneMinusSrcAlpha 12 | 13 | Pass{ 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | 18 | #include "UnityCG.cginc" 19 | 20 | struct appdata{ 21 | float4 vertex : POSITION; 22 | }; 23 | 24 | struct v2f{ 25 | float4 vertex : SV_POSITION; 26 | }; 27 | 28 | float4 _MainColor; 29 | float _Alpha; 30 | 31 | v2f vert (appdata v){ 32 | v2f o; 33 | o.vertex = UnityObjectToClipPos(v.vertex); 34 | return o; 35 | } 36 | 37 | fixed4 frag (v2f i) : SV_Target{ 38 | 39 | fixed4 col = _MainColor; 40 | col.a = _Alpha; 41 | 42 | return col; 43 | } 44 | 45 | ENDCG 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Assets/Shaders/Fade.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4a98f97629f75b42aa206196ad93c2c 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Shaders/Scanner.shader: -------------------------------------------------------------------------------- 1 | Shader "TNTC/ScannerEffect"{ 2 | Properties{ 3 | _MainTex("Texture", 2D) = "white" {} 4 | _ScanDistance1("Scan Distance First", float) = 0 5 | _ScanDistance2("Scan Distance Second", float) = 0 6 | _ScanWidth("Scan Width", float) = 10 7 | [HDR]_FirstColor("First Color", Color) = (1, 1, 1, 1) 8 | [HDR]_SecondColor("Second Color", Color) = (0, 0, 0, 1) 9 | [HDR]_FillColor("Fill Color", Color) = (0, 0, 0, 1) 10 | } 11 | 12 | SubShader{ 13 | // No culling or depth 14 | Cull Off ZWrite Off ZTest Always 15 | 16 | Pass{ 17 | CGPROGRAM 18 | #pragma vertex vert 19 | #pragma fragment frag 20 | 21 | #include "UnityCG.cginc" 22 | 23 | struct VertIn{ 24 | float4 vertex : POSITION; 25 | float2 uv : TEXCOORD0; 26 | float4 ray : TEXCOORD1; 27 | }; 28 | 29 | struct VertOut{ 30 | float4 vertex : SV_POSITION; 31 | float2 uv : TEXCOORD0; 32 | float2 depth : TEXCOORD1; 33 | float4 ray : TEXCOORD2; 34 | }; 35 | 36 | float4 _MainTex_TexelSize; 37 | float4 _CameraWS; 38 | 39 | VertOut vert(VertIn v){ 40 | VertOut o; 41 | o.vertex = UnityObjectToClipPos(v.vertex); 42 | o.uv = v.uv.xy; 43 | o.depth = v.uv.xy; 44 | 45 | #if UNITY_UV_STARTS_AT_TOP 46 | if (_MainTex_TexelSize.y < 0) 47 | o.uv.y = 1 - o.uv.y; 48 | #endif 49 | 50 | o.ray = v.ray; 51 | 52 | return o; 53 | } 54 | 55 | sampler2D _MainTex; 56 | sampler2D_float _CameraDepthTexture; 57 | float4 _WorldSpaceScannerPos; 58 | float _ScanDistance1; 59 | float _ScanDistance2; 60 | float _ScanWidth; 61 | 62 | float4 _FirstColor; 63 | float4 _SecondColor; 64 | float4 _FillColor; 65 | 66 | float4 rectangle(float3 pos, float distanceX, float distanceZ, float width, float4 col){ 67 | if (pos.x > - distanceX && pos.x < distanceX 68 | && 69 | pos.z > - distanceZ && pos.z < distanceZ 70 | ){ 71 | if(((pos.x > - distanceX && pos.x < - distanceX + width) 72 | || 73 | (pos.x < distanceX && pos.x > distanceX - width)) 74 | || 75 | ((pos.z > - distanceZ && pos.z < - distanceZ + width) 76 | || 77 | (pos.z < distanceZ && pos.z > distanceZ - width)) 78 | ){ 79 | return col; 80 | } 81 | } 82 | return 0; 83 | } 84 | 85 | float4 fillArea(float3 pos, float distanceX, float distanceZ, float4 col){ 86 | if (distanceX > 0 && distanceZ > 0 && pos.x > - distanceX && pos.x < distanceX && pos.z > - distanceZ && pos.z < distanceZ){ 87 | return col; 88 | } 89 | return 0; 90 | } 91 | 92 | half4 frag (VertOut i) : SV_Target{ 93 | half4 col = tex2D(_MainTex, i.uv); 94 | 95 | float rawDepth = DecodeFloatRG(tex2D(_CameraDepthTexture, i.depth)); 96 | float linearDepth = Linear01Depth(rawDepth); 97 | float4 dir = linearDepth * i.ray; 98 | float3 pos = _WorldSpaceCameraPos + dir; 99 | 100 | half4 scannerCol = half4(0, 0, 0, 0); 101 | 102 | float3 diff = pos - _WorldSpaceScannerPos; 103 | 104 | float4 r1 = rectangle (diff, _ScanDistance1, _ScanDistance2, _ScanWidth, _FirstColor); 105 | float4 r2 = rectangle (diff, _ScanDistance2, _ScanDistance1, _ScanWidth, _SecondColor); 106 | float4 fill = fillArea (diff, _ScanDistance2-1, _ScanDistance1-1, _FillColor); 107 | 108 | scannerCol = col; 109 | scannerCol *= lerp(1, r1, r1.w); 110 | scannerCol *= lerp(1, r2, r2.w); 111 | scannerCol *= lerp(1, fill, fill.w); 112 | 113 | return scannerCol; 114 | 115 | } 116 | ENDCG 117 | } 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /Assets/Shaders/Scanner.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc7940c670e87a041971550c9faf52e1 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "1.2.16", 4 | "com.unity.ext.nunit": "1.0.0", 5 | "com.unity.ide.rider": "1.1.0", 6 | "com.unity.ide.vscode": "1.1.0", 7 | "com.unity.package-manager-ui": "2.2.0", 8 | "com.unity.postprocessing": "2.1.7", 9 | "com.unity.test-framework": "1.0.13", 10 | "com.unity.textmeshpro": "2.0.1", 11 | "com.unity.timeline": "1.1.0", 12 | "com.unity.ugui": "1.0.0", 13 | "com.unity.modules.ai": "1.0.0", 14 | "com.unity.modules.androidjni": "1.0.0", 15 | "com.unity.modules.animation": "1.0.0", 16 | "com.unity.modules.assetbundle": "1.0.0", 17 | "com.unity.modules.audio": "1.0.0", 18 | "com.unity.modules.cloth": "1.0.0", 19 | "com.unity.modules.director": "1.0.0", 20 | "com.unity.modules.imageconversion": "1.0.0", 21 | "com.unity.modules.imgui": "1.0.0", 22 | "com.unity.modules.jsonserialize": "1.0.0", 23 | "com.unity.modules.particlesystem": "1.0.0", 24 | "com.unity.modules.physics": "1.0.0", 25 | "com.unity.modules.physics2d": "1.0.0", 26 | "com.unity.modules.screencapture": "1.0.0", 27 | "com.unity.modules.terrain": "1.0.0", 28 | "com.unity.modules.terrainphysics": "1.0.0", 29 | "com.unity.modules.tilemap": "1.0.0", 30 | "com.unity.modules.ui": "1.0.0", 31 | "com.unity.modules.uielements": "1.0.0", 32 | "com.unity.modules.umbra": "1.0.0", 33 | "com.unity.modules.unityanalytics": "1.0.0", 34 | "com.unity.modules.unitywebrequest": "1.0.0", 35 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 36 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 37 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 38 | "com.unity.modules.unitywebrequestwww": "1.0.0", 39 | "com.unity.modules.vehicles": "1.0.0", 40 | "com.unity.modules.video": "1.0.0", 41 | "com.unity.modules.vr": "1.0.0", 42 | "com.unity.modules.wind": "1.0.0", 43 | "com.unity.modules.xr": "1.0.0" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/ClusterInputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/NavMeshAreas.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/PresetManager.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.2.3f1 2 | m_EditorVersionWithRevision: 2019.2.3f1 (8e55c27a4621) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/UnityConnectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToughNutToCrack/DetroitScanEffect/c9397dfc51e1ced74601a2c14baa52589ff82d5a/ProjectSettings/VFXManager.asset -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

tntc

2 | 3 |

Detroit Become Human Scan Effect in Unity

4 | 5 |

6 | Youtube Channel 7 | Discord 8 | Website 9 | Twitter Follow 10 |

11 | 12 | 13 | [![Youtube Video](.github/thumbnail.png)](https://youtu.be/b0Mk9lHz6co) 14 | 15 |

Check the full video on YouTube

--------------------------------------------------------------------------------