1. Player object
-
방향키를 누르고있으면 상하좌우로 이동
-
이동중에는 해당 방향을 바라봄
-
Time.Deltatime을 이용해 초당 이동속도를 가시적으로 컨트롤
Script 작성과 monobehaviour 컴포넌트 활용
Transform과 Vector3, quaternion를 이용한 이동과 회전
Input 클래스를 통한 입력 관리
2. Player Camera : 다음과 같은 구조로 플레이어를 추적해 비춰주는 카메라
-
플레이어와 같은 위치에 배치되는 CameraRoot
-
CameraRoot의 자식으로 중점에서 일정 거리만큼 멀어진 후 중점을 바라보는 PlayerCamera
-
PlayerCamera에는 Camera 컴포넌트가 적용
Transform의 부모와 자식간 위치관계의 이해
다른 오브젝트를 참고하는 Script 작성
3. 슈팅 조작
-
마우스를 클릭하면, 플레이어 위치에서 총알을 생성한 후, 클릭한 위치를 향해 총알을 발사
-
맵의 바닥에 해당하는 오브젝트를 배치
-
마우스 클릭이 발생하면, 마우스가 가르키고있는 바닥 오브젝트 위치를 검출
-
플레이어 위치에 총알 오브젝트를 생성
-
총알 오브젝트의 스크립트에 접근해 검출한 방향을 향해 이동하도록 지시
Physic의 RayCast와 RaycastHit에 대한 이해
마우스 Input에 대한 이해
instantiate를 통한 오브젝트 생성과 관리
Vector3의 활용
4. 적 오브젝트
-
일정 시간마다 정해진 범위 안 무작위 위치에 적 오브젝트를 생성
-
플레이어와 총알, 적 사이의 충돌처리
-
적 오브젝트는 플레이어 오브젝트를 향해 이동
-
적과 플레이어 오브젝트가 충돌하면, 플레이어 오브젝트를 제거
-
적과 총알 오브젝트가 충돌하면, 총알과 적 오브젝트를 제거
-
총알이 벽과 충돌하면, 총알 오브젝트를 제거
Time 클래스를 이용한 타이머 관리
Collison과 Rigidbody를 통한 유니티 충돌의 이해
Collision 충돌과 Trigger 충돌의 차이에 대한 이해
충돌체 구분을 위한 Tag와 Layer의 활용
Random 클래스 활용
5. UI 표시
-
화면 좌측 상단에 작업 일자를 표시하는 Text
-
플레이어 오브젝트가 제거되면, 화면 중앙에 '다시하기' 버튼과 '종료하기' 버튼 표시
-
다시하기를 누르면 현재 Scene을 로드
-
종료하기를 누르면 게임을 종료
-
해상도 크기 및 비율이 바뀌더라도 의도한 위치에 적절한 크기로 표시되도록 유지
UI Canvas와 Event에 대한 이해와 활용
Scene과 Application 클래스의 활용
응용
- 공격력과 체력 개념 적용
- 점수 개념 적용 : 적 오브젝트를 제거하면 점수가 증가하고 UI에 표시
- 조작방식 변경 : 누르기 지속으로 총알 발사, Shift키로 대쉬 등
- 다양한 방식의 총알 생성 : 기관총, 산탄총, 관통총 등
- 범위 공격과 그에 맞는 공격방식 구현 : 곡사포, 지뢰 등
- 다양한 능력치를 가진 적 생성 : 체력, 속도, 크기, 등장빈도 등
- 플레이어의 능력치를 변화시키는 버프 아이템 : 플레이어와 충돌하면 속도, 공격력, 체력 등을 올려주는 오브젝트를 일정 시간마다 생성
- 데이터 관리 : 최고점수를 저장하고 다음 실행때도 표시
- 골드와 업그레이드 : 적을 제거하면 골드를 획득하고 플레이어의 능력치를 강화 후 해당 정보를 저장