using UnityEngine; // 발판으로서 필요한 동작을 담은 스크립트 public class Platform : MonoBehaviour { public GameObject[] obstacles; // 장애물 오브젝트들 public int emptyPatternWeight = 2; // 장애물이 없는 패턴이 선택될 가중치 private bool stepped = false; // 플레이어 캐릭터가 밟았었는가 // 컴포넌트가 활성화될때 마다 매번 실행되는 메서드 private void OnEnable() { // 발판을 리셋하는 처리 stepped = false; for(int i = 0; i < obstacles.Length; i++) { obstacles[i].SetActive(false); } if(obstacles.Length == 0) { return; } // 낮은 장애물과 높은 장애물이 동시에 켜져 불가능한 배치가 되지 않도록 하나만 선택한다. int patternIndex = Random.Range(0, obstacles.Length + emptyPatternWeight); if(patternIndex < obstacles.Length) { obstacles[patternIndex].SetActive(true); } } void OnCollisionEnter2D(Collision2D collision) { // 플레이어 캐릭터가 자신을 밟았을때 점수를 추가하는 처리 if(collision.collider.tag == "Player" && !stepped) { stepped = true; GameManager.instance.AddScore(1); } } }