Controlador de personagem: como adicionar capacidade de empurrar corpos rígidos no Unity
Neste tutorial, vamos aprimorar o script Unity FPS Controller para permitir que o personagem empurre corpos rígidos dentro da cena (o script abaixo deve funcionar com qualquer controlador, desde que tenha um Componente CharacterController). Este script pode adicionar um toque realista ao seu jogo, permitindo que os jogadores interajam com objetos e ambientes dinâmicos.
Etapa 1: crie um novo script
- Crie um novo script C# em seu projeto Unity. Você pode nomeá-lo como "CharacterPushController".
Etapa 2: copie o script fornecido
- Copie o código abaixo no script recém-criado. Você pode ajustar a variável 'pushPower' para controlar a força do empurrão. Além disso, você pode personalizar as condições para aplicar a força de impulso com base na lógica do seu jogo.
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;
}
}
Etapa 3: anexe o script
- Anexe o script "CharacterPushController" ao GameObject com o componente CharacterController.
Etapa 4: teste
- Jogue a cena e teste a capacidade do controlador do personagem de empurrar corpos rígidos com a ajuda do script recém-criado.
Etapa 5: ajustar
- Ajuste o 'pushPower' para obter o comportamento desejado em seu jogo.