aboutsummaryrefslogtreecommitdiffstatshomepage
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
parent175345523527fca2e2878ccea1e1be391c778986 (diff)
downloadgmtk-gamejam-72c0636d460dbff953f14abdee1fd2e6cb6213c0.tar.gz
gmtk-gamejam-72c0636d460dbff953f14abdee1fd2e6cb6213c0.tar.zst
gmtk-gamejam-72c0636d460dbff953f14abdee1fd2e6cb6213c0.zip
Physics in FixedUpdate
-rw-r--r--Assets/Prefabs/Player.prefab4
-rw-r--r--Assets/Scenes/Main.unity8
-rw-r--r--Assets/Scripts/Controllers/Player/PlayerController.cs33
-rw-r--r--Assets/Scripts/Controllers/Player/PlayerSegment.cs24
4 files changed, 47 insertions, 22 deletions
diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab
index 521b4bf..a7aaff7 100644
--- a/Assets/Prefabs/Player.prefab
+++ b/Assets/Prefabs/Player.prefab
@@ -1132,6 +1132,8 @@ MonoBehaviour:
arm: {fileID: 8845918641001187994}
forceOrigin: {x: 0, y: 0.5, z: 0}
height: 0
+ isRoot: 0
+ isTop: 1
--- !u!50 &6095859832867562452
Rigidbody2D:
serializedVersion: 4
@@ -1424,6 +1426,8 @@ MonoBehaviour:
arm: {fileID: 61032117990659215}
forceOrigin: {x: 0, y: -0.5, z: 0}
height: 0
+ isRoot: 1
+ isTop: 0
--- !u!50 &6095859833589646292
Rigidbody2D:
serializedVersion: 4
diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity
index d003365..8979071 100644
--- a/Assets/Scenes/Main.unity
+++ b/Assets/Scenes/Main.unity
@@ -353,6 +353,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 6267610020350316690, guid: 2485406c33a7d4f5481ce936cc9b162e, type: 3}
+ propertyPath: shotForce
+ value: 1000
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2485406c33a7d4f5481ce936cc9b162e, type: 3}
--- !u!114 &707826158 stripped
@@ -431,7 +435,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
propertyPath: sensitivity
- value: 2
+ value: 10
objectReference: {fileID: 0}
- target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
propertyPath: upSensitivity
@@ -439,7 +443,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
propertyPath: verticalSensitivity
- value: 1.5
+ value: 7.5
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
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]