diff options
Diffstat (limited to 'Assets/Scripts/Controllers/Player/PlayerController.cs')
-rw-r--r-- | Assets/Scripts/Controllers/Player/PlayerController.cs | 41 |
1 files changed, 39 insertions, 2 deletions
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. |