오늘은 중간 발표가 있는 날이여서 개발시간이 부족하여 잠시 돌아보는 시간을 가졌다.
설명: 네비게이션 시스템은 AI 캐릭터가 씬 내에서 경로를 찾고 이동할 수 있도록 도와줍니다.
주요 컴포넌트:
NavMesh: 경로 탐색을 위한 네비게이션 메쉬입니다. 씬 내에서 걷거나 이동할 수 있는 영역을 정의합니다.
NavMeshAgent: 네비게이션 메쉬를 사용하여 경로를 찾고 이동하는 AI 에이전트입니다.
NavMeshObstacle: 네비게이션 메쉬의 경로를 막는 장애물입니다.
기본 사용법:
NavMesh 생성:
씬에 네비게이션 메쉬를 생성하려면, Window > AI > Navigation 창을 엽니다.
메쉬를 만들기 원하는 지형이나 오브젝트를 선택한 후, Bake 버튼을 눌러 네비게이션 메쉬를 생성합니다.
NavMeshAgent 설정:
이동할 AI 캐릭터에 NavMeshAgent 컴포넌트를 추가합니다.
이동 속도, 회전 속도 등 다양한 속성을 설정할 수 있습니다.
스크립트 작성:
AI 캐릭터를 목표 지점으로 이동시키는 스크립트를 작성합니다.
using UnityEngine;
using UnityEngine.AI;
public class EnemyController : MonoBehaviour
{
public Transform target;
private NavMeshAgent agent;
void Start()
{
agent = GetComponent<NavMeshAgent>();
agent.SetDestination(target.position);
}
}

설명: 유니티의 애니메이션 시스템은 게임 오브젝트의 움직임과 상태 변화를 정의합니다.
주요 컴포넌트:
Animator: 애니메이션 상태를 제어하는 컴포넌트입니다. 애니메이션 상태 머신을 사용하여 다양한 상태 전환을 관리합니다.
Animation Clip: 개별 애니메이션 동작을 정의하는 클립입니다.
Animation Controller: 애니메이션 클립과 상태 전환을 관리하는 컨트롤러입니다.
기본 사용법:
애니메이션 클립 생성:
모델이나 캐릭터의 애니메이션 클립을 생성하고 설정합니다.
애니메이션 컨트롤러 설정:
애니메이션 컨트롤러를 생성하고, 애니메이션 클립을 추가하여 상태 머신을 구성합니다.
Animator 설정:
애니메이션 컨트롤러를 사용하는 Animator 컴포넌트를 캐릭터에 추가합니다.
스크립트 작성:
스크립트를 통해 애니메이션을 제어합니다.
using UnityEngine;
public class AnimationController : MonoBehaviour
{
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("Jump");
}
}
}

설명: 인터페이스는 클래스나 구조체가 특정 메서드, 속성, 이벤트 등을 구현하도록 강제하는 계약입니다.
기본 사용법:
인터페이스 정의:
interface 키워드를 사용하여 인터페이스를 정의합니다.
인터페이스 구현:
클래스나 구조체에서 인터페이스를 구현합니다.
public interface IDamageable
{
void TakeDamage(int amount);
}
public class Player : MonoBehaviour, IDamageable
{
public int health = 100;
public void TakeDamage(int amount)
{
health -= amount;
if (health <= 0)
{
Debug.Log("Player is dead");
}
}
}

설명: 추상 클래스는 다른 클래스들이 상속받아야 하며, 일부 메서드를 반드시 구현하도록 강제하는 클래스입니다. 구체적인 인스턴스를 만들 수 없습니다.
기본 사용법:
추상 클래스 정의:
abstract 키워드를 사용하여 추상 클래스를 정의합니다.
추상 메서드는 구현하지 않고 선언만 합니다.
추상 클래스 상속:
다른 클래스에서 추상 클래스를 상속받고 추상 메서드를 구현합니다.
public abstract class Animal
{
public abstract void Speak();
public void Sleep()
{
Debug.Log("Sleeping...");
}
}
public class Dog : Animal
{
public override void Speak()
{
Debug.Log("Woof!");
}
}
public class Cat : Animal
{
public override void Speak()
{
Debug.Log("Meow!");
}
}

유니티의 네비게이션, 애니메이션, 인터페이스, 추상 클래스는 게임 개발에서 중요한 역할을 합니다. 네비게이션은 AI 캐릭터의 경로 찾기를 관리하고, 애니메이션은 캐릭터의 움직임을 제어합니다. 인터페이스와 추상 클래스는 코드 구조를 명확히 하고, 재사용성과 유지보수성을 높입니다. 각 기능의 기본 사용법과 예제를 통해 유니티에서 자주 사용하는 기술들을 이해하고 활용할 수 있습니다.