【Unity】氷の上を滑るサンプル

Unityで氷の上を滑るサンプルを実装する方法を説明します。以下の手順に従って、Unityでプロジェクトを作成し、氷の上を滑る動作を作成することができます。

  1. Unityの新規プロジェクトを作成します。
  2. Hierarchyビューで新しいGameObjectを作成し、名前を「Player」とします。
  3. Playerオブジェクトに、Capsule ColliderとRigidbodyを追加します。
  4. Playerオブジェクトに、Character Controllerを追加します。Character Controllerは、キャラクターの動作を制御するコンポーネントです。
  5. Hierarchyビューで新しいGameObjectを作成し、名前を「Ice」とします。
  6. Iceオブジェクトに、Box Colliderを追加します。Box Colliderは、衝突判定を行うためのコンポーネントです。
  7. Iceオブジェクトに、Physics Materialを追加します。Physics Materialは、物体同士の摩擦係数を制御するためのコンポーネントです。IceオブジェクトのPhysics MaterialのDynamic Frictionを0に設定します。これにより、IceオブジェクトとPlayerオブジェクトの間の摩擦が低くなり、滑りやすくなります。
  8. PlayerオブジェクトのCharacter ControllerのMoveコマンドを使用して、Iceオブジェクトの上を滑るようにプログラムします。以下のようなスクリプトを作成します。
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 10f;
    private CharacterController controller;
    private Vector3 moveDirection = Vector3.zero;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 inputDirection = new Vector3(horizontal, 0, vertical);
        inputDirection = transform.TransformDirection(inputDirection);
        moveDirection.x = inputDirection.x * speed;
        moveDirection.z = inputDirection.z * speed;
        controller.Move(moveDirection * Time.deltaTime);
    }

    void OnControllerColliderHit(ControllerColliderHit hit)
    {
        if (hit.gameObject.tag == "Ice")
        {
            moveDirection = Vector3.Lerp(moveDirection, hit.normal * speed, Time.deltaTime);
        }
    }
}
  1. Iceオブジェクトに「Ice」のタグを追加します。Iceオブジェクトに衝突した場合に、OnControllerColliderHitメソッドが呼び出されます。このメソッドでは、Iceオブジェクトの法線ベクトルを使用して、滑る方向を計算し、滑りやすさを表現します。

以上の手順で、Unityで氷の上を滑るサンプルを実装することができます。プレイヤーがIceオブジェクトの上を移動すると、摩擦係数が低くなるため、滑るようになります。また、Iceオブジェクトの形状や摩擦係数を変更することで、滑りやすさを調整することもできます。

このサンプルを拡張する場合、以下のようなアイデアがあります。

  • ジャンプ機能の追加:プレイヤーが氷の上でジャンプすると、より遠くに飛べるようになります。
  • アイテムの追加:氷の上にアイテムを配置し、アイテムを取得するとスコアが増えるようにします。
  • 障害物の追加:氷の上に障害物を配置し、プレイヤーが障害物に衝突するとゲームオーバーになるようにします。

以上のように、様々なアイデアを追加することで、より面白いゲームを作ることができます。

Unity

Posted by hidepon