Kontroler postaci Jak dodać możliwość pchania sztywnych ciał w jedności
W tym samouczku ulepszymy skrypt Unity Kontroler FPS, aby umożliwić postaci przesuwanie ciał sztywnych w obrębie sceny (skrypt poniżej powinien działać z dowolnym kontrolerem, o ile ma on dołączony komponent CharacterController). Ten skrypt może dodać realistycznego akcentu do Twojej gry, umożliwiając graczom interakcję z obiektami i dynamicznymi środowiskami.
Krok 1: Utwórz nowy skrypt
- Utwórz nowy skrypt C# w swoim projekcie Unity. Możesz to nazwać na przykład "CharacterPushController".
Krok 2: Skopiuj dostarczony skrypt
- Skopiuj poniższy kod do nowo utworzonego skryptu. Możesz dostosować zmienną 'pushPower', aby kontrolować siłę pchnięcia. Dodatkowo możesz dostosować warunki stosowania siły pchania w oparciu o logikę gry.
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;
}
}
Krok 3: Dołącz skrypt
- Dołącz skrypt "CharacterPushController" do obiektu GameObject za pomocą komponentu CharacterController.
Krok 4: Przetestuj
- Zagraj w tę scenę i przetestuj zdolność kontrolera postaci do pchania ciał sztywnych za pomocą nowo utworzonego skryptu.
Krok 5: Dostosuj
- Dostosuj 'pushPower', aby uzyskać pożądane zachowanie w grze.