using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; public class MinerMovement : MonoBehaviour { [SerializeField] float moveSpeed = 10f; [SerializeField] float jumpSpeed = 5f; Vector2 moveInput; Rigidbody2D minerRigidbody; Animator minerAnimator; CapsuleCollider2D minerBodyCollider; BoxCollider2D minerFeetCollider; GameSession gameCanvas; ReplayScreen replayScreen; public bool isLiving = true; void Start() { isLiving = true; minerRigidbody = GetComponent(); minerAnimator = GetComponent(); minerBodyCollider = GetComponent(); minerFeetCollider = GetComponent(); } void Update() { if (!isLiving) { return; } Captured(); Run(); FlipMinerSprite(); } void OnMove(InputValue value) { if (!isLiving) { return; } moveInput = value.Get(); } void OnJump(InputValue value) { if (!isLiving) { return; } if (!minerFeetCollider.IsTouchingLayers(LayerMask.GetMask("Ground"))) { return; } if(value.isPressed) { minerRigidbody.velocity += new Vector2 (0f, jumpSpeed); } } void Run() { Vector2 minerVelocity = new Vector2 (moveInput.x * moveSpeed, minerRigidbody.velocity.y); minerRigidbody.velocity = minerVelocity; bool minerHasHorizontalMovement = Mathf.Abs(minerRigidbody.velocity.x) > Mathf.Epsilon; minerAnimator.SetBool("isRunning", minerHasHorizontalMovement); } void FlipMinerSprite() { bool minerHasHorizontalMovement = Mathf.Abs(minerRigidbody.velocity.x) > Mathf.Epsilon; if (minerHasHorizontalMovement) { transform.localScale = new Vector2 (-Mathf.Sign(minerRigidbody.velocity.x), 1f); } } void Captured() { if (minerBodyCollider.IsTouchingLayers(LayerMask.GetMask("Enemies"))) { isLiving = false; minerAnimator.SetTrigger("isCaught"); minerRigidbody.velocity = new Vector2 (-2f, minerRigidbody.velocity.y); FindObjectOfType().ProcessPlayerDeath(); } } }