본문 바로가기

게임개발31

애니메이션 State 패턴 적용 상태 패턴이란? 객체가 특정 상태에 따라 행위를 달리하는 상황에서 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴 여기서 '상태'란, 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다. 예를들어 티비가 켜져 있는 상태라면 음량 버튼을 누르면 음량이 증가하거나 감소한다. 티비가 꺼져 있는 상태라면 음량 버튼을 눌러도 티비의 음량은 바뀌지 않는다. 즉, 티비(객체)의 전원 상태에 따라서 메소드가 바뀐다. 이처럼 객체가 특정 상태에 따라 행위를 달리하는 상황에서 사용되는 최적의 패턴이 state pattern 이라고 보면 된다. 객체 지향 프로그래밍에서의 클래스는 꼭 사물, 생물만을 표현할 수 있는 게 아니라 경우에 따라서 무형태의 행위, 동.. 2024. 2. 26.
에니메이션 Lerp 선형 보간법 의미 두 끝점 a ~ b 사이에 위치한 c를 계산하는 방법 a와 b사이에 t가 위치한 값을 반환하는데 t는 percent의 개념(0~1)이기 때문에 t가 0이면 0(a)~1(b) 사이에서 t가 0인 지점을 계산하는데 t와 a와 동일하므로 a를 반환하고 t가 1이면 b를 반환한다. 즉, t가 a쪽에 가까워질수록 0쪽으로 가까워지는 값(0.4, 0.3 ... 0.001)을 반환하고 b쪽에 가까워질수록 1에 가까워지는 값(0.6, 0.7, 0.9999)을 반환한다. 사용 예시 멈춰있는 애니메이션과 움직이는 애니메이션을 blending 해서 움직이다가 멈추는 경우 또는 멈추다가 움직이는 동작을 자연스럽게 만들어 줌 bool moveToDest = false; float wait_run_ratio =.. 2024. 2. 22.
Raycast Ray란? 방향(direction)과 원점(origin)을 나타내는 것으로 원점(origin)은 ray가 시작하는 world 세상의 position이다. 방향(direction)은 정규화(normalized)된 Vector3(x, y, z)의 형태의 궤적을 사용한다. Vector를 정규화 하면 Vector의 길이인 magnitude(크기)가 1로 바뀌고 방향만을 가리키는 Vector로 사용된다. (Vector는 크기와 방향을 갖는 화살표) Ray를 만드는 방법 // Creates a Ray from the mouse position Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 화면에 있는 마우스 위치에서 ray를 만듬 만약 Ray의 orig.. 2024. 2. 19.
싱글톤 패턴 적용 싱글톤 패턴이란? 단 하나의 유일한 인스턴스를 만들기 위한 디자인 패턴이며, 메모리 절약을 위해 인스턴스를 매번 새로 만들지 않고 초기에 하나의 인스턴스만 만든 후 재사용하는 방식이다. 해당 인스턴스가 빈번하게 사용되는 경우에 싱글톤 패턴을 적용하면 좋다. 예시를 들자면, Cat 인스턴스에서 어떠한 이벤트가 일어났을 때 GameManger 인스턴스가 처리를 하는데 게임이 시작되는 동안 Cat 인스턴스는 여러 개 생성되는데 그 처리를 담당하는 GameManger 인스턴스도 여러 개 생성된다면 수백 개, 수천 개의 Cat 인스턴스가 생성되는 경우 그에 따라서 GameManger 인스턴스도 많아지기 때문에 리소스를 많이 잡아먹게 된다. 그래서 전역으로 사용되는 인스턴스를 하나 만들고 각각의 Cat 오브젝트에서.. 2024. 2. 2.