はじめに
「Roll-a-Ball」とは、Unity Learnの1つで、 球を自分で転がしてアイテムを集めて得点を稼ぐゲームです。
今回は、 「Roll-a-Ball」 のカメラの動作についてです。
Unity Learnでは、こちらのゲームのチュートリアルが公開されています。
チュートリアル(Roll-a-ball)
こちらのチュートリアルに沿って、ゲームの作成を行っていきます。
前回のボールの動作は、Roll-a-ball3(ボールの動作)をごらんください。
「Roll-a-ball」のチュートリアルについては Roll-a-ballの導入編をご覧ください。
UnityLearnについてはこちらをご覧ください。
Moving the Camera
今回は、ゲームをプレイ中のカメラの動作の設定を行います。
今のままでは、カメラは動かずに固定されたままです。
そのため、プレイヤー(ボール)の動きに合わせてカメラも動くようにします。
まずは、今まで行ったように「Add Component」からスクリプトを新たに作成します。
作成したスクリプトは「Script」フォルダに「Camera Controller」という名前で保存します。
次に、 「Camera Controller」 スクリプトを編集します。
スクリプトには、以下のコードを記述します。
これで、プレイヤーが動いてもプレイヤーとカメラの距離を一定に保ちながら、ゲームをプレイすることができます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour
{
public GameObject player;
private Vector3 offset;
// Start is called before the first frame update
void Start()
{
offset = transform.position - player.transform.position;
}
// Update is called once per frame
//LateUpdateは、ほかのUpdate処理が終わってから処理を行う。
//そのため、playerが移動した後に確実に処理が行われる。
void LateUpdate()
{
transform.position = player.transform.position + offset;
}
}
Play Area
地面の端に壁を作り、プレイヤーが落ちないようにしてます。
最初は、「GameObject」-「CreateEmpty」で新規にゲームオブジェクトを作成します。名前は、「Wall」とします。
また、「Ground」-「Scale」が(2,1,2)となっていることを確認します。
それでは、壁を作っていきます。
「GameObject」-「3DObject」-「Cube」で新規に作成します。
名前は、「WallWest」とし、ドラッグで「Walls」の中にいれます。
「Transform」- 「Position」を(-10,0,0)とします。
- 「Scale」を(0.5,2,20.5)とします。
これで、左側の壁ができました。
これを同様に作成します。(「Edit」-「Duplicate」でコピーができます。)
他のパラメータは以下の様に設定します。
「EastWall」・・・
「Transform」- 「Position」を(10,0,0)
-「Scale」を(0.5,2,20.5)
「NorthWall」・・・
「Transform」- 「Position」を(0,0,10)
-「Scale」を(20.5,2,0.5)
「SouthWall」・・・
「Transform」- 「Position」を(0,0,-10)
-「Scale」を(20.5,2,0.5)
これで、四方すべてに壁を作成することができました。
それでは、実際に再生ボタンを押して、プレイヤーを動かしてください。
ボールが壁にぶつかると止まることがわかると思います。
おわりに
今回は、カメラワークとフィールドの壁を作成しました。
カメラがボールについていくこととボールが壁で止まることを確認しました。
次回も引き続き行っていきます。
Roll a Ball5
コメント