こんにちは!今日は、UnityでCube(プレーヤー)とSphere(球体)の間にカメラを設定し、オブジェクトが動くにつれてカメラが近づいたり離れたりする方法を解説します。とても簡単なので、一緒にやってみましょう!
ステップ1: オブジェクトを配置する
- Cube(プレーヤー) を作成します。
- ヒエラルキーウィンドウを右クリックします。
- 「3D Object」→「Cube」を選びます。
- Sphere(球体) を作成します。
- 同じくヒエラルキーウィンドウを右クリックします。
- 「3D Object」→「Sphere」を選びます。
- GameObject(空のオブジェクト)を作成します。
- 同じくヒエラルキーウィンドウを右クリックします。
- 「CreateEmpty」を選びます。
![](https://cbagames.jp/wp-content/uploads/2024/02/2024-02-16_155001.png)
ステップ2: 移動スクリプトを作成する
キューブを操作するスクリプトを作成します。
- 新しいスクリプトを作成 します。
- ヒエラルキーウィンドウを右クリックし、「Create」→「C# Script」を選びます。
- スクリプトの名前を「PlayerMove」に変更します。
- スクリプトを編集 します。
- 「PlayerMove」スクリプトをダブルクリックしてVisual Studio(またはお好みのコードエディタ)で開きます。
- 以下のコードを入力します:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
void Update()
{
float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f;
float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;
transform.position = new Vector3
(
transform.position.x + dx, 0.5f, transform.position.z + dz
);
}
}
移動スクリプトをアタッチする
- Cubeにスクリプトをアタッチ します。
- ヒエラルキーウィンドウで「Cube」を選択します。
- 「PlayerMove」スクリプトをドラッグ&ドロップして「Cube」にアタッチします。
ステップ3:オブジェクトの中間地点を取得するスクリプト
- 新しいスクリプトを作成 します。
- ヒエラルキーウィンドウを右クリックし、「Create」→「C# Script」を選びます。
- スクリプトの名前を「HalfPoint」に変更します。
- スクリプトを編集 します。
- 「HalfPoint」スクリプトをダブルクリックしてVisual Studio(またはお好みのコードエディタ)で開きます。
- 以下のコードを入力します:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HalfPoint : MonoBehaviour
{
public GameObject cube;
public GameObject sphere;
public float dis;
void Update()
{
this.transform.position = (cube.transform.position + sphere.transform.position) / 2;
Vector3 cubePos = cube.transform.position;
Vector3 spherePos = sphere.transform.position;
dis = Vector3.Distance(cubePos, spherePos);
}
}
スクリプトをアタッチする
- 空のオブジェクトにスクリプトをアタッチ します。
- ヒエラルキーウィンドウで「GameObject」を選択します。
- 「HalfPoint」スクリプトをドラッグ&ドロップして「GameObject」にアタッチします。
- スクリプトの設定を行う ために、インスペクターウィンドウで以下を設定します:
- Cubeに Cubeオブジェクトをドラッグ&ドロップします。
- SphereにSphereオブジェクトをドラッグ&ドロップします。
ステップ4:中間地点にカメラを向けるスクリプト
- 新しいスクリプトを作成 します。
- ヒエラルキーウィンドウを右クリックし、「Create」→「C# Script」を選びます。
- スクリプトの名前を「CameraMove」に変更します。
- スクリプトを編集 します。
- 「CameraMove」スクリプトをダブルクリックしてVisual Studio(またはお好みのコードエディタ)で開きます。
- 以下のコードを入力します:
using UnityEngine;
public class CameraMove : MonoBehaviour
{
public GameObject target;
HalfPoint targetPos;
void Start()
{
target = GameObject.Find("GameObject");
targetPos = target.GetComponent<HalfPoint>();
}
void Update()
{
transform.LookAt(target.transform);
this.transform.position = new Vector3(0, 0, -targetPos.dis);
}
}
スクリプトをアタッチする
- Main Cameraにスクリプトをアタッチ します。
- ヒエラルキーウィンドウで「Main Camera」を選択します。
- 「CameraMove」スクリプトをドラッグ&ドロップして「Main Camera」にアタッチします。
ステップ5: オブジェクトを動かしてみる
- ゲームを実行してCubeを動かしてカメラの動作を確認します。
これで、Cube(プレーヤー)とSphere(球体)の間にカメラを設定し、オブジェクトが動くにつれてカメラが近づいたり離れたりする方法の解説は終わりです。簡単でしたね!カメラの動きがもっとスムーズに見えるように、スクリプトを改良することもできます。楽しんでUnityを使ってくださいね!
おすすめのアセット
Mass Camera Systemは、Unityで複数のカメラを簡単に管理・制御できるツールです。これを使えば、ゲームやアプリの中で複数の視点をシームレスに切り替えることが可能になります。特に、カットシーンやリプレイシステム、マルチプレイヤーゲームに最適です。
このツールは、カメラの配置や設定を簡単に行えるインターフェースを提供し、複雑なコードを書かなくても直感的に操作できます。さらに、各カメラのパラメータを個別に調整できるため、細かいニーズにも対応できます。