Menu
CoddyTech

플레이어 추격하기

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 50번째.

플레이어를 쫓는 적에게는 Rigidbody가 필요합니다. 그래야 벽이 적을 멈추게 하고, 적이 다른 대상을 밀거나 다른 대상에게 밀릴 수 있습니다. 추적 동작 자체는 플레이어를 향하는 속도이며, 물리 업데이트 단계마다 한 번 설정합니다. 이 좀비는 player 슬롯에 있는 대상을 향해 걸어갑니다:

[SerializeField] private Transform player;
[SerializeField] private float speed = 2.5f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    Vector3 toPlayer = player.position - rb.position;
    toPlayer.y = 0f;
    Vector3 dir = toPlayer.normalized;
    rb.linearVelocity = new Vector3(dir.x * speed, rb.linearVelocity.y, dir.z * speed);
}

player.position - rb.position은 좀비에서 플레이어를 향하는 방향을 나타냅니다. 플레이어가 더 높거나 낮은 곳에 서 있어도 좀비가 평평한 지면을 걷도록 y를 0으로 설정하고, normalized는 벡터의 길이를 1로 만들어 주므로 플레이어가 2단위 떨어져 있든 20단위 떨어져 있든 좀비는 speed의 속도로 걷습니다. 새 속도는 기존 y 속도를 유지하므로 중력이 계속 좀비를 계단 아래로 끌어당깁니다. Rigidbody에서 회전 고정을 켜 두었으므로 좀비는 걸을 때 넘어지지 않습니다.

속도를 설정하면 즉시 출발하고 방향을 바꾸는 적이 만들어집니다. 무거운 적은 대신 같은 FixedUpdate에서 AddForce를 사용해 밀 수 있습니다. 그러면 속도가 점차 붙고, 관성을 유지하며, 플레이어가 옆으로 비키면 지나쳐 갑니다. 추적자의 Transform을 움직이지 마세요. 그러면 다른 곳과 마찬가지로 벽 안에 들어갈 수 있고, 이후 물리 엔진이 적을 밀어내야만 합니다.

challenge icon

챌린지

중급

바위가 플레이어를 따라 굴러갑니다. Rigidbody가 있는 공인 바위에 Boulder 스크립트를 작성하세요. Inspector에서 player(Player)와 force(6)를 지정합니다. Player 스크립트는 준비되어 있습니다. 화살표 키로 플레이어를 움직일 수 있습니다.

  • 매 물리 업데이트마다 플레이어가 가까이 있든 멀리 있든 AddForce를 사용해 force만큼의 힘으로 바위를 플레이어 쪽으로 밀어주세요.
  • 플레이어가 턱 위에 서 있더라도 위아래 방향 성분 없이 지면을 따라 밀어주세요.
  • Transform을 움직이거나 회전을 고정하지 마세요. 마찰로 바위가 굴러갑니다.

Play를 누르고 바위 주위를 빙빙 돈 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Boulder : MonoBehaviour
{
    [SerializeField] private Transform player;
    [SerializeField] private float force = 6f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // 바위를 지면을 따라 플레이어 쪽으로 밀어줍니다
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

물리와 게임플레이의 모든 레슨