Unity/Unity2D (7) 썸네일형 리스트형 Unity2D_Week2 : Collsion ㆍ충돌처리 전용함수인 OnTrigger와 OnCollision 함수를 정리한다. 1. Collision ㆍCollision을 하기 위해서는 두 객체 모두가 Collision을 가지고 있어야하고, 한 객체는 Rigidbody를 가지고 있어야만 충돌처리 과정이 성립된다. void OnCollisionEnter2D(Collision2D collision) { // 충돌이 들어 왔을 때(시작했을 때) } void OnCollisionExit2D(Collision2D collision) { // 충돌이 되고 나갔을 때(종료했을 때) } void OnCollisionStay2D(Collision2D collision) { // 충돌중일 때(진행중일 때) } void OnCollisionEnter2D(Collisio.. Unity2D_Week2 : Property 프로퍼티(Property) · 기본적으로 멤버 보호 단계에는 private, public, protected, internal이 있다. · 이 중에서 private는 정보 은닉을 위해 외부에서 접근하지 못하도록 제한하는 액세스(접근) 한정자이다. · private로 선언하면, 외부에서 접근을 하기 위해서 get/set을 생성 해야하는 번거로움이 존재한다. · C#에서는 이를 간단히 처리할 수 있는 프로퍼티(Property)를 제공한다. 1. 기본 형태 · private 자료형 변수명 { get{ } set{ } } public class Property : MonoBehaviour { private int hp { get { // 값을 참조할 때의 처리. } set { // 값을 대입할 때의 처리. } .. Unity2D_Week1 : Coroutine ※ 코루틴(Coroutine) : Co(함께/협력) Routine(루틴, 함수) · yield return으로 반환할 때 까지 실행되는 함수. · 반환값은 IEnumerator로 받는다. · 실행문은 StartCoroutine("Coroutine 함수 명"); void Update() { StartCoroutine("FindEnemy())" } IEnumerator FindEnemy() { // 적을 탐색하는 지시문 yield return new WaitForSeconds(1.0f); } 코루틴을 사용하는 이유 · 플레이어를 탐지하는 간단한 AI를 가진 Enemy가 있다. · Update(){}문에서 사용하게 된다면, 프레임당 한 번씩 플레이어를 탐지하려고 한다. · 이것은 지나치게 지속적으로 체크해야 .. Unity2D_Week1 : Raycast 레이캐스트는 오브젝트와 다른 오브젝트가 충돌했을 때 처리할 수 있는 유용한 기술이다. ①. 직선형 Raycast public class Raycast : MonoBehaviour { public Transform raycastPivot; public LayerMask groundMask; public float castDistance; void Update() { RayCast(); } private void RayCast() { // RaycastHit2D : 발사한 광선이 충돌한 오브젝트의 정보가 담긴다. RaycastHit2D raycast = Physics2D.Raycast(raycastPivot.position, Vector2.down, castDistance, groundMask); if(ra.. Unity2D_Week1 : ChargeJump 게임에서 보통 기를 모아서 하는 액션들이 존재한다. 이번에는 기를 모아서 점프를 하는 ChargeJump를 구현해보고자 한다. public float jumpPower; void Update() { chargeJump(); } private void ChargeJump() { // 점프 준비 if (Input.GetKeyDown(KeyCode.Space)) { // 버튼을 누른 즉시 charge 값이 0.0으로 초기화. charge = 0.0f; } // 기 모으기 if (Input.GetKey(KeyCode.Space)) { // 버튼을 누르는 동안 charge에 시간 값 더함. charge += Time.deltaTime; } // 점프 실행 단계 if (Input.GetKeyUp(KeyCode.Sp.. Unity2D_Week1 : Jump 점프를 구현하기 위해서는 제어할 객체에 Rigidbody 2D가 존재해야 한다. 그래야 Rigidbody2D 내부 명령어로 점프에 관한 처리가 가능하기 때문. public class Jump : MonoBehaviour { Rigidbody2D rigid; public int jumpPower; // 게임 실행 시 (혹은 오브젝트 활성화 시) 최초 1회 실행되는 유니티 이벤트 함수 void Start() { rigid = GetComponent(); } // 매 프레임마다 1회씩 실행되는 함수. void Update() { if(Input.GetKeyDown(KeyCode.Space)) { rigid.AddForce(Vector2.up * jumpPower * ForceMode2D.Impulse); } .. Unity2D_Week1 : Move ①. Input.GetAxisRaw로 값을 받아와 그 값이 -1인지 1인지 판단하는 방법. ※ GetAxisRaw(Horisontal/Vertical ) Horizontal과 Vertical은 유니티에서 Edit -> Project Setting -> Input Manager -> Axes에 가보면 확인할 수 있다. axisName에 의해 식별된 가상축의 값을 반환한다. 키보드와 조이스틱 입력값에 대해 -1에서 1까지의 값을 가진다. public class Move : MonoBehaviour { public int moveSpeed; // 매 프레임마다 1회씩 실행되는 함수. void Update() { float x = Input.GetAxisRaw("Horizontal"); // 좌, 우측 키보드 .. 이전 1 다음