using System; using UnityEngine; 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; [SerializeField] public Transform flipper; public Rigidbody2D Rigidbody => _rigidbody != null ? _rigidbody : _rigidbody = GetComponent(); 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] public struct Control { public KeyCode keyCode; public GameObject icon; public GameObject leg; public GameObject arm; } }