aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Assets/Scripts
diff options
context:
space:
mode:
authorCameron Katri <me@cameronkatri.com>2021-06-12 14:59:41 -0400
committerCameron Katri <me@cameronkatri.com>2021-06-12 14:59:41 -0400
commit72c0636d460dbff953f14abdee1fd2e6cb6213c0 (patch)
tree72400aee38f1ef5c789bf54b47d57392a5b1168b /Assets/Scripts
parent175345523527fca2e2878ccea1e1be391c778986 (diff)
downloadgmtk-gamejam-72c0636d460dbff953f14abdee1fd2e6cb6213c0.tar.gz
gmtk-gamejam-72c0636d460dbff953f14abdee1fd2e6cb6213c0.tar.zst
gmtk-gamejam-72c0636d460dbff953f14abdee1fd2e6cb6213c0.zip
Physics in FixedUpdate
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/Controllers/Player/PlayerController.cs33
-rw-r--r--Assets/Scripts/Controllers/Player/PlayerSegment.cs24
2 files changed, 37 insertions, 20 deletions
diff --git a/Assets/Scripts/Controllers/Player/PlayerController.cs b/Assets/Scripts/Controllers/Player/PlayerController.cs
index eca4641..3674d92 100644
--- a/Assets/Scripts/Controllers/Player/PlayerController.cs
+++ b/Assets/Scripts/Controllers/Player/PlayerController.cs
@@ -17,15 +17,21 @@ namespace Controllers.Player
[SerializeField] private float maxLegAngle;
[SerializeField] private float legSpeed;
-
+
+ private void Awake()
+ {
+ foreach (var segment in segments) {
+ segment.sensitivity = sensitivity;
+ segment.verticalSensitivity = verticalSensitivity;
+ }
+ }
+
private void Update()
{
// Loop over each body segment and control it.
for (var i = 0; i < segments.Length; i++)
{
var segment = segments[i];
- var isRoot = i == 0;
- var isTop = i == segments.Length - 1;
// Update icons
foreach (var control in new[] {segment.left, segment.right})
@@ -37,24 +43,11 @@ 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));
- }
-
- 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.moveleft = Input.GetKey(segment.left.keyCode);
+ segment.moveright = Input.GetKey(segment.right.keyCode);
// Rotate the legs if we move.
- if (isRoot)
+ if (segment.isRoot)
{
if (Input.GetKey(segment.left.keyCode) || Input.GetKey(segment.right.keyCode))
{
@@ -70,7 +63,7 @@ namespace Controllers.Player
}
}
- if (isTop)
+ if (segment.isTop)
{
game.player.Move(segment.transform.position);
diff --git a/Assets/Scripts/Controllers/Player/PlayerSegment.cs b/Assets/Scripts/Controllers/Player/PlayerSegment.cs
index b713442..4d0fb4f 100644
--- a/Assets/Scripts/Controllers/Player/PlayerSegment.cs
+++ b/Assets/Scripts/Controllers/Player/PlayerSegment.cs
@@ -6,15 +6,39 @@ namespace Controllers.Player
[RequireComponent(typeof(Rigidbody2D))]
public class PlayerSegment : MonoBehaviour
{
+ internal float sensitivity;
+ internal float verticalSensitivity;
+
+ internal bool moveleft;
+ internal bool moveright;
+
[SerializeField] public Control left;
[SerializeField] public Control right;
[SerializeField] public Vector3 forceOrigin;
[SerializeField] public float height;
+ [SerializeField] public bool isRoot;
+ [SerializeField] public bool isTop;
public Rigidbody2D Rigidbody => _rigidbody != null ? _rigidbody : _rigidbody = GetComponent<Rigidbody2D>();
private Rigidbody2D _rigidbody;
+
+ private void FixedUpdate()
+ {
+ if (moveleft)
+ {
+ Rigidbody.AddForceAtPosition(
+ Vector2.left * (sensitivity * (isRoot ? 2f : 1f)) + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)),
+ transform.position + (height * forceOrigin));
+ }
+ if (moveright)
+ {
+ Rigidbody.AddForceAtPosition(
+ Vector2.right * (sensitivity * (isRoot ? 2f : 1f)) + Vector2.up * (verticalSensitivity * (isRoot ? -1f : 1f)),
+ transform.position + (height * forceOrigin));
+ }
+ }
}
[Serializable]