aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Assets/Scripts/Controllers/Player/PlayerController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Controllers/Player/PlayerController.cs')
-rw-r--r--Assets/Scripts/Controllers/Player/PlayerController.cs41
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.