こんにちは。
夏よりも冬が好きな佐藤です。
今回は第3回目を迎えます。
前回からだいぶ時間が経っていますので、下記からおさらいしておきます。
前回を見ていないという方、詳しく!!という方は下記から飛べますのでお読みください。
前回はUnityで
・ステージを作成
・オブジェクトの整理
・プレイヤーの作成
の3本仕立てでお送りしました。
目次
今回は
・プレイヤーの移動
・カメラの追加
の2本立てでお送りします。
プレイヤーの移動
前回作成したプレイヤーを動かせるようにします。
やることを箇条書きにすると、
・プレイヤーに重力を追加する
・プレイヤーを操作できるようにする
です。
まずは、重力を追加します。
オブジェクトを動かすためにはコンポーネントを準備します。
コンポーネントとは、GameObjectを構成するパーツです。
GameObjectはこのコンポーネントの挙動に従い、自身を稼働させたり、他のオブジェクトへ影響をあたえることが出来ます。
1、HierarchyビューでPlayerをクリックします。
2、InspectorビューでAdd Componentボタンをクリックします。
3、Physicsをクリックし、Rigidbodyを選択します。
追加したら、ゲームを再生してみます。
物理演算を追加したことにより、プレイヤーが落下することが確認できます。
次に、キー操作でプレイヤーを動かせるようにします。
好きな方向に動かすために、新しくコンポーネントを作成しましょう。
コンポーネントはC#もしくはUnityScriptで記述する事ができます。
(言語を使用する段階までこれました。。)
まずはプレイヤーに空のコンポーネントを新規で作成しましょう。
1、HierarchyビューでPlayerオブジェクトをクリックします。
2、InspectorビューでAdd Componentボタンをクリックし、New Scriptをクリックします。
<
3、Nameに「PlayerController」、Scriptに「CSharp」を選択します。
4、「Create And Add」ボタンをクリックします。
ProjectブラウザのAssetsフォルダに、”PlayerController.cs”が作成されます。
これが今回作成したコンポーネントの本体のスクリプトとなります。
わかりやすいように、Scriptフォルダを作成し中へ移動させます。
では、空のコンポーネントにスクリプトを記載します。
作成したコンポーネントをダブルクリックし、エディタ画面を表示します。
表示したら、中に下記のコードを入力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { // speedを制御する public float speed = 10; void FixedUpdate () { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); Rigidbody rigidbody = GetComponent(); // xとzにspeedを掛ける rigidbody.AddForce(x * speed, 0, z * speed); } } |
ゲームを再生すると、方向キーで移動をすることができました。
上記コード内でspeedという変数を用意してあげることにより、
Inspectorビューからプレイヤーの移動速度を調整しながらゲームを作成できます。
カメラの追加
ゲームにはいろいろなアングルのカメラが存在すると思います。
全体を確認できるカメラ、プレイヤーごとのカメラなどなど。
ここではプレイヤーを追跡するカメラを作成します。
プレイヤーに連動して移動するので、プレイヤーを追跡するコンポーネントを作成します。
1、HierarchyビューでMainCameraをクリックします。
2、InspectorビューでAdd Componentボタンをクリックします。
3、「New Script」をクリックし、「FollowPlayer」を追加します。
4、ProjectブラウザでAssetsの”FollowPlayer.cs”をAssets/Scriptフォルダへ移動します。
“FollowPlayer.cs”をクリックし、エディタ画面で編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using UnityEngine; using System.Collections; public class FollowPlayer : MonoBehaviour { public Transform target; // ターゲットへの参照 private Vector3 offset; // 相対座標 void Start () { //自分自身とtargetとの相対距離を求める offset = GetComponent().position - target.position; } void Update () { // 自分自身の座標に、targetの座標に相対座標を足した値を設定する GetComponent().position = target.position + offset; } } |
HierarchyビューでMainCameraをクリックします。
InspectorビューにFollowPlayerというコンポーネントが作成されています。
Targetの中に対象のプレイヤーをドラッグ&ドロップします。
プレイヤーとカメラとの距離を編集します。
プレイヤーの座標がposition(x:0, y:1.5, z:0)ですのでMainCameraの座標は以下のとおりにします。
・position(x:0, y:9, z:-5)
・rotation(x:60, y:0, z:0)
ゲームを再生すると、プレイヤーの動きに合わせてカメラが動きます。
まとめ
今回はプレイヤーを操作できるようにし、プレイヤーに合わせてカメラを動くようにしました。
やっとゲームみたいな動きになってきました!
ゲームのクリアとかアイテムとかリスタートの設定とかであと3〜4回ほど連載が続きます。
拙い文章ですが、お付き合いしていただけたらと思います。
今回は以上です。
最後まで見ていただきありがとうございます。
参照
初めてのUnity
https://unity3d.com/jp/learn/tutorials/projects/hajiuni-jp