UnityUnityメモ

Unity初心者向け!キーボード操作でオブジェクトのサイズを簡単変更

Unity

1. はじめに

Unityでゲーム開発を始めたばかりの方でも、簡単に楽しみながら学べる方法を探していませんか?この記事では、キーボード操作でシンプルな3Dオブジェクト(Cube)のサイズを変更する方法を解説します。


この記事を読み進めることで、次のようなことができるようになります:

  • キーボードの矢印キーを使ってCubeの横幅や縦幅を変える
  • 簡単なC#スクリプトを作成し、オブジェクトに適用する方法を学ぶ
  • Unityの基本的な操作とスクリプトの活用法を理解する

初心者の方でもスムーズに取り組めるように、具体的な手順とコード例を交えながらわかりやすく解説します。準備ができたら、さっそく始めましょう!

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



2. UnityでCubeを作成する

まずは、UnityのシーンにCube(キューブ)を作成しましょう。Cubeは3Dオブジェクトの基本形状の1つで、初心者が操作を学ぶのに最適なオブジェクトです。

以下の手順でCubeを作成してください。

1. ヒエラルキー(Hierarchy)ウィンドウを確認する

Unityの画面左側にあるヒエラルキーウィンドウは、シーン内に存在するオブジェクトの一覧を表示します。このウィンドウを使って新しいオブジェクトを作成します。

2. 右クリックでオブジェクトを追加

ヒエラルキーウィンドウの空白部分を右クリックすると、メニューが表示されます。その中から次の操作を行います:

  • **「3D Object」**にカーソルを合わせる
  • 表示されるサブメニューから**「Cube」**を選択

3. Cubeがシーンに表示される

上記の操作を行うと、シーンにCubeが作成されます。同時に、ヒエラルキーウィンドウにも「Cube」という名前の項目が追加されているのが確認できます。

4. Cubeの位置とサイズを調整する(必要に応じて)

新しく作成されたCubeは、デフォルトで**(0, 0, 0)**の位置に配置されます。必要に応じて、移動やサイズ変更を行いましょう。
Cubeを選択した状態で、Unity画面の中央にあるツールを使うと簡単に移動・回転・サイズ変更ができます。

これでCubeの作成は完了です。次のステップでは、このCubeのサイズをキーボード操作で変更できるようにスクリプトを作成していきます。



3. スクリプトを作成してサイズ変更を実装

ここでは、キーボード入力を使用してCubeのサイズを変更できるスクリプトを作成し、具体的なコードとその内容を詳しく説明します。以下の手順に沿って進めてください。


1. スクリプトを作成する

  1. プロジェクトウィンドウを開く
    Unityエディターの下部にある「Project(プロジェクト)」ウィンドウで操作を行います。
  2. 新しいC#スクリプトを作成
    • プロジェクトウィンドウを右クリックし、**「Create(作成)」→「C# Script」**を選択します。
    • スクリプト名を「ResizeCube」と入力します。
  3. スクリプトを開く
    作成した「ResizeCube」をダブルクリックすると、スクリプトがエディター(例: Visual Studio)で開きます。

2. コードを入力する

以下のコードをスクリプトに入力してください。

using UnityEngine;

public class ResizeCube : MonoBehaviour
{
    // サイズ変更のスピードを設定できる変数
    public float resizeSpeed = 0.1f;

    void Update()
    {
        // 右キーを押したときに横幅(X)を増やす
        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.localScale += new Vector3(resizeSpeed, 0, 0);
        }

        // 左キーを押したときに横幅(X)を減らす
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.localScale -= new Vector3(resizeSpeed, 0, 0);
        }

        // 上キーを押したときに縦幅(Y)を増やす
        if (Input.GetKey(KeyCode.UpArrow))
        {
            transform.localScale += new Vector3(0, resizeSpeed, 0);
        }

        // 下キーを押したときに縦幅(Y)を減らす
        if (Input.GetKey(KeyCode.DownArrow))
        {
            transform.localScale -= new Vector3(0, resizeSpeed, 0);
        }
    }
}

3. コードの解説

  • public float resizeSpeed = 0.1f;
    サイズ変更のスピードを調整する変数です。値を変更することで、サイズ変更の速さを調整できます。
  • Update()
    毎フレーム実行される関数で、キー入力を検出してサイズを変更します。
  • Input.GetKey(KeyCode.RightArrow)
    キーボードの右矢印キーが押されている間、Cubeの横幅(X)が増加します。その他の矢印キーも同様に処理されます。
  • transform.localScale
    オブジェクトのサイズを制御するプロパティです。矢印キーの入力に応じて、サイズが増減します。

4. スクリプトを保存

コードを入力したら、「Ctrl + S」または「Cmd + S」でスクリプトを保存してください。これで準備完了です。

次は、このスクリプトをCubeに適用する手順を説明します。



4. スクリプトをCubeにアタッチする方法

作成した「ResizeCube」スクリプトをCubeに適用することで、キーボード操作でサイズを変更できるようになります。以下の手順に従って進めてください。


手順1:Cubeを選択する

  1. ヒエラルキー(Hierarchy)ウィンドウで、先ほど作成したCubeをクリックします。
    選択されたCubeは青い枠でハイライトされます。

手順2:スクリプトをアタッチする

  1. プロジェクト(Project)ウィンドウで、作成した「ResizeCube」スクリプトを見つけます。
    デフォルトでは、「Assets」フォルダに保存されています。
  2. スクリプトをドラッグ&ドロップして、ヒエラルキー内のCubeにドロップします。
    これでスクリプトがCubeにアタッチされました。

手順3:インスペクターで確認する

  1. Cubeを選択した状態で、インスペクター(Inspector)ウィンドウを確認します。
  2. 「ResizeCube」という名前のスクリプトが追加されていることを確認してください。
    Public変数として設定したresizeSpeedの値を調整できます。初期値は0.1ですが、お好みに合わせて変更可能です。

注意点

  • スクリプトが正しくアタッチされない場合は、エラーメッセージが表示されることがあります。その場合は、スクリプト内のコードにスペルミスや構文エラーがないか確認してください。
  • Cube以外のオブジェクトにもこのスクリプトをアタッチすることができます。例えば、SphereやCapsuleなどにも応用可能です。

これでスクリプトがCubeにアタッチされました!次はテストプレイを実行して、キーボード操作でサイズ変更ができることを確認しましょう。



5. 動作確認

1. ゲームモードを開始

Unityの上部にある再生ボタン(▶)をクリックして、ゲームモードを開始します。

2. キーボードで操作

以下のキーを使って、Cubeのサイズが変化することを確認してください。

  • 右矢印キー:Cubeの横幅(X)が増える。
  • 左矢印キー:Cubeの横幅(X)が減る。
  • 上矢印キー:Cubeの縦幅(Y)が増える。
  • 下矢印キー:Cubeの縦幅(Y)が減る。

キーを押し続けると、サイズが連続的に変化することを確認してください。

3. 動作確認ポイント

次の点を確認しましょう。

  • キー入力に応じて、Cubeのサイズが適切に変化するか。
  • サイズが極端に小さくなりすぎたり、大きくなりすぎたりしないか。
  • スクリプトのエラーや動作不良が発生していないか。

動作確認ができたら、応用例を試してみて、さらに便利なスクリプトに進化させてください。小さなカスタマイズを積み重ねることで、Unityのスキルが着実に向上します!



6.応用例

1. 他の3Dオブジェクトに適用

このスクリプトはCubeだけでなく、SphereやCylinderなど他の3Dオブジェクトにも簡単に適用できます。
ヒエラルキーで別のオブジェクトを選択し、同じスクリプトをドラッグ&ドロップしてアタッチしてください。これにより、様々な形状のオブジェクトのサイズをキーボードで変更できます。

2. サイズ変更のスピードを調整

スクリプト内のresizeSpeed変数を変更することで、サイズ変更の速さを調整できます。
例えば、0.05に設定すると変更がよりゆっくりになります。逆に、0.2などの値にするとサイズ変更が速くなります。自分のゲームの仕様に合わせて変更しましょう。

3. サイズ変更の範囲を制限

サイズ変更に上限や下限を設けたい場合は、以下のコードを追加してください。

void Update()
{
transform.localScale = new Vector3(
Mathf.Clamp(transform.localScale.x, 0.1f, 5f),
Mathf.Clamp(transform.localScale.y, 0.1f, 5f),
transform.localScale.z
);
}

これにより、サイズが最小0.1から最大5の範囲内に収まるようになります。サイズが極端に小さくなりすぎたり、大きくなりすぎたりするのを防ぐことができます。

4. Z軸のサイズ変更を追加

このスクリプトではX軸(横幅)とY軸(縦幅)のサイズ変更を実装しましたが、Z軸(奥行き)も変更できるようにできます。以下のコードを追加してください。

// Z軸の増加と減少
if (Input.GetKey(KeyCode.A))
{
transform.localScale += new Vector3(0, 0, resizeSpeed);
}
if (Input.GetKey(KeyCode.D))
{
transform.localScale -= new Vector3(0, 0, resizeSpeed);
}

これにより、キーボードのAキーで奥行きを増加、Dキーで奥行きを減少させることができます。3D空間の表現をより豊かにすることが可能です。



よくある質問(FAQ)

Q
スクリプトが動作しない場合の対処法は?
A

以下のポイントを確認してください:

  • スクリプトがCubeに正しくアタッチされているか確認します。ヒエラルキーでCubeを選択し、インスペクターに「ResizeCube」スクリプトが表示されているかチェックしてください。
  • コンソールウィンドウにエラーが表示されている場合は、エラー内容を確認し、コードにスペルミスや記述ミスがないか見直しましょう。
  • Unityのプレイモード(再生ボタン)を有効にしているか確認してください。プレイモードがオフのままだとスクリプトは動作しません。
Q
キーボード操作をカスタマイズするにはどうすればいいですか?
A

コード内のInput.GetKey部分を変更することで、別のキーに割り当てることができます。例えば、「A」キーでサイズを増加させたい場合は以下のように書き換えます:

if (Input.GetKey(KeyCode.A))
{
transform.localScale += new Vector3(resizeSpeed, 0, 0);
}

Unityのキーコード一覧は公式ドキュメントを参考にしてください。

Q
サイズ変更に限界を設けたい場合はどうすればいいですか?
A

サイズの範囲を制限するには、Mathf.Clampを使用すると便利です。以下のようにコードを変更して、X方向のサイズを0.5から3.0の範囲に制限する例を示します:

void Update()
{
Vector3 newScale = transform.localScale;

if (Input.GetKey(KeyCode.RightArrow))
{
newScale.x += resizeSpeed;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
newScale.x -= resizeSpeed;
}

// サイズを制限する
newScale.x = Mathf.Clamp(newScale.x, 0.5f, 3.0f);

transform.localScale = newScale;
}

この方法を使えば、サイズ変更の範囲を柔軟に設定できます。

おすすめのアセット

「Top Down Car Racing Engine」は、Unityでトップダウン視点のカーレースゲームを簡単に作成できるテンプレートです。このエンジンを使用することで、複雑なプログラミングなしに、リアルな車の挙動や多彩なレース要素をゲームに組み込むことができます。

主な特徴:

  • リアルな車の挙動: 実際の車の動きを再現し、スムーズな操作感を提供します。
  • カスタマイズ可能なトラック: 自由にレーストラックを設計・編集でき、オリジナルのコースを作成可能です。
  • 多彩なゲームモード: タイムトライアルや対戦モードなど、さまざまなレース形式をサポートしています。

おすすめポイント:

  • 初心者でも使いやすい: 複雑なコードを書く必要がなく、直感的な操作でゲーム開発が進められます。
  • 時間の節約: 基本的なレース機能が揃っているため、開発時間を大幅に短縮できます。
  • 高品質なサポート: 開発者からのサポートがあり、安心して利用できます。