From 175345523527fca2e2878ccea1e1be391c778986 Mon Sep 17 00:00:00 2001 From: Carson Katri Date: Sat, 12 Jun 2021 14:20:38 -0400 Subject: Add movement to limbs --- Assets/Prefabs/Player.prefab | 10 ++++++ Assets/Scenes/Main.unity | 4 +++ Assets/Scripts/Controllers/Ball.cs | 2 +- Assets/Scripts/Controllers/GameController.cs | 2 +- .../Scripts/Controllers/Player/PlayerController.cs | 41 ++++++++++++++++++++-- Assets/Scripts/Controllers/Player/PlayerSegment.cs | 2 ++ 6 files changed, 57 insertions(+), 4 deletions(-) diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 2b02858..521b4bf 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -1123,9 +1123,13 @@ MonoBehaviour: left: keyCode: 276 icon: {fileID: 5020703169596630212} + leg: {fileID: 414971659141114100} + arm: {fileID: 8549221634172624537} right: keyCode: 275 icon: {fileID: 476429766403681147} + leg: {fileID: 5886521033835613979} + arm: {fileID: 8845918641001187994} forceOrigin: {x: 0, y: 0.5, z: 0} height: 0 --- !u!50 &6095859832867562452 @@ -1411,9 +1415,13 @@ MonoBehaviour: left: keyCode: 97 icon: {fileID: 5321565721314628342} + leg: {fileID: 2835159121523199489} + arm: {fileID: 6791963013674012835} right: keyCode: 100 icon: {fileID: 7797841368364398355} + leg: {fileID: 3531439111263992317} + arm: {fileID: 61032117990659215} forceOrigin: {x: 0, y: -0.5, z: 0} height: 0 --- !u!50 &6095859833589646292 @@ -1518,6 +1526,8 @@ MonoBehaviour: controls: grab: 119 shoot: 273 + maxLegAngle: 30 + legSpeed: 10 --- !u!1 &6791963013674012835 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index e44b331..d003365 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -425,6 +425,10 @@ PrefabInstance: propertyPath: game value: objectReference: {fileID: 1174357920} + - target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3} + propertyPath: legSpeed + value: 5 + objectReference: {fileID: 0} - target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3} propertyPath: sensitivity value: 2 diff --git a/Assets/Scripts/Controllers/Ball.cs b/Assets/Scripts/Controllers/Ball.cs index b63c928..b09b1be 100644 --- a/Assets/Scripts/Controllers/Ball.cs +++ b/Assets/Scripts/Controllers/Ball.cs @@ -18,7 +18,7 @@ namespace Controllers public void Shoot(Transform playerTransform) { - GetComponent().AddForce((Vector2)(playerTransform.forward + playerTransform.up) * shotForce); + GetComponent().AddForce((Vector2)(playerTransform.right + playerTransform.up) * shotForce); } } } diff --git a/Assets/Scripts/Controllers/GameController.cs b/Assets/Scripts/Controllers/GameController.cs index 2ae5f21..c326c4e 100644 --- a/Assets/Scripts/Controllers/GameController.cs +++ b/Assets/Scripts/Controllers/GameController.cs @@ -16,7 +16,7 @@ namespace Controllers /// /// The single ball for the game. /// - [SerializeField] private Ball ball; + [SerializeField] public Ball ball; private void Awake() { diff --git a/Assets/Scripts/Controllers/Player/PlayerController.cs b/Assets/Scripts/Controllers/Player/PlayerController.cs index e0de738..eca4641 100644 --- a/Assets/Scripts/Controllers/Player/PlayerController.cs +++ b/Assets/Scripts/Controllers/Player/PlayerController.cs @@ -14,6 +14,9 @@ namespace Controllers.Player [SerializeField] private GameController game; [SerializeField] private Controls controls; + + [SerializeField] private float maxLegAngle; + [SerializeField] private float legSpeed; private void Update() { @@ -35,12 +38,46 @@ namespace Controllers.Player // Add forces if (Input.GetKey(segment.left.keyCode)) - segment.Rigidbody.AddForceAtPosition(Vector2.left * (sensitivity * (isRoot ? 2f : 1f)) + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)), segment.transform.position + (segment.height * segment.forceOrigin)); + { + segment.Rigidbody.AddForceAtPosition( + Vector2.left * (sensitivity * (isRoot ? 2f : 1f)) + + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)), + segment.transform.position + (segment.height * segment.forceOrigin)); + } + if (Input.GetKey(segment.right.keyCode)) - segment.Rigidbody.AddForceAtPosition(Vector2.right * (sensitivity * (isRoot ? 2f : 1f)) + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)), segment.transform.position + (segment.height * segment.forceOrigin)); + { + segment.Rigidbody.AddForceAtPosition( + Vector2.right * (sensitivity * (isRoot ? 2f : 1f)) + + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)), + segment.transform.position + (segment.height * segment.forceOrigin)); + } + + // Rotate the legs if we move. + if (isRoot) + { + if (Input.GetKey(segment.left.keyCode) || Input.GetKey(segment.right.keyCode)) + { + segment.left.leg.transform.localRotation = + Quaternion.Euler(0, 0, maxLegAngle * Mathf.Sin(Time.time * legSpeed)); + segment.right.leg.transform.localRotation = + Quaternion.Euler(0, 0, maxLegAngle * Mathf.Sin(Time.time * -legSpeed)); + } + else + { + segment.left.leg.transform.localRotation = Quaternion.Slerp(segment.left.leg.transform.localRotation, Quaternion.identity, Time.deltaTime * legSpeed); + segment.right.leg.transform.localRotation = Quaternion.Slerp(segment.right.leg.transform.localRotation, Quaternion.identity, Time.deltaTime * legSpeed); + } + } if (isTop) + { game.player.Move(segment.transform.position); + + // Point the arms at the ball. + segment.left.arm.transform.up = -(game.ball.transform.position - segment.left.arm.transform.position); + segment.right.arm.transform.up = -(game.ball.transform.position - segment.right.arm.transform.position); + } } // Try grabbing the ball if pressed. diff --git a/Assets/Scripts/Controllers/Player/PlayerSegment.cs b/Assets/Scripts/Controllers/Player/PlayerSegment.cs index b4b3267..b713442 100644 --- a/Assets/Scripts/Controllers/Player/PlayerSegment.cs +++ b/Assets/Scripts/Controllers/Player/PlayerSegment.cs @@ -22,5 +22,7 @@ namespace Controllers.Player { public KeyCode keyCode; public GameObject icon; + public GameObject leg; + public GameObject arm; } } -- cgit v1.2.3-56-ge451