캐릭터 컨트롤러 Unity에서 강체를 푸시하는 기능을 추가하는 방법
이 튜토리얼에서는 캐릭터가 장면 내에서 강체를 밀 수 있도록 Unity FPS 컨트롤러 스크립트를 향상합니다. 아래 스크립트는 연결된 컨트롤러가 있는 한 모든 컨트롤러에서 작동해야 합니다. CharacterController 구성 요소). 이 스크립트는 플레이어가 개체 및 동적 환경과 상호 작용할 수 있도록 하여 게임에 사실적인 느낌을 더할 수 있습니다.
1단계: 새 스크립트 만들기
- Unity 프로젝트에 새로운 C# 스크립트를 만듭니다. "CharacterPushController"과 같은 이름을 지정할 수 있습니다.
2단계: 제공된 스크립트 복사
- 아래 코드를 새로 생성된 스크립트에 복사하세요. 'pushPower' 변수를 조정하여 푸시 강도를 제어할 수 있습니다. 또한 게임 논리에 따라 미는 힘을 적용하기 위한 조건을 사용자 정의할 수도 있습니다.
CharacterPushController.cs
using UnityEngine;
public class CharacterPushController : MonoBehaviour
{
// Adjust this variable to control the strength of the push
public float pushPower = 2.0f;
void OnControllerColliderHit(ControllerColliderHit hit)
{
Rigidbody body = hit.collider.attachedRigidbody;
// No rigidbody or kinematic rigidbody
if (body == null || body.isKinematic)
{
return;
}
// Avoid pushing objects below the character
if (hit.moveDirection.y < -0.3)
{
return;
}
// Calculate push direction from move direction,
// pushing only to the sides, not up and down
Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
// Apply the push
body.velocity = pushDir * pushPower;
}
}
3단계: 스크립트 연결
4단계: 테스트
- 장면을 재생하고 새로 생성된 스크립트를 사용하여 강체를 밀어내는 캐릭터 컨트롤러의 능력을 테스트하세요.
5단계: 조정
- 게임에서 원하는 동작을 달성하려면 를 'pushPower'로 조정하세요.