using System.Linq; using Controllers.Player; using UnityEngine; namespace Controllers.Player { public class PlayerController : MonoBehaviour { [SerializeField] private PlayerSegment[] segments; [SerializeField] private float sensitivity; [SerializeField] private float verticalSensitivity; [SerializeField] private Rigidbody2D ballPrefab; [SerializeField] private float ballSpeed; private void Update() { for (var i = 0; i < segments.Length; i++) { var segment = segments[i]; var isRoot = i == 0; // Update icons foreach (var control in new[] {segment.left, segment.right}) { if (Input.GetKeyDown(control.keyCode)) control.icon.SetActive(true); else if (Input.GetKeyUp(control.keyCode)) control.icon.SetActive(false); } // 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.Sprite.bounds.size.y * 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.Sprite.bounds.size.y * segment.forceOrigin)); } // if (Input.GetKey(KeyCode.D)) // { // segments[0].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[0].transform.position - Vector2.up * 0.5f); // } // else if (Input.GetKey(KeyCode.A)) // { // segments[0].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[0].transform.position - Vector2.up * 0.5f); // } // // if (Input.GetKey(KeyCode.L)) // { // segments[1].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[1].transform.position + Vector2.up * 0.5f); // } // else if (Input.GetKey(KeyCode.J)) // { // segments[1].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[1].transform.position + Vector2.up * 0.5f); // } // // if (Input.GetKey(KeyCode.RightArrow)) // { // segments[2].AddForceAtPosition(Vector2.right * sensitivity, (Vector2)segments[2].transform.position + Vector2.up * 0.5f); // } // else if (Input.GetKey(KeyCode.LeftArrow)) // { // segments[2].AddForceAtPosition(Vector2.left * sensitivity, (Vector2)segments[2].transform.position + Vector2.up * 0.5f); // } // if (Input.GetKeyDown(KeyCode.Space)) { var ball = Instantiate(ballPrefab); var lastSegment = segments.Last(); ball.transform.position = lastSegment.transform.position; ball.AddForce((lastSegment.transform.right + lastSegment.transform.up) * ballSpeed); } } } }