こんにちは!今日はUnityでSphere(球体)とCube(立方体)の間の距離を取得して、その結果をコンソールに表示する方法について説明します。
![](https://cbagames.jp/wp-content/uploads/2024/02/001.png)
球体と立方体をシーンに配置
- ヒエラルキー(Hierarchy)ウィンドウで右クリックします。
- 「3D Object」 -> 「Sphere」 を選択して球体を作成します。
- 同様に、再度右クリックして 「3D Object」 -> 「Cube」 を選択して立方体を作成します。
スクリプトの作成
次に、距離を計算してコンソールに表示するスクリプトを作成します。
- 「Assets」フォルダ内で右クリックして 「Create」 -> 「C# Script」 を選びます。
- スクリプトに「DistanceCalculator」という名前を付けます。
スクリプトの編集
スクリプトをダブルクリックして開き、以下のコードを入力します。
コード全体の説明
このスクリプトは「DistanceCalculator」という名前のクラスを持っています。これはMonoBehaviourを継承しており、Unityのゲームオブジェクトにアタッチすることで動作します。スクリプトの目的は以下の二つです:
- 他のオブジェクト(この場合は「cube」)との距離を計算して表示する。
- プレイヤーが十字キーを使ってオブジェクトを移動させる。
では、各部分の説明に進みましょう。
各部分の説明
usingディレクティブ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
これらはUnityでスクリプトを動かすために必要なライブラリをインポートしています。
クラス宣言とフィールド
public class DistanceCalculator : MonoBehaviour
{
[SerializeField] GameObject cube;
DistanceCalculator
というクラスが定義されており、MonoBehaviour
を継承しています。[SerializeField]
属性を使って、インスペクターで設定できるGameObject
型のcube
というフィールドを定義しています。
Updateメソッド
void Update()
{
float dis = Vector3.Distance(this.transform.position, cube.transform.position);
Debug.Log("距離 : " + dis);
Update
メソッドは毎フレーム呼び出されます。まず、Vector3.Distance
メソッドを使って、このスクリプトがアタッチされたオブジェクトの位置とcube
オブジェクトの位置との距離を計算し、その結果をdis
という変数に保存します。そして、その距離をコンソールに表示します。
//十字キー操作
float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * 3;
float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * 3;
transform.position = new Vector3(
transform.position.x + moveX, transform.position.y, transform.position.z + moveZ
);
}
次に、十字キーの入力を取得してオブジェクトを移動させる部分です。Input.GetAxis("Horizontal")
は左右の入力を取得し、Input.GetAxis("Vertical")
は前後の入力を取得します。これらにTime.deltaTime
(前フレームからの経過時間)を掛け、移動速度を調整するためにさらに3を掛けています。そして、新しい位置を計算してオブジェクトの位置を更新しています。
全体の動き
- 毎フレーム、このスクリプトがアタッチされたオブジェクトと
cube
オブジェクトの距離が計算され、コンソールに表示されます。 - プレイヤーが十字キーを押すと、その入力に基づいてオブジェクトが移動します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DistanceCalculator : MonoBehaviour
{
[SerializeField] GameObject cube;
void Update()
{
float dis = Vector3.Distance(this.transform.position, cube.transform.position);
Debug.Log("距離 : " + dis);
//十字キー操作
float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * 3;
float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * 3;
transform.position = new Vector3(
transform.position.x + moveX, transform.position.y, transform.position.z + moveZ
);
}
}
スクリプトをオブジェクトにアタッチ
- 作成した「DistanceCalculator」スクリプトを ヒエラルキー(Hierarchy)ウィンドウにあるSphereオブジェクトにドラッグ&ドロップします。
- アタッチしたオブジェクトを選択し、 インスペクター(Inspector)ウィンドウで「Cube」のフィールドにオブジェクトをドラッグ&ドロップして割り当てます。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-15_164743.png)
実行して確認
ゲームを実行すると、コンソールに球体と立方体の距離が表示されるはずです。
![](https://cbagames.jp/wp-content/uploads/2024/02/001.png)
これで完了です!Unityでオブジェクト間の距離を取得してコンソールに表示する方法がわかりましたね。何か質問があれば、気軽に聞いてくださいね!
おすすめのアセット
Infinite Runner Engine 3Dは、無限ランナーゲームを簡単に作成できるUnityアセットです。初心者にも使いやすく、豊富なテンプレートやサンプルシーンが含まれています。プレイヤーキャラクター、障害物、パワーアップアイテムなど、すぐに使用できるコンポーネントが揃っており、カスタマイズも自由自在です。