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

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.
Artigos sugeridos
Como adicionar suporte de plataforma móvel ao controlador de personagem no Unity
Como fazer o controle do guindaste no Unity
Tutorial de lanterna para Unity
Controlador de jogador RTS e MOBA para Unity
Controlador de helicóptero para Unity
Adicionando agachamento ao FPS Player no Unity
Criando movimento de jogadores no Unity