From 5cdd4e376f7b2fbca1a05035a94eafaf69771b4a Mon Sep 17 00:00:00 2001 From: Cat Flynn Date: Thu, 15 Apr 2021 19:32:09 +0100 Subject: [PATCH] improve camera controls --- game/Assets/Prefabs/Cameras.prefab | 22 +- game/Assets/Prefabs/Player.prefab | 2 +- game/Assets/Prefabs/PlayerObjects.prefab | 6 +- game/Assets/Scenes/Main.unity | 204 ++++++++++++++++++ .../Scripts/Camera/TargetRecentering.cs | 31 +++ .../Scripts/Camera/TargetRecentering.cs.meta | 11 + 6 files changed, 267 insertions(+), 9 deletions(-) create mode 100644 game/Assets/Scripts/Camera/TargetRecentering.cs create mode 100644 game/Assets/Scripts/Camera/TargetRecentering.cs.meta diff --git a/game/Assets/Prefabs/Cameras.prefab b/game/Assets/Prefabs/Cameras.prefab index cb2a81d..3f470a4 100644 --- a/game/Assets/Prefabs/Cameras.prefab +++ b/game/Assets/Prefabs/Cameras.prefab @@ -610,6 +610,7 @@ GameObject: - component: {fileID: 5661344207789115423} - component: {fileID: 7951179702612018041} - component: {fileID: 4646968772435671935} + - component: {fileID: 6450882301115788249} m_Layer: 0 m_Name: CM_ThirdPerson m_TagString: Untagged @@ -718,7 +719,7 @@ MonoBehaviour: m_RecenterToTargetHeading: m_enabled: 0 m_WaitTime: 1 - m_RecenteringTime: 2 + m_RecenteringTime: 1.1 m_LegacyHeadingDefinition: -1 m_LegacyVelocityFilterStrength: -1 m_BindingMode: 4 @@ -727,9 +728,9 @@ MonoBehaviour: - m_Height: 2 m_Radius: 2 - m_Height: 1 - m_Radius: 1.5 + m_Radius: 2 - m_Height: 0 - m_Radius: 1.5 + m_Radius: 2 m_LegacyHeadingBias: 3.4028235e+38 m_Rigs: - {fileID: 5661344207439169722} @@ -836,6 +837,21 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 +--- !u!114 &6450882301115788249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5661344207789115490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c825c87a182e76448880f374c3ef9b73, type: 3} + m_Name: + m_EditorClassIdentifier: + _axisDifference: 0.3 + _inputMagnitude: 0.1 + _moveInput: {fileID: -470994912084233759, guid: d4d9eb5db7beac84ca3cb36cfc09cd0a, type: 3} --- !u!1 &5661344207849762654 GameObject: m_ObjectHideFlags: 0 diff --git a/game/Assets/Prefabs/Player.prefab b/game/Assets/Prefabs/Player.prefab index e4e5b75..66418be 100644 --- a/game/Assets/Prefabs/Player.prefab +++ b/game/Assets/Prefabs/Player.prefab @@ -607,7 +607,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1703779518772407877} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.036, y: 1.403, z: -0.093} + m_LocalPosition: {x: 0, y: 1.403, z: 0} m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} m_Children: [] m_Father: {fileID: 13726837642651460} diff --git a/game/Assets/Prefabs/PlayerObjects.prefab b/game/Assets/Prefabs/PlayerObjects.prefab index ca8ffc6..3c11b14 100644 --- a/game/Assets/Prefabs/PlayerObjects.prefab +++ b/game/Assets/Prefabs/PlayerObjects.prefab @@ -206,15 +206,11 @@ PrefabInstance: - target: {fileID: 5661344207789115489, guid: dfbecbd9a563dba43be2d6139d9b3f90, type: 3} propertyPath: m_Follow value: - objectReference: {fileID: 4676633831945762709} + objectReference: {fileID: 3150647428828152554} - target: {fileID: 5661344207789115489, guid: dfbecbd9a563dba43be2d6139d9b3f90, type: 3} propertyPath: m_LookAt value: objectReference: {fileID: 3150647428828152554} - - target: {fileID: 5661344207789115489, guid: dfbecbd9a563dba43be2d6139d9b3f90, type: 3} - propertyPath: m_XAxis.Value - value: -89.63728 - objectReference: {fileID: 0} - target: {fileID: 5661344207849762652, guid: dfbecbd9a563dba43be2d6139d9b3f90, type: 3} propertyPath: m_LocalPosition.x value: 0 diff --git a/game/Assets/Scenes/Main.unity b/game/Assets/Scenes/Main.unity index a174e48..c070f79 100644 --- a/game/Assets/Scenes/Main.unity +++ b/game/Assets/Scenes/Main.unity @@ -2314,6 +2314,62 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.w + value: 0.56752455 + objectReference: {fileID: 0} + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.x + value: 0.06285194 + objectReference: {fileID: 0} + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7702346 + objectReference: {fileID: 0} + - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.z + value: -0.28408483 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.y + value: 0.25224686 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.z + value: -2.720001 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.w + value: 0.9724168 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.x + value: 0.2295565 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.y + value: 0.040237267 + objectReference: {fileID: 0} + - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.z + value: -0.009498731 + objectReference: {fileID: 0} - target: {fileID: 4676633831414007564, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_Name value: PlayerObjects @@ -2362,6 +2418,154 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4676633832548214813, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_BindingMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4676633832548214813, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_XAxis.Value + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832548214813, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_Definition + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4676633832548214813, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_VelocityFilterStrength + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4676633832617577688, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_BiasY + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832617577688, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_SoftZoneHeight + value: 0.55 + objectReference: {fileID: 0} + - target: {fileID: 4676633832617577689, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_BindingMode + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 4676633832617577689, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_XAxis.Value + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832617577689, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_Definition + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4676633832617577689, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_VelocityFilterStrength + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.w + value: 0.56752455 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.x + value: 0.06285194 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7702346 + objectReference: {fileID: 0} + - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.z + value: -0.28408483 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914730, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_YAxis.m_SpeedMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914730, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_YAxis.m_InvertInput + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914730, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_VelocityFilterStrength + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914731, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914731, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.y + value: 0.25224686 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914731, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.z + value: -2.720001 + objectReference: {fileID: 0} + - target: {fileID: 4676633832858914773, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.w + value: 0.5333047 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.x + value: 0.059062183 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7917243 + objectReference: {fileID: 0} + - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_LocalRotation.z + value: -0.29201087 + objectReference: {fileID: 0} + - target: {fileID: 4676633833077728949, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_SoftZoneHeight + value: 0.48 + objectReference: {fileID: 0} + - target: {fileID: 4676633833077728950, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_BindingMode + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 4676633833077728950, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_XAxis.Value + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4676633833077728950, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_FollowOffset.z + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 4676633833077728950, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_Definition + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4676633833077728950, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} + propertyPath: m_Heading.m_VelocityFilterStrength + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} --- !u!4 &783507384 stripped diff --git a/game/Assets/Scripts/Camera/TargetRecentering.cs b/game/Assets/Scripts/Camera/TargetRecentering.cs new file mode 100644 index 0000000..eb26bfd --- /dev/null +++ b/game/Assets/Scripts/Camera/TargetRecentering.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Cinemachine; +using UnityEngine; +using UnityEngine.InputSystem; + +[RequireComponent(typeof(CinemachineFreeLook))] +public class TargetRecentering : MonoBehaviour +{ + [SerializeField] [Range(0, 1)] private float _inputMagnitude = 0.1f; + + [SerializeField] private InputActionReference _moveInput; + + private CinemachineFreeLook _freeLook; + + private void Start() + { + _freeLook = GetComponent(); + } + + private void Update() + { + // if there is any horizontal movement input... + var input = _moveInput.action.ReadValue(); + var result = Mathf.Abs(input.x) > Mathf.Abs(input.y) && input.magnitude > _inputMagnitude; + + // ...enable target recentering in order to turn the camera with the player + _freeLook.m_RecenterToTargetHeading.m_enabled = result; + } +} diff --git a/game/Assets/Scripts/Camera/TargetRecentering.cs.meta b/game/Assets/Scripts/Camera/TargetRecentering.cs.meta new file mode 100644 index 0000000..1c9ba50 --- /dev/null +++ b/game/Assets/Scripts/Camera/TargetRecentering.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c825c87a182e76448880f374c3ef9b73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: