UnityUnityメモ

Unityで簡単に球体を転がす!初心者向けスクリプト解説

Unity

1. はじめに

Unityを使ってゲームを作るとき、物理演算を取り入れると、よりリアルで動きのあるゲームを作れるようになります。その中でも「球体を転がす」というのは、Unity初心者にとって理想的な練習テーマのひとつです。

このチュートリアルでは、簡単な操作で球体(Sphereオブジェクト)を転がす方法を解説します。具体的には、Rigidbodyコンポーネントを使って物理演算を導入し、C#スクリプトで球体の動きを制御します。


「難しそう…」と思うかもしれませんが、安心してください!
Unity初心者でも分かりやすいように、一つひとつの手順を丁寧に解説していきますので、この記事を読みながら一緒に進めていきましょう。
記事を最後まで読むと、自分でスクリプトを書き、キーボードで球体を転がす仕組みを作れるようになります!

さあ、さっそく始めましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. シーンの準備

Unityで球体(Sphereオブジェクト)を操作するには、まずシーンに必要なオブジェクトを配置する必要があります。このセクションでは、Sphereオブジェクトや地面を作成し、Rigidbodyコンポーネントを追加する方法を解説します。


1. Sphereオブジェクトの追加

  1. ヒエラルキーウィンドウを右クリックします。
  2. 表示されるメニューから「3D Object」→「Sphere」を選択します。
  3. シーンに球体(Sphere)が追加されます。
  4. 追加されたSphereオブジェクトを選択し、名前を「Player」に変更しましょう。名前を変更することで、わかりやすく管理できます。補足: 名前を変更するには、ヒエラルキーでSphereを選択した状態でEnterキーを押して編集モードに入るか、インスペクターウィンドウ上部の名前を変更してください。

2. 地面(Plane)の作成

  1. ヒエラルキーウィンドウを右クリックします。
  2. メニューから「3D Object」→「Plane」を選択します。
  3. シーンに地面が作成されます。これで、球体を転がすための土台が準備できました。ポイント: Planeのサイズや位置を調整したい場合は、インスペクターウィンドウのTransform設定で「Scale」や「Position」の値を変更してください。

3. Rigidbodyコンポーネントの追加

  1. ヒエラルキーで「Player」と名前を付けたSphereオブジェクトを選択します。
  2. インスペクターウィンドウ内にある「Add Component」ボタンをクリックします。
  3. 検索バーに「Rigidbody」と入力し、表示されたRigidbodyをクリックして追加します。Rigidbodyとは?
    Rigidbodyコンポーネントを追加することで、Unityの物理演算を利用できるようになります。このコンポーネントがないと、球体は力を受けても動かなくなります。
  4. 追加後、デフォルト設定のままで問題ありませんが、「Mass(質量)」や「Drag(抵抗値)」などを調整することで動き方を細かく設定できます。

これでシーンの準備は完了です!次はスクリプトを作成して球体を動かす方法を学んでいきましょう。



3. スクリプトの作成と設定

Unityで球体を動かすには、C#スクリプトを作成して操作方法を記述する必要があります。ここではスクリプトの作成方法とSphereオブジェクトへの設定手順を詳しく説明します。

スクリプトを作成する

まず、操作用のスクリプトを作成しましょう。

  1. プロジェクトウィンドウを開く
    Unityエディタの下部にある「Project」タブを開きます。ここはプロジェクト内のファイルやフォルダを管理する場所です。
  2. 新しいスクリプトを作成
    プロジェクトウィンドウの空白部分を右クリックして、
    「Create」→「C# Script」を選択します。
  3. スクリプトに名前を付ける
    作成したスクリプトに「SphereMove」と名前を付けます(スペースや特殊記号は使用せず、わかりやすい名前にしましょう)。

スクリプトにコードを記述する

次に、作成したスクリプトをダブルクリックして開き、以下のコードを貼り付けます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SphereMove : MonoBehaviour
{
    private Rigidbody rb;

    void Start()
    {
        // Rigidbodyコンポーネントを取得
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        // プレイヤーの入力を取得
        float dx = Input.GetAxis("Horizontal");
        float dz = Input.GetAxis("Vertical");

        // 入力に基づいて移動方向を計算
        var movement = new Vector3(dx, 0, dz);

        // 球体に力を加える
        rb.AddForce(movement * 3.0f);
    }
}

コードの解説

  • rb = GetComponent<Rigidbody>();
    Sphereオブジェクトに付いているRigidbody(物理演算用コンポーネント)を取得します。この部分がないと球体に力を加えることができません。
  • Input.GetAxis("Horizontal")Input.GetAxis("Vertical")
    キーボードの入力(矢印キーやWASDキー)を取得します。これを使って球体の動きを制御します。
  • AddForce メソッド
    Rigidbodyに力を加えることで球体を動かします。数値 3.0f は移動速度を調整するための係数です。

スクリプトをSphereにアタッチする

スクリプトをSphereオブジェクトに適用していきます。

  1. ヒエラルキーウィンドウでSphereオブジェクトを選択
    「Player」と名前を付けたSphereオブジェクトをクリックして選択します。
  2. スクリプトをアタッチ
    プロジェクトウィンドウで「SphereMove」スクリプトを探し、ヒエラルキーウィンドウ内のSphereオブジェクトにドラッグ&ドロップします。
  3. スクリプトが正しくアタッチされているか確認
    Sphereオブジェクトを選択した状態で、インスペクターウィンドウを確認します。「SphereMove」スクリプトが追加されていればOKです。

以上でスクリプトの作成と設定は完了です!次はゲームを実行して、球体が動くか試してみましょう。



4. 実行と確認

さあ、準備が整いました!ここからは、作成したプロジェクトを実際に動かして、Sphereオブジェクトが正しく転がるかを確認してみましょう。

ステップ1: プレイモードに入る

  1. Unityエディターの上部にある「再生ボタン(三角形のアイコン)」をクリックします。
  2. シーンビューがプレイモードに切り替わり、ゲームの動作を確認できる状態になります。

ステップ2: 球体を操作してみる

  1. キーボードの矢印キー(↑↓←→)または WASDキー を使って、Sphereを動かしてみましょう。
    • 矢印キーまたはWキーを押すと球体が前方に転がり、Sキーを押すと後方に転がります。
    • AキーとDキーを押すと、それぞれ左と右に動きます。
  2. 転がる動きが滑らかで、地面を転がる物理演算がきちんと適用されていることを確認してください。

ステップ3: 動きを調整する

もし、以下のような問題が発生した場合は設定を調整しましょう:

  • 球体が速すぎる場合
    → スクリプト内の rb.AddForce(movement * 3.0f); の「3.0f」を小さくします(例: 2.0f)。
  • 球体が遅すぎる場合
    → 同じ箇所を大きくします(例: 5.0f)。

ステップ4: シーンを終了する

  • 確認が終わったら、再生ボタンをもう一度クリックしてプレイモードを終了します。
  • プレイモード中に行った変更は保存されないのでご注意ください。

これで球体を転がす基本的な実装は完成です!次のステップでは、さらに複雑な動きを追加したり、カメラを追従させて臨場感をアップさせる方法に挑戦してみるのも面白いですよ。



よくある質問

Q
Rigidbodyを追加しないとどうなりますか?
A

Rigidbodyがない場合、物理演算が適用されず、AddForceメソッドが機能しません。

Q
球体の動きが速すぎます。どう調整すれば良いですか?
A

rb.AddForce(movement * 3.0f); の数値を小さくすることで動きの速さを調整できます。

Q
キーボード以外で操作する方法はありますか?
A

UnityのInputシステムを拡張すれば、ゲームパッドやスマートフォンでも操作できます。

おすすめのアセット

「Character Controller Plus」は、初心者でも簡単にキャラクターの動きを実装できる優れたアセットです。このアセットを使えば、難しいコーディングなしでキャラクターの移動やジャンプ、回転などを設定できます。ヒエラルキーウィンドウでキャラクターオブジェクトを選んで、右クリックメニューから簡単に追加できるので、作業がスムーズに進みます。

特に初心者におすすめの理由は、使いやすいインターフェースと豊富なドキュメントです。わからないことがあれば、詳しいガイドやサンプルプロジェクトがサポートしてくれます。さらに、このアセットは他の機能とも連携がしやすいので、自分のゲームに合わせてカスタマイズするのも簡単です。

ぜひ、「Character Controller Plus」を使って、自分だけのオリジナルキャラクターを動かしてみてくださいね!