using System.Collections; using System.Collections.Generic; using TreeEditor; using UnityEngine; public class PlayerController : MonoBehaviour { Rigidbody2D rbody; float axisH = 0.0f; // 입력 public float speed = 3.0f; // 이동 속도 public float jump = 7.0f; // 점프력 public LayerMask groundLayer; // 착지할 수 있는 레이어 bool goJump = false; // 점프 개시 플래그 bool isDead = false; // 사망 플래그 bool onGround = false; // 지면에 서 있는 플래그 Animator animator; //public static string gameState = "playing"; // 게임 상태 // Start is called before the first frame update void Start() { //Rigidbody2D 가져오기 rbody = GetComponent(); //Animator 가져오기 animator = GetComponent(); //gameState = "playing"; // 게임중 } // Update is called once per frame void Update() { // 수평 방향의 입력 확인 axisH = Input.GetAxisRaw("Horizontal"); if (isDead) { return; } if (onGround) { animator.SetBool("jump", false); } else { animator.SetBool("jump", true); } // 방향 조절 if (axisH != 0) // 0이 아니면 (왼쪽이든 오른쪽이든 누르고 있으면) { animator.SetBool("Move", true); float direction = axisH > 0 ? 1 : -1; transform.localScale = new Vector2(direction, 1); } else { animator.SetBool("Move", false); } // 캐릭터 점프하기 if (Input.GetButtonDown("Jump")) { Jump(); } } private void FixedUpdate() { onGround = Physics2D.Linecast(transform.position, transform.position - (transform.up * 0.1f), groundLayer); if (isDead) { return; } if (onGround || axisH != 0) { // 지면 위 or 속도가 0 아님 // 속도 갱신하기 rbody.linearVelocity = new Vector2(speed * axisH, rbody.linearVelocity.y); } if (onGround && goJump) { Debug.Log("점프!"); Vector2 jumpPw = new Vector2(0, jump); rbody.AddForce(jumpPw, ForceMode2D.Impulse); goJump = false; } } public void Jump() { animator.SetBool("jump", true); goJump = true; Debug.Log(" 점프 버튼 눌림! "); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Goal") { Goal(); } else if (collision.gameObject.tag == "Dead") { GameOver(); } } public void Goal() { GameStop(); } public void GameOver() { isDead = true; GameStop(); } void GameStop() { // Rigidbody2D 가져오기 Rigidbody2D rbody = GetComponent(); // 속도를 0으로 하여 강제 정지 rbody.linearVelocity = new Vector2 (0, 0); } }