on
ai 주식투자
- Get link
- X
- Other Apps
목표: 본 장에서는 게임의 ‘움직임’을 구성하는 세 가지 핵심 기술 — 물리(Physics), 애니메이션(Animation), 타임라인(Timeline) — 을 다룹니다. 이 세 시스템은 단순히 시각적 효과가 아니라, 플레이어의 체감 경험과 서사적 연출을 완성하는 핵심 구성 요소입니다.
유니티의 물리 시스템은 NVIDIA PhysX 엔진을 기반으로 하며, 현실 세계의 물리 법칙(중력, 충돌, 관성)을 시뮬레이션합니다. 게임에서 “실감 나는 반응”을 만드는 가장 직접적인 도구입니다.
public class BallController : MonoBehaviour { public float force = 5f; private Rigidbody rb; void Start() { rb = GetComponent(); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { rb.AddForce(Vector3.up * force, ForceMode.Impulse); } } } 위 코드는 Rigidbody에 힘을 가하여 점프하는 간단한 예제입니다. ForceMode.Impulse는 순간적인 힘을 적용할 때 사용됩니다.
물리 연산은 FixedUpdate()에서 수행됩니다. 이는 프레임 속도와 관계없이 일정한 간격으로 호출되므로, 물리 안정성이 유지됩니다.
void FixedUpdate() { rb.AddForce(Vector3.forward * 10f); } void OnCollisionEnter(Collision col) { Debug.Log("충돌한 객체: " + col.gameObject.name); } 유니티의 애니메이션은 단순한 키프레임 시스템을 넘어서, Mecanim이라는 상태 기반 제어 시스템으로 구성됩니다. 이는 논리적 상태 전이(State Machine)를 통해 캐릭터의 모든 동작을 제어합니다.
Animator는 마치 “상태 그래프”처럼 구성되어 있으며, 각 동작을 조건에 따라 연결할 수 있습니다.
Animator Controller는 파라미터를 사용하여 상태 전이를 제어합니다. 예를 들어, “isJumping”이 true일 때 Idle → Jump로 전환되도록 설정할 수 있습니다.
public class PlayerAnimator : MonoBehaviour { private Animator anim; void Start() { anim = GetComponent(); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { anim.SetBool("isJumping", true); } } } Animator 파라미터는 SetBool(), SetTrigger(), SetFloat() 등의 함수로 제어할 수 있습니다.
여러 애니메이션을 부드럽게 전환하기 위해 Blend Tree를 사용합니다. 예를 들어, 속도에 따라 Idle → Walk → Run 애니메이션을 자연스럽게 보간할 수 있습니다.
Speed 파라미터를 기준으로 각 상태를 자연스럽게 연결하면 캐릭터의 움직임이 훨씬 부드러워집니다. Timeline은 유니티의 시네마틱 연출 도구로, 애니메이션, 오디오, 카메라, 파티클 등의 타이밍을 한눈에 관리할 수 있습니다. Unity의 Timeline은 “비주얼 연출용 스크립트”라고 생각하면 이해하기 쉽습니다.
using UnityEngine; using UnityEngine.Playables;
public class CutsceneTrigger : MonoBehaviour {
public PlayableDirector timeline;
void OnTriggerEnter(Collider other) {
if (other.CompareTag("Player")) {
timeline.Play();
}
}
}
이 코드는 플레이어가 특정 구역에 들어오면 컷신 타임라인을 자동 재생합니다. 즉, Timeline은 게임플레이의 자연스러운 흐름 안에 시네마틱을 삽입할 수 있게 합니다.
이 세 시스템은 각각 독립적으로 작동하지만, 정확한 타이밍과 상태 관리를 통해 유기적으로 결합할 수 있습니다.
예를 들어, “적이 플레이어를 발견 → 달려들기 → 컷신 전환 → 폭발 연출” 같은 시퀀스는 세 시스템의 조합으로 구현됩니다.
물리(Physics)는 세상의 법칙을, 애니메이션(Animation)은 생명감을, 타임라인(Timeline)은 시간을 설계합니다. 이 세 요소를 통합하는 순간, 게임은 단순한 반응형 시스템이 아니라 살아 있는 리듬으로 작동하게 됩니다.
즉, 좋은 움직임은 “보이는 것”이 아니라 “느껴지는 것”입니다.
Comments
Post a Comment