UnityUnityメモ

Unityで簡単に学ぶ!Cubeを自転し&Sphereを中心に公転させる方法

Unity

1. はじめに

こんにちは!Unityを使った3Dオブジェクトの動きの作成に挑戦してみませんか?今回のテーマは「Cubeを自転させながら、Sphereを中心に公転させる方法」です。

「自転」とは、オブジェクト自身が回転する動きで、「公転」は他のオブジェクトを中心に回転する動きです。この2つの動きを組み合わせることで、惑星のようなダイナミックなアニメーションを作成できます。

難しそうに聞こえるかもしれませんが、スクリプトを使えば意外と簡単!Unity初心者の方でもステップバイステップで進められるように、分かりやすく解説します。それでは始めましょう!

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



2. プロジェクトの準備

さあ、まずはUnityで必要な設定を整えていきましょう!ここでは、新しい3Dオブジェクトを作成し、それぞれを正しい位置に配置していきます。


ステップ1: 新しい3Dオブジェクトを作成する

  1. Unityを開く
    プロジェクトを作成、または既存のプロジェクトを開いてください。
  2. Cubeを作成する
    • Hierarchyウィンドウで右クリックし、「3D Object」→「Cube」を選びます。
    • これでシーンにCubeが作成されます。
  3. Sphereを作成する
    • 同じように「3D Object」→「Sphere」を選び、シーンにSphereを作成します。

ステップ2: オブジェクトの位置を調整する

  1. Sphereの位置を設定
    • InspectorウィンドウでSphereの「Transform」の「Position」を設定します。
      X: 0, Y: 0, Z: 0 と入力して、Sphereをシーンの中心に配置します。
  2. Cubeの位置を設定
    • CubeをSphereから少し離れた位置に移動しましょう。例えば:
      X: 3, Y: 0, Z: 0 と入力します。

ステップ3: シーンの確認

  1. シーンビューを確認して、CubeがSphereと離れて配置されているかチェックしてください。
  2. 両方のオブジェクトが見やすいように、カメラの位置を調整しておくと便利です。

これでプロジェクトの準備は完了です!次は、Cubeを動かすためのスクリプトを作成していきましょう!




3. スクリプトの作成

それでは、Cubeを自転させながらSphereを中心に公転させるためのスクリプトを作成しましょう!スクリプトはUnityの動きの基本を学ぶのにピッタリです。


ステップ1: スクリプトファイルの作成

  1. Scriptsフォルダを作成
    • Projectウィンドウで右クリックして「Create」→「Folder」を選び、「Scripts」という名前のフォルダを作成します。
  2. 新しいスクリプトを作成
    • Scriptsフォルダを右クリックして「Create」→「C# Script」を選択します。
    • スクリプトの名前を RotateAndOrbit にします。

ステップ2: スクリプトを記述

  1. 作成したRotateAndOrbitスクリプトをダブルクリックして開きます(通常、Visual StudioやRiderが開きます)。
  2. 以下のコードをスクリプトに入力します。
using UnityEngine;

public class RotateAndOrbit : MonoBehaviour
{
    public Transform orbitCenter; // 公転の中心となるオブジェクト
    public float orbitSpeed = 30.0f; // 公転速度
    public float rotationSpeed = 80.0f; // 自転速度

    void Update()
    {
        OrbitAround(); // 公転処理を実行
        SelfRotate(); // 自転処理を実行
    }

    // 公転の処理
    void OrbitAround()
    {
        transform.RotateAround(orbitCenter.position, Vector3.up, orbitSpeed * Time.deltaTime);
    }

    // 自転の処理
    void SelfRotate()
    {
        transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);
    }
}

ステップ3: コードの解説

  • orbitCenter
    公転の中心となるオブジェクト(ここではSphere)を指定します。
  • orbitSpeed
    CubeがSphereを中心に回る速度を調整できます。
  • rotationSpeed
    Cubeが自身を回転する(自転)速度を設定します。
  • RotateAroundメソッド
    オブジェクトを指定された点(ここではSphere)を中心に回転させるUnityの便利なメソッドです。
  • Rotateメソッド
    オブジェクト自身を指定した軸(ここではY軸)に沿って回転させます。

ステップ4: スクリプトの保存

  • コードを書き終えたら、「Ctrl + S」(Macなら「Cmd + S」)でスクリプトを保存します。

これでスクリプトの準備が完了です!次は、スクリプトをUnityシーンに適用して動きを確認してみましょう!




4. スクリプトの設定

スクリプトが完成したら、Unityでスクリプトを設定して動作させる準備をしましょう!ここでは、Cubeにスクリプトをアタッチし、必要な設定を行います。


ステップ1: Cubeにスクリプトをアタッチ

  1. HierarchyウィンドウでCubeを選択
    • Cubeが選択されていることを確認します。
  2. スクリプトをアタッチ
    • ProjectウィンドウRotateAndOrbitスクリプトを、Cubeにドラッグ&ドロップします。
  3. 確認
    • Inspectorウィンドウを見て、CubeにRotateAndOrbitスクリプトが追加されていることを確認します。

ステップ2: 公転の中心(Orbit Center)の設定

  1. Orbit CenterにSphereを設定
    • Inspectorウィンドウで、RotateAndOrbitスクリプト内のOrbit Centerフィールドに、HierarchyウィンドウのSphereをドラッグ&ドロップします。
  2. 確認
    • Orbit CenterフィールドにSphereが設定されていることを確認します。

ステップ3: パラメータの調整(任意)

  • Orbit Speed: Cubeの公転速度(デフォルトは30.0)。好みに応じて数値を変更してください。
  • Rotation Speed: Cubeの自転速度(デフォルトは80.0)。速さを調整したい場合に変更します。



5. 実行して確認

これまでの準備が整ったら、実際にスクリプトを実行して動きを確認してみましょう!簡単な手順でチェックできます。


ステップ1: 再生ボタンをクリック

  1. Unityエディター上部にある「▶」(再生ボタン)をクリックします。
  2. シーンが再生モードに切り替わり、設定した動きを確認できます。

ステップ2: Cubeの動きを観察

  • Cubeが自転:Cube自体がY軸(上下方向)を中心に回転しているか確認してください。
  • Cubeが公転:CubeがSphereを中心に回り続けているかチェックしましょう。

ここまでの手順で、Cubeが自転しながらSphereを中心に公転する動きを実現できたはずです。うまく動作したら、その動きを楽しみながら、自分のプロジェクトにどのように応用できるかを考えてみましょう!

次は、さらに複雑な動きを加える方法やカスタマイズのヒントを学んでみるのもおすすめです!




よくある質問(Q&A)

Q
Cubeが動かない場合はどうすればいいですか?
A

スクリプトがCubeに正しくアタッチされているか確認してください。また、SphereがOrbitCenterに設定されているかもチェックしましょう。

Q
Cubeの速度を変えたいです。
A

スクリプト内のorbitSpeedrotationSpeedの値を変更することで調整できます。

Q
他のオブジェクトでも使えますか?
A

はい、Cube以外のオブジェクトでも同じスクリプトを使えます。お好みの3Dオブジェクトで試してみてください!

おすすめのアセット

「Ultimate Sphere and Ball Pack」は、Unityで使える球体やボールの3Dモデル集です。セットにはさまざまな種類の球体やボールが含まれており、スポーツ用のボールや金属製の球体などがあります。それぞれのモデルは高品質で、リアルな質感を持っています。

このアセットを使えば、ゲームやシミュレーション、アニメーションの中でリアルな球体やボールを簡単に追加することができます。特にスポーツゲームを作っている方にはおすすめです。また、色や材質を自由に変更できるので、自分のプロジェクトに合わせてカスタマイズすることが可能です。