본문 바로가기

Unity47

velocity(속도) / 소코반 - 플레이어에 관성 없애기 AddForce는 힘을 주는 것임. 힘을 주면 그게 바로 속도가 되는 것이 아니라 힘을 주면 힘이 누적되어서 속도가 됨. 즉, 내부에서 물리적인 계산이 들어가서 속도가 되는 것임. 힘을 주면 줄수록 속도가 빨라지는 방식이라서 즉 관성이 붙어 있어서 조작이 힘듦. 그래서 힘을 거쳐서 속도가 되는 것이 아니라 아예 속도 자체를 하드하게 바로 집어넣고 싶다! 즉, playerRigidbody에게 속도(velocity) 그 자체만 덮어씌우자! AddForce는 함수인 반면 velocity는 변수임. 그래서 여기 값을 지정하면 그게 바로 속도가 됨. 그리고 velocity는 vector3를 사용함. vector3는 x,y,z를 가지는 집합 이렇게 고치면 빠릿빠릿하게(관성 없이) 움직이는 것을 확인할 수 있음! 2021. 6. 26.
키보드 Customization / GetAxis 마우스 상 하 좌 우를 조절할 때 처음엔 이렇게 썼음. 하지만 딱봐도 귀찮고 길다. 문제점 두가지. 1. 키보드 키를 하나씩 명시하고 싶지 않다. (W,A,S,D..) 2. 수직, 수평 방향을 꼭 네가지 케이스로 나눌 필요가 있을까? 해결 방안 예를 들어, 발사 기능에는 "Fire"라는 키보드 세팅 기능이 있음 즉 실제 게임에서는 처럼 기능을 1:1로 매핑하지 않음 그 사이에 Fire라는 이름을 한 번 거쳐감. 왜 이렇게 할까? 게임을 할 때 마우스 왼쪽 입력을 바로 들어가는게 아니라(이렇게 안한다 예시) Fire 라는 이름에 들어가니까 마우스 왼쪽 버튼이 있는거임. ( 발사 기능 - "Fire" - 마우스 왼쪽 버튼 ) 이렇게 하면 customization을 할 수 있음. // 이렇게 안한다. if(입.. 2021. 6. 26.
게임 엔진의 원리 : 메시지와 브로드캐스팅 컴포넌트들이 어떻게 외부의 간섭 없이 스스로를 동작시킬까? 유니티의 모든 컴포넌트들은 MonoBehaviour 클래스를 상속함. 즉 MonoBehaviour 클래스 위에 컴포넌트 고유의 기능을 덧붙임. MonoBehaviour 클래스는 유니티에서 미리 만들어서 제공하는 클래스이고 컴포넌트로서 동작하기 위한 기초 기능들을 모두 제공함. MonoBehaviour - 컴포넌트로서 게임 오브젝트에 추가될 수 있다. - 유니티의 통제를 받는다. - 유니티 이벤트 메시지를 감지할 수 있게 된다. 유니티엔진에서 모든 씬의 모든 게임 오브젝트에 각각의 어떤 컴포넌트가 붙어있는지 모조리 실시간으로 한 번에 파악할 수 있는 매니저같은 것은 없음. 그러나 유니티의 대부분의 컴포넌트들은 예를 들어 초기화 메서드 같은 것들은 .. 2021. 6. 10.
게임 엔진의 원리: 게임 오브젝트와 컴포넌트 상속으로 개발의 생산성을 올린다. 그러나 상속이 늘 좋을까? 놉! 자식은 부모의 빚까지 상속해야한다. 선택적으로 상속받을 수 없다. 상속으로 오히려 코드를 재사용하기 힘든 경우가 나타날 수 있다. 그 근본적인 이유는, 미래에 사용될 '최소 필수집합'을 미리 예상하는 것이 힘들다는 것! 다시 말하면 완벽하게 순수한 베이스 클래스를 만드는 것은 어렵다는 것. + 기획자가 프로그래머에게 의존하게 되는 문제 이 방식을 해결할 수 있는 방법은 상속이 아니라 가지고 있는 것. A는 필요한 기능이 있을 때마다 그 기능을 가진 오브젝트를 자기 내부에 포함시킴. 상속이 아니라! 즉, 선택적으로 기능을 골라 붙임. 비어있는 컨테이너를 만들어놓고 그 컨테이너에 기능들을 선택해서 붙이는 것. : 게임 오브젝트- 컴포넌트 방식.. 2021. 6. 9.
Unity 폴더 필수 요소 Assets, Packages, ProjectSettings 만 필수. 프로젝트 보낼 때 이것만 남기고 삭제하면 용량 줄일 수 있음. 그러나 이것만 남기면 나머지는 프로젝트 생성할 때 다시 생성하는거라 시간은 오래 걸릴 수 있음. 다시 말하면 Assets 폴더를 가지고 있는 폴더가 Unity 폴더. 2021. 6. 8.