Контролер персонажів. Як додати можливість штовхати жорсткі тіла в Unity
У цьому підручнику ми покращимо сценарій Unity FPS Controller, щоб персонаж міг штовхати тверді тіла в сцені (наведений нижче сценарій має працювати з будь-яким контролером, за умови, що до нього приєднано компонент CharacterController). Цей сценарій може додати вашій грі реалістичності, дозволяючи гравцям взаємодіяти з об’єктами та динамічним середовищем.
Крок 1: Створіть новий сценарій
- Створіть новий сценарій C# у своєму проекті Unity. Ви можете назвати це приблизно "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: Приєднайте сценарій
- Прикріпіть сценарій "CharacterPushController" до GameObject за допомогою компонента CharacterController.
Крок 4: Тест
- Розіграйте сцену і перевірте здатність контролера персонажа штовхати тверді тіла за допомогою щойно створеного сценарію.
Крок 5: Налаштуйте
- Налаштуйте 'pushPower', щоб досягти бажаної поведінки у вашій грі.