본문 바로가기
엔진 공부/Buildbox_Classic

05. 첫 프로젝트 만들기 | 캐릭터 회전

by OhEasy 2023. 3. 5.
728x90

지난 글에서 오브젝트 별 충돌 범위 설정 및 캐릭터와 방어막 연결을 완료 했다.

캐릭터와 방어막을 연결하였으니 캐릭터를 중심으로 회전하는 방어막을 구현한다.


캐릭터를 조종하는 방법은 World UI 화면에서 설정할 수 있다.

World UI 화면은 다음과 같은 방법으로 켤 수 있다.

1. 빌드박스 왼쪽 상단을 보면 트리 구조 모양의 이미지를 누른다.

2. 그러면 이런 창이 하나 뜨는데 거기서 World UI 모양의 녀석을 더블클릭한다.

위 과정을 마치면

이런 화면이 뜬다.

기본으로 깔려있는 녀석들을 한번 살펴보면

왜인지 모르지만 게임오버가 두개다

1. Default Font : 화면상 띄워놓을 텍스트인데 이전 사진의 TOUCH TO MOVE를 이녀석으로 만든 것

2. Joystick Touch Area ( Joystick ) : 이름부터 캐릭터를 이동시킬 수 있어 보인다. 하지만

우리가 아는 일반적인 조이스틱은 빈 원 안에 차있는 원이 들어가있는 모습이다.

우리가 아는 조이스틱과 달리 그냥 빈 화면인데

빌드박스의 조이스틱이 작동하는 방식은

빨간점에 터치해서 파란점까지 드래그

조이스틱의 범위 내에서 터치한 위치를 빨간 점, 드래그 중인 손가락의 위치를 파란 점이라 한다면

빨간점에서 파란점까지 이동한 방향을 Vector A라 할 수 있다.

그렇게 실시간으로 갱신되고있는 Vector A 방향으로 캐릭터를 이동 시키는 방식이다.

( 컨트롤 스타일은 Absolute와 Relative가 있지만 이건 나중에 다룬다. )

3. Game Over ( Event Observer ) : 게임 오버는 이벤트 옵저버라는 녀석으로 캐릭터가 사망했는지를 체크한다.

이벤트 옵저버가 감지할 수 있는 이벤트 리스트들

이벤트 옵저버가 감지할 수 있는 이벤트들의 리스트는 매우 많은데

이렇게 이벤트 타입에 따라 값을 설정할수도 있고, 해당 조건이 만족 되었을 때 실행시킬 행동도 설정할 수 있다.


세가지 녀석들을 살펴 보았으나 이 프로젝트에서 필요한 캐릭터 조작은

터치를 할 때마다 회전 방향만 바꿔주면 되는 부분이라 조이스틱은 필요하지 않아서 제거한다.

터치를 할 때마다 캐릭터의 회전 방향을 바꿔주려면 어떻게 해야할까?

회전 방향에 따른 상태가

최초 반시계 방향으로 도는 것을 Default, 나머지는 시계 방향, 반시계 방향으로 구분한다면

터치를 통해 Default,반시계 방향일 때는 시계 방향로 바꿔주고 ( Case : B )

시계 방향일 때는 반시계 방향으로 바꿔주면 된다. ( Case : A )

두가지 경우를 바꿔주는 것은 왼쪽 목록 중 Buttons/Switch Button으로 할 수 있다.

스위치 버튼을 드래그로 화면에 끌어다 놓으면 ( 더블클릭하면 생성 안됨! )

왼쪽 위와 같이 생성 되는데 버튼 끝 점을 잡고 늘리던가 오른쪽 Transform의 Scale을 통해

화면을 약간 넘도록 키워준다.

Case : A와 B를 변경해줄 버튼을 셋팅 하였으니 캐릭터가

Default, 시계 방향 , 반시계 방향으로 회전하는 지에 따라 반대 방향으로 돌 수 있도록 셋팅을 해보자

왼쪽 위 월드를 클릭해 게임 화면으로 돌아와서 왼쪽에 위치한 Characters 탭에서 캐릭터를 선택해준다.

그러면 오른쪽에 캐릭터의 정보가 보이는데

오른쪽 가장 아래에 있는 Add Component를 누르고 Advanced Move를 눌러 추가해준다.

Advanced Move는 오브젝트의 움직임을 관리한다.

추가된 Advanced Move를 살펴 보면

Angular Velocity와 Event라는 부분이 보인다.

Angular Velocity는 회전 속도를 설정하는 부분인데

값이 0보다 크면 반시계 방향 ( 위의 Default, 반시계 방향 ),

값이 0보다 작으면 시계 방향으로 회전한다 ( 위의 시계 방향 ).

최초 상태 ( Default )의 경우 반시계 방향이므로 값은 0보다 큰 수로 설정해준다.

이벤트는 On Start로 설정 하였는데

None으로 설정할 경우 최초 게임 시작 시 동작하지 않는다.

여기서 Switch A, Switch B가 보이지 않는다면 World UI에 스위치 버튼이 없는 것이므로

다시 World UI로 돌아가 Switch 버튼이 있는지 확인해보자

위 과정은 최초 상태이므로 위에서 말했던 Case : A와 Case : B를 설정 할 차례다.

최초 상태가 Case : A라면 별도로 On Start를 지정할 필요가 없었겠지만

빌드박스의 Switch는 아래와 같이 돌아가는 듯 했다.

최초 스위치 버튼으로 변경 되는 것은 A -> B지만 변경된 B 부터 감지를 한다는 것이다.

World UI로 진입하기 위해 봤던 화면을 잠시 보면

잘 보면 Start부터 Game Over UI까지 선으로 연결 되어 있다

Start -> Main Menu UI -> World -> World UI -> Game Over UI 순서로 되어있다.

( World와 Wolrd UI는 같은 화면에 보이나 생성 순서는 World부터 생성 된다는 것을 알 수 있다.)

캐릭터의 경우 World에서 생성 되기 때문에 Switch 버튼보다 빨리 생성되지만

Switch 버튼이 생성 될 때의 초기값인 A는 캐릭터에 전달이 되지 않고

변경되는 상황에서만 캐릭터로 전달이 되는 것 같았다.

어찌되었든

총 3개의 Advanced Move를 추가해주었고 각각

순서
Angular Velocity
Event
1
2
On Start
2
2
Switch A - Switch Button
3
-2
Switch B - Switch Button

위와 같이 설정해주었고 터치에 따라 반대로 회전하는 것을 확인할 수 있었다.

728x90

댓글