Unity에서 파쿠르 시스템 구현
움직임을 사용하여 신체적 장애물을 극복하는 데 초점을 맞춘 훈련 분야인 파쿠르의 개념은 비디오 게임에서 엄청난 인기를 얻었으며 플레이어에게 상호작용적이고 매력적인 게임을 제공합니다. 환경. Unity에 이 시스템을 구현하면 게임플레이 경험이 향상될 수 있습니다. 이 튜토리얼은 벽 달리기와 높이뛰기에 초점을 맞춰 Unity에서 기본 파쿠르 시스템을 설정하는 과정을 안내합니다.
필요한 자산
- 기본 캐릭터 컨트롤러: 수정을 위한 기본 클래스로 3인칭 카메라 Unity의 플레이어 컨트롤러를 사용하겠습니다.
- 파쿠르 애니메이션: 벽 달리기, 높이뛰기 등
1. 장면 설정
- 벽에는 "Wall"을 사용하고, 뛰어넘을 수 있는 장애물에는 "Obstacle"을 사용하여 환경에 벽과 장애물에 적절하게 태그가 지정되어 있는지 확인하세요.
2. Wall Running을 위한 'SC_TPSController' 스크립트 수정
2.1. 벽 감지:
- 이 방법은 레이캐스팅을 사용하여 캐릭터가 벽 옆에 있는지 확인합니다.
bool IsBesideWall(Vector3 direction)
{
RaycastHit hit;
if (Physics.Raycast(transform.position, direction, out hit, 1f))
{
if (hit.transform.CompareTag("Wall"))
{
return true;
}
}
return false;
}
2.2. 벽 달리기
- 이 코루틴은 벽 달리기를 처리합니다.
public float wallRunTime = 2f; // Duration of the wall run.
IEnumerator WallRun(Vector3 direction)
{
float startTime = Time.time;
canMove = false; // Disable regular movement during wall run.
while (Time.time - startTime < wallRunTime)
{
characterController.Move(direction * speed * Time.deltaTime);
yield return null;
}
canMove = true; // Enable regular movement after wall run.
}
- 'Update()' 방법으로 벽 실행을 통합합니다.
// Wall Run
if (IsBesideWall(transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
StartCoroutine(WallRun(transform.right));
}
else if (IsBesideWall(-transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
StartCoroutine(WallRun(-transform.right));
}
3. Vaulting을 위해 'SC_TPSController' 수정
3.1. 장애물 감지
- 캐릭터 앞에 뛰어넘을 수 있는 장애물이 있는지 확인하세요.
bool IsObstacleInFront()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 1.5f))
{
if (hit.transform.CompareTag("Obstacle"))
{
return true;
}
}
return false;
}
3.2. 뜀
- 보관 방법을 추가합니다.
void Vault()
{
canMove = false; // Disable regular movement during vaulting.
// Translate the player over the obstacle.
Vector3 vaultMovement = (Vector3.up + transform.forward) * speed * Time.deltaTime;
characterController.Move(vaultMovement);
canMove = true; // Enable regular movement after vaulting.
}
- 'Update()' 방법에 보관을 통합합니다.
// Vaulting
if (IsObstacleInFront() && Input.GetButton("Jump") && canMove && characterController.isGrounded)
{
Vault();
}
결론
이러한 수정으로 인해 기존 3인칭 플레이어 컨트롤러에 벽 달리기 및 뛰어넘기 기능이 도입되었습니다. 다양한 시나리오에서 이러한 새로운 움직임을 테스트하여 의도한 대로 작동하는지 확인하세요. 게임의 특정 환경이나 원하는 파쿠르 메커니즘에 따라 조정이 필요할 수 있습니다.