배운 것들

마스크

마스크를 이용해 인벤토리UI를 만드는 것을 배웠다.

슬롯 내의 배경은 Filled로 했다.

각 슬롯은 Grid Layout Group을 사용하여 정렬했다.

 

스크립터블 오브젝트

스크립터블 오브젝트는 데이터 컨테이너의 역할을 하는 오브젝트처럼 사용할 수 있다.

프로젝트 창에 우클릭하여 생성 가능하다.

스크립터블 오브젝트는 컴포넌트에 붙일 수 없다. (MonoBehavior를 상속받지 않기 때문)

이런 식으로 간접적으로 참조는 가능하다.

 

 

플레이 영상

 

 

한 주 후기

 이번 주는 수업을 들으면서 토이 프로젝트를 만드는 시간과 발표하는 시간이 있었다. 스크립터블 오브젝트라는 개념을 처음 배웠는데 외국 유투브 영상에서만 아 이런식으로 사용하는구나라고 봤었지 실제로 사용해보는 것은 처음이라 재미있었다. 나중에 RPG 프로젝트를 할 때 장비에 적용해보는 것도 고민해봐야겠다.

 좀 어려웠던 부분은 스크립터블 오브젝트를 쓰면서 습득한 순서대로 키보드 숫자에 맞게 무기를 스왑하는 기능을 만들었는데 처음에 초기 설정값을 맞추는 게 쉽지 않았다. enum타입과 int 배열로 순서를 맞춰서 해결했는데 잘 동작하였다.

 발표는 첫 번째로 하게 되었는데 항상 하고나면 별 거 아니지만 이전에 긴장하게 되는 것 같다. 여러 번 발표하면서 익숙해지는 게 제일 좋은 방법이라고 생각이 들었다.

 다음 번에는 하나의 프로젝트를 만들 때 끝까지 완성할 수 있도록 해봐야겠다. 다음 주도 파이팅!

 

 

유데미코리아 바로가기

본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.

게임오버 UI

TextMeshPro

Hierachy창에 우클릭하여 UI의 TextMeshPro를 사용할 수 있는데

Essential들을 모두 다운 받고 사용할 폰트를 Font Asset Creater로 source Font File에 집어넣어서 만들어주고

텍스트에 적용해주면 된다.

UI 버튼 연결

이후 버튼에 OnClick부분에 Event를 생성하여 필요한 함수를 연결해준다.(public이어야 함)

DeathHandler라는 스크립트를 만들어 플레이어에 붙이고 시작할 때 게임오버 UI를 꺼준다.

이후 HandleDeath라는 메서드를 통해 게임오버 UI를 켜주고 게임을 일지정지하고 마우스를 켜준다.(다른 것과 충돌하는 걸 방지하기 위해 일시정지, 마우스는 안보여서 키게 했음)

위 메서드를 플레이어가 사망시 불러준다.

그리고 SceneLoader 스크립트에서 씬 로드를 하면서 정지된 시간을 다시 흘러가게 한다.

 

회전하기

벡터에는 방향과 거리가 포함되는데 여기선 회전이므로 방향이 중요하다.

먼저 방향을 정해주기 위해 타겟 포지션에서 현재 포지션을 빼주고 normalized 시켰다. (현재 포지션 -> 타겟 포지션 방향)

Quaternion.LookRotation(Vector3)을 그냥 transform.rotation에 넣으면 바로 그 방향으로 이동되므로 Quaternion.Slerp를 사용하여 부드럽게 이동하게 했다.

EngageTarget에서 불렀는데 이는 적이 플레이어를 발견한 후 회전도 같이 동기화되게 시켜준 것이다. 

실행

 

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

BroadcastMessage  (0) 2022.09.19
게임오버 UI  (0) 2022.09.16
플레이어 체력  (0) 2022.09.16
애니메이션 이벤트  (0) 2022.09.16
코드에서 애니메이션 실행  (0) 2022.09.15

플레이어 체력

플레이어를 드래그 앤 드롭을 사용하여 인스턴스로 옮기는 것은 프리펩에서 불가능하고 씬마다 인스턴스에서 옮겨줘야 한다. => 비효율적

그래서 PlayerHealth를 FindObjectOfType으로 받아 애니메이션 Event에 등록된 함수인 AttackHitEvent에서 target으로 받은 PlayerHealth의 TakeDamage를 호출하는 방식을 사용하였다.

그러면 적이 공격 이벤트시 플레이어의 피가 닳게 된다.

실행

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

게임오버 UI  (0) 2022.09.16
회전하기  (0) 2022.09.16
애니메이션 이벤트  (0) 2022.09.16
코드에서 애니메이션 실행  (0) 2022.09.15
애니메이션  (0) 2022.09.15

애니메이션 이벤트

애니메이션 키 프레임 위에 우클릭을 해보면 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의 게임 오브젝트를 파괴하는 코드다.

실행

 

+ Recent posts