아레나
Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 71개 중 59번째.
이 장에서는 Arena Escape를 만듭니다. 벽으로 둘러싸인 경기장에서 사냥꾼들을 피하는 동안 사냥꾼 무리가 몰려오고, 세 번 맞으면 게임이 끝나며, 마지막 무리가 사라지면 출구가 열립니다. 게임은 시작부터 프로젝트에 있는 다섯 개 스크립트로 구성됩니다: Player, Hunter, Spawner, Health, Exit. 마지막 네 스크립트는 현재 비어 있으며, 각 수업에서 하나씩 채워 넣습니다.
플레이어는 속도를 직접 설정하는 대신 힘을 받아 움직이므로, 사냥꾼의 넉백이 이동을 지워 버리는 대신 이동에 더해집니다. 밀기만 하면 계속 빨라지므로, linearDamping이 매 단계마다 속도의 일부를 줄입니다. 일정하게 밀면 최고 속도는 가속도를 감쇠로 나눈 값 정도로 안정됩니다. 이 호버 썰매는 Space를 누르고 있는 동안 앞으로 나아갑니다:
[SerializeField] private float accel = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.linearDamping = 2f;
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(transform.forward * accel, ForceMode.Acceleration);
}
}가속도가 12이고 감쇠가 2이면 썰매는 초당 약 6유닛에서 최고 속도에 도달하며, Space에서 손을 떼면 감쇠가 썰매를 멈춰 세워 계속 미끄러지지 않게 합니다. ForceMode.Acceleration은 질량을 무시하므로 무거운 썰매도 가벼운 썰매와 정확히 똑같이 빨라집니다. 썰매의 콜라이더에는 마찰이 없는 PhysicsMaterial이 적용되어 있습니다. 감쇠에 바닥 마찰까지 더해지면 최고 속도는 더 낮아집니다.
챌린지
중급Arena Escape를 시작하세요. 플레이어가 힘을 받아 미끄러집니다.
Start()에서GetComponent줄 다음에rb.linearDamping = accel / topSpeed;를 설정하여topSpeed에 가까워지면 속도가 일정해지도록 하세요.FixedUpdate()에서new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"))를 만드세요.- 해당 값의
normalized에accel을 곱한 결과를ForceMode.Acceleration과 함께rb.AddForce에 전달하세요.
‘플레이’를 눌러 아레나를 돌아다니며 미끄러져 보세요. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField] private float accel = 18f;
[SerializeField] private float topSpeed = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// 댐핑을 설정한 다음 방향키로 플레이어를 밀어줍니다
}
}
물리와 게임플레이의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드