728x90
플레이어의 체력을 구현해보자
PlayerHealth.cs 생성 PlayerCharacter에 할당
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // UI 관련 코드
// 플레이어 캐릭터의 생명체로서의 동작을 담당
public class PlayerHealth : LivingEntity
{
public Slider healthSlider; // 체력을 표시할 UI 슬라이더
public AudioClip deathClip; // 사망 소리
public AudioClip hitClip; // 피격 소리
public AudioClip itemPickupClip; // 아이템 습득 소리
private AudioSource playerAudioPlayer; // 플레이어 소리 재생기
private Animator playerAnimator; // 플레이어의 애니메이터
private PlayerMovement playerMovement; // 플레이어 움직임 컴포넌트
private PlayerShooter playerShooter; // 플레이어 슈터 컴포넌트
private void Awake() {
// 사용할 컴포넌트 가져오기
playerAnimator = GetComponent<Animator>();
playerAudioPlayer = GetComponent<AudioSource>();
playerMovement = GetComponent<PlayerMovement>();
playerShooter = GetComponent<PlayerShooter>();
}
protected override void OnEnable() {
// LivingEntity의 OnEnable() 실행 (상태 초기화)
base.OnEnable();
}
// 체력 회복
public override void RestoreHealth(float newHealth) {
// LivingEntity의 RestoreHealth() 실행 (체력 증가)
base.RestoreHealth(newHealth);
}
// 대미지 처리
public override void OnDamage(float damage, Vector3 hitPoint, Vector3 hitDirection) {
// LivingEntity의 OnDamage() 실행 (대미지 적용)
base.OnDamage(damage, hitPoint, hitDirection);
}
// 사망 처리
public override void Die()
{
// LivingEntity의 Die() 실행 (사망 적용)
base.Die();
}
private void OnTriggerEnter(Collider other) {
// 아이템과 충돌한 경우 해당 아이템을 사용하는 처리
}
}
할당해줌
경로를 자동으로 계산하는 인공지능 좀비를 구현을 위해 유니티 내비게이션 시스템을 써보자
- 내비게이션 시스템
- 한 위치에서 다른 위치로의 경로(최적의 이동 경로)를 계산
- 실시간으로 장애물을 피하며 이동하는 인공지능
- 정적 게임 오브젝트(static)를 대상으로 생성됨
- 게임 플레이 도중에 실시간으로 생성할 수 없음. 미리 구워서(bake) 생성
- 구성 요소
- 내비메시(NavMash) : 에이전트가 걸어 다닐 수 있는 표면
- 내비메시 에이전트(NavMesh Agent) : 내비메시 위에서 경로를 계산하고 이동하는 캐릭터 또는 컴포넌트
(학습된 모델이 적용될 대상) - 내비메시 장애물(NavMesh Obstacle) : 에이전트의 경로를 막는 장애물
- 오프메시 링크(Off Mesh Link) : 끊어진 내비메시 영역 사이를 잇는 연결 지점(뛰어넘을 수 있는 울타리나 타고 올라갈 수 있는 담벼락을 구현하는 데 사용)
Window - AI - Navigation
Agent Radius : 에이전트의 반지름
Agent Height : 에이전트의 키
에이전트의 반지름과 키를 늘리면 내비메시 크기 작게 구워지고 게임 도중 인공지능이 다닐 수 있는 영역이 좁아짐
키와 반지름을 줄이면 내비메시 넓어지지만 이동해선 안 되는 너무 좁고 낮은 장소까지 에이전트가 이동할 수도 있음
설정하고 Bake를 눌러주면 됨
구워진 내비메시는 씬 창에 파란색으로 표시된다
좀비 게임 오브젝트를 준비하자
애니메이터, 콜라이더, 오디오 소스, 인공지능, 파티클 자식으로 추가
애니메이터를 추가할 때 Apply Root Motion을 체크 해제해줌
- 루트 모션 적용 Apply Root Motion
- 게임 오브젝트의 위치와 회전을 애니메이션이 제어하도록 허용하는 것
- 앞으로 걷는 애니메이션이 있다면 애니메이션을 적용하는 동안 게임 오브젝트의 실제 위치가 이전보다 앞쪽으로 변경됨
루트 모션 적용 사용하지 않으면 제자리 걷는 애니메이션이 적용된다 - 루트 모션 적용을 사용하면 아티스트의 의도를 반영한 움직임을 만들 수 있지만 스크립트로 움직임을 제어하기가 힘듦
Nav Mesh Agent
'Hello, World! > Unity' 카테고리의 다른 글
유니티 3D 좀비 서바이벌 게임 만들자 (17) (0) | 2022.06.01 |
---|---|
유니티 3D 좀비 서바이벌 게임 만들자 (16) (0) | 2022.06.01 |
유니티 3D 좀비 서바이벌 게임 만들자 (14) (0) | 2022.05.30 |
유니티에서 VSCode를 쓰자 (0) | 2022.05.30 |
유니티 파티클 시스템 (골드메탈님 따라하기) (0) | 2022.05.18 |
댓글