Unity (10) 썸네일형 리스트형 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.. Unity3D_Week1 : 카메라 시점 변경 사용자의 마우스 움직임에 따라 카메라의 시점이 바뀌도록 설정한다. 카메라 상위에 빈 오브젝트를 두고 스크립트를 add Component하여 제어하는 것을 목표로 한다. [SerializeField] Transform player; // 플레이어 [Range(0.5f, 4.0f)] [SerializeField] float sensitivityX; // X축 민감도 [Range(0.5f, 4.0f)] [SerializeField] float sensitivityY; // Y축 민감도 [SerializeField] float minX; // x축 회전 카메라 최소 각도 [SerializeField] float maxX; // x축 회전 카메라 최대 각도 float xRotation = 0.0f.. Unity3D_Week1 : Move(Character Controller) CharacterController 유니티가 지원해주는 Character Controller로 이동에 관해 다양한 조작이 가능하다. 유니티에서는 Rigidbody 물리를 활용하지 않는 플레이어에 사용할 것을 권장한다. ㆍSlope Limit : 캐릭터가 올라갈 수 있는 각도. (설치된 오브젝트의 각도 정도) ㆍStep Offset : 어느 높이까지의 공중에 떠있는 물체에 올라갈 수 있는지 설정. ㆍSkin Width : 콜라이더 끼리 관통할 수 있는 스킨 너비. 0.01 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 { // 값을 대입할 때의 처리. } .. 한 눈에 보기 ※ 키보드 좌우/상하 받아오기 · Input.GetAxisRaw("Horisontal"/"Vertical"); ※ 키보드 입력 · Input.GetKeyDown : 키를 한 번 눌렀을 때 true를 반환 · Input.GetKeyUp : 키를 누르고 뗐을 때 true를 반환 · Input.GetKey : 키를 누르고 있을 때 true를 반환 ※ Time.deltaTime · 프레임과 프레임 사이의 간격시간. · 프레임의 차이(핑의 차이)가 존재하는 게임 환경에서 동일한 처리(연산)속도를 위해 프레임 단위가 아닌 초 단위로 받는 명령어. ※ Mathf.Clamp() · Mathf.Clamp(값, 최소값, 최대값) : 값을 최소, 최대 사이 값으로 고정 후 반환. ※ 레이캐스트 · 직선형 : Physics2.. 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.. 이전 1 2 다음