using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; public class PlayerBehavior : MonoBehaviour { [Header("Physics:")] private float _hInput; private Rigidbody2D _rb; private int forward = 1; public PlayerInput playerInput; [Header("Tambourine:")] [SerializeField] private Launch launcher; [HideInInspector] public bool hasTambourine = true; GameObject tambourine; [Header("Grappling:")] [SerializeField] public Tutorial_GrapplingGun grapplingGun; [SerializeField] public Tutorial_GrapplingRope grapplingRope; private GameObject grappleSurface; [Header("Controllers:")] [SerializeField] private PlayerMovement playerController; [SerializeField] private StateController stateController; Animator animator; void Start() { _rb = GetComponent(); stateController = GameObject.Find("StateController").GetComponent(); animator = GetComponent(); GameObject.Find("Main Camera").GetComponent().player = this.gameObject; } void Update() { // throw tambourine // if (Input.GetKeyDown(KeyCode.K)) { if (playerInput.actions["ThrowTambourine"].WasPressedThisFrame()) { ThrowTambourine(); } // grapple tambourine = GameObject.FindGameObjectWithTag("tambourine"); // if (Input.GetKeyDown(KeyCode.L)) { if (playerInput.actions["Grapple"].WasPressedThisFrame()) { AttemptGrapple(); } // if (Input.GetKeyUp(KeyCode.L)) { if (playerInput.actions["Grapple"].WasReleasedThisFrame()) { LetGoOfGrapple(); } Animate(); } void Animate() { // start walking if (playerInput.actions["Move"].WasPressedThisFrame()) { animator.SetBool("Walking", true); } // return to idle animation if (playerInput.actions["Move"].WasReleasedThisFrame()) { animator.SetBool("Walking", false); } } void OnMove(InputValue value) { _hInput = value.Get().x; if (_hInput < 0) { if (forward != -1) { // if character hasnt already flipped FlipRenderer(); } forward = -1; } else if (_hInput > 0) { if (forward != 1) { // if character hasnt already flipped FlipRenderer(); } forward = 1; } } void FlipScale() { // DOENST WORK RIGHT Vector3 currentScale = this.gameObject.transform.localScale; currentScale.x *= -1; this.gameObject.transform.localScale = currentScale; } void FlipRenderer() { GetComponent().flipX = !GetComponent().flipX; } void ThrowTambourine() { if (hasTambourine && !grapplingRope.isGrappling) { launcher.ThrowTambourine(forward); hasTambourine = false; } } void AttemptGrapple() { if (tambourine != null) { // grapple to tambourine if (!grapplingRope.isGrappling && tambourine.GetComponent().pinned) { grapplingGun.GrappleToTambourine(tambourine); grapplingRope.isGrappling = true; } } else { if (grappleSurface != null) { grapplingGun.GrappleToSurface(grappleSurface.transform.position); grapplingRope.isGrappling = true; } } } void LetGoOfGrapple() { bool currentlyPaused = stateController.isPaused; if (grapplingRope.isGrappling && !currentlyPaused) { print("currently paused is " + currentlyPaused + ", releasing grapple"); if (tambourine != null) { tambourine.GetComponent().DestroySelf(); } grapplingGun.ReleaseGrapple(); } } void OnTriggerEnter2D(Collider2D col) { if (col.tag == "grappleSurface") { grappleSurface = col.gameObject; } else if (col.tag == "instaDeath") { this.stateController.SetDeathCanvasActive(true); Destroy(this.gameObject); } else if (col.tag == "spawnPoint") { stateController.spawnPoint.GetComponent().DeactivateSpawnPoint(); col.GetComponent().ActivateSpawnPoint(); } } void OnTriggerExit2D(Collider2D col) { if (col.tag == "grappleSurface") { grappleSurface = null; } } void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Enemy") { this.stateController.SetDeathCanvasActive(true); Destroy(this.gameObject); } } }