애니메이션 이벤트

애니메이션 키 프레임 위에 우클릭을 해보면 Add Animation Event로 애니메이션 이벤트를 추가할 수 있다.

또는 60 프레임 아래에 길쭉한 막대기+를 선택해도 애니메이션 이벤트를 추가할 수 있다.

애니메이션 이벤트에는 애니메이션이 붙어있는 해당 오브젝트의 컴포넌트로 붙어있는 스크립트 안의 함수(public)를 사용할 수 있다. 

실행

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 좀비 러너 게임' 카테고리의 다른 글

회전하기  (0) 2022.09.16
플레이어 체력  (0) 2022.09.16
코드에서 애니메이션 실행  (0) 2022.09.15
애니메이션  (0) 2022.09.15
애니메이터 컨트롤러  (0) 2022.09.15

코드에서 애니메이션 실행

타겟과의 거리가 NavMeshAgent의 stoppingDistance보다 작을 때 AttackTarget 메서드를 호출해 애니메이터 컨트롤러 파라미터인 attack 을 true로 만들고 클 때 ChaseTarget 메서드를 호출해 애니메이터 컨트롤러 파라미터인 attack 을 false로 만들고 move trigger를 킨다.

move가 켜지면 Move 애니메이션이 실행되고 attack이 true면 Attack 애니메이션이 실행된다.

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 좀비 러너 게임' 카테고리의 다른 글

플레이어 체력  (0) 2022.09.16
애니메이션 이벤트  (0) 2022.09.16
애니메이션  (0) 2022.09.15
애니메이터 컨트롤러  (0) 2022.09.15
총구 플래시  (0) 2022.09.15

애니메이션

프로젝트에서 우클릭 - Create - Animation으로 생성이 가능하다.

이후 생성한 애니메이션을 더블클릭하면 애니메이션 창이 뜬다.

이후 하이러키의 애니메이터와 애니메이션이 있는 게임 오브젝트를 선택하면 Add Property가 활성화 된다.

녹화버튼을 누르면 키 프레임 마다 씬에서 오브젝트를 조작한 것들이 적용된다.

Add Property를 눌러 수동으로도 추가가 가능하다.

스케일 늘렸다 줄이기

* Animation의 Loop Time을 키면 트랜지션으로 넘어갈 때까지 반복한다.

애니메이터

애니메이터 컴포넌트

애니메이터 컨트롤러를 통해 게임오브젝트에 애니메이션을 할당한다.

애니메이터 컨트롤러

애니메이션과 전환을 할당한다.(상태 머신)

애니메이션

특정 모션 - 시간에 따라 사물을 움직이거나 변환시킨다.

트랜지션

하나의 상태에서 다른 상태로 움직이는 방식의 규칙이다.

 

애니메이터 컴포넌트를 추가하고

프로젝트에 우클릭하여 Create - Animator Controller를 생성한다.

이전에 추가한 애니메이터 컴포넌트에 애니메이터 컨트롤러를 추가하고

애니메이터 컨트롤러에 애니메이션을 추가한다.

추가한 애니메이션을 우클릭하면 Make Transition으로 화살표 모양인 트랜지션을 만들어서 다른 애니메이션에 연결할 수 있는데

트랜지션은 한 애니메이션에서 다른 애니메이션으로 전환하는 설정(전환 시간, 조건)을 포함한다.

Has Exit Time을 키면 해당 시간동안 애니메이션을 실행하고 다음으로 넘어간다.

애니메이터에는 트랜지션의 Conditions(조건)과 관련있는 변수를 설정할 수 있는데 그것이 Parameters이다.

트랜지션을 클릭해 인스펙터의 Condition에 +버튼을 눌러 조건을 추가할 있다.

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 좀비 러너 게임' 카테고리의 다른 글

코드에서 애니메이션 실행  (0) 2022.09.15
애니메이션  (0) 2022.09.15
총구 플래시  (0) 2022.09.15
적 체력과 데미지  (0) 2022.09.15
총, 레이캐스팅  (0) 2022.09.15

총구 플래시

파티클 시스템에서 PlayOnAwake를 끄고 스크립트에서 Shoot 메서드가 불렸을 때 파티클 시스템을 Play를 하여 쏠 때마다 Play되게 하였다.

실행

 

사격 관통 효과 만들기

Raycast가 true면 CreateHitImpact를 호출하게 하였다.

CreateHitImpact에선 hit의 정보를 받아서 파티클을 생성하는데 hit.point(맞은 위치)와 Quaternion.LookRotation을 사용하여 맞은 위치에서의 회전 값 normal(바깥 방향)을 바라보고 생성되게 하였다.

그리곤 Destroy로 1초 뒤에 파괴되게 하였다.

발사 후

 

적 체력과 데미지

Raycast가 true이고 hit에서 가져온 EnemyHealth가 null이 아닐 때 EnemyHealth의 TakeDamage를 불러서 Enemy의 체력을 깎고 체력이 0보다 작을 시 Enemy의 게임 오브젝트를 파괴하는 코드다.

실행

 

플레이어 카메라 아래에 총 프리펩을 넣고 적절한 위치로 배치했다.

이후 Texture에셋에서 Type을 Sprite로 하고 Alpha Source를 From Gray Scale, Alpha Is Transparent로 하였다.

그리고 나서 따로 Canvas를 만들어 UI Image로 붙였다.

 

레이캐스팅

광선 경로에서 콜라이더 빛을 감지하기 위해 한 포인트에서 특정 방향으로 눈에 보이지 않는 광선을 쏘는 과정

- 특정 위치(origin)에서 특정 방향(Direction) 광선(Ray)을 쏴서 충돌체(Collision)을 맞춰 맞은 정보(RayCastHit)을 받는 것이다.

마우스 왼쪽 클릭을 했을 때 카메라의 위치로부터 카메라의 forward(정면)방향으로 range만큼 쏴서 맞으면 hit에 정보를 저장한다.

실행

사정거리

타겟(플레이어)과 적의 거리가 chaseRange보다 작을 때 적이 타겟을 쫓아가게 만든다.

실행

 

OnDrawGizmosSelected()

씬에서 캐릭터가 선택될 때 함수 안의 기즈모가 활성화 시키는 함수다.

선택 됐을 때

 

도발 공격

한번 범위에 잡히면 계속 추적하게하고 타겟과의 거리가 navMeshAgent의 stoppingDistance보다 작아지면 공격하게 그 이상이면 계속 따라가게 하였다.

실행

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 좀비 러너 게임' 카테고리의 다른 글

총구 플래시  (0) 2022.09.15
적 체력과 데미지  (0) 2022.09.15
총, 레이캐스팅  (0) 2022.09.15
NavMeshAgent  (0) 2022.09.15
좀비 러너 게임 디자인  (0) 2022.09.14

NavMeshAgent

NavMeshAgent는 NavMesh 주변을 항해하는 컴포넌트이다.

NavMeshAgent

NavMesh

에이전트들을 배치한 곳 어디든 적이 갈 수 있는 지 그 여부를 알 수 있도록 월드 기하에 배치된 것이다.

Window - Ai - Navigation

Navigation

Bake 버튼을 눌러보면 특정한 것에만 적용이 되는데 NavMesh는 정적 객체에만 적용될 수 있어서 그렇다.

이렇게 인스펙터에서 정적임을 체크해줘야 된다.

이후 Bake를 하면 Bake된 NavMesh가 바뀌어 있는 걸 볼 수 있다.

* 파란색 부분 - NavMesh (NavMeshAgent가 갈 수 있는 곳)

NavMesh

여기서 NavMesh간의 사이에 틈이 생겨 Agent들이 올라가거나 내려올 수 없는 경우가 생긴다.

Agent Radius를 늘리면 가장자리의 폭이 넓어지고

Agent Radius를 줄이면 가장자리의 폭이 좁아진다.

Agent Height는 머리가 사물에 부딪치게 할지 말지를 알려준다.

Max Slope는 경사로를 지나 갈 수 있는 최대 각도다.

0으로 했더니 안 구워졌다.

Step Height는 걸어갈 수 있는 높이다.

 

스크립트 이동

NavMeshAgent를 쓰기 위해 Using UnityEngine.AI를 적어주고 NavMeshAgent의 SetDestination 함수를 사용하였다.

실행

좀비 러너 게임 디자인

플레이어 경험

- 강렬함

핵심 메커닉

- 적을 쏘는 것

핵심 게임 루프

- 총알을 모으고, 적들을 쏘고, 레벨의 끝에 도달하는 것

게임 테마

- 어두움, 숲과 벙커, 좀비

우선순위

- 1인칭 카메라 시점

- 쏘기위한 레이캐스팅

- 움직이고 공격하는 적 AI

- 체력, 데미지 시스템

- 죽음, 게임오버

- 무기 스위칭

- 총알, 총알 픽업 (특정탄약)

- 플래시 라이트, 배터리 픽업

- Probuilder 지형

 

【한글자막】 C#과 Unity로 3D 게임 개발하기

https://www.udemy.com/course/best-3d-c-unity/

 

Video Game Development Using Unity: Code Games with C#

C# 기초부터 Unity 엔진 활용까지, 실제 게임 개발 프로젝트를 진행해보며 학습하는 3D 게임 개발의 모든 것

www.udemy.com

 

+ Recent posts