キャラクター コントローラー 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: スクリプトを添付する

  • に "CharacterPushController" スクリプトを CharacterController コンポーネントを使用してゲームオブジェクトにアタッチします。

ステップ 4: テスト

  • シーンを再生し、新しく作成したスクリプトを使用してキャラクタ コントローラがリジッドボディを押す能力をテストします。

ステップ5: 調整する

  • ゲームで望ましい動作を実現するには、 と 'pushPower' を調整します。