こんにちは、めたらびです!
3Dアクションゲームの移動方法の実装、2回目です
前回はユニティちゃんをシーン上に配置するところまでやりました
今回はキー操作でユニティちゃんを動かしてみたいと思います
それでは、ゆる~くやっていきましょう☆
※私自身、ゲーム制作については全くの素人ですので、
ここ、こうした方が良いよ!とか、
ここ、間違ってるよ!というものがありましたら、
ぜひ、コメントにて教えてくださるとありがたいです。
画像が見にくい場合は、画像をクリックしてください
ヒエラルキー画面を見てみると、
ユニティちゃんのオブジェクトだけ四角いマークが水色になっています
これは、このオブジェクトがPrefab状態だよ!ということを表しています
Prefabとは、同じオブジェクト間で状態を共有できる機能です
ユニティちゃんは1人しか動かさないので、Prefab状態を解除します
ヒエラルキー上のunitychanのところで右クリックし、
プレハブの中の展開をクリックします
四角いマークが水色ではなくなり、普通のオブジェクトになりました
ユニティちゃんを選択して、インスペクター画面を見ると、
Idle Changer , Face Update , Auto Blinkの3つのスクリプトが付いています
Idle ChangerとFace Updateは不要なので削除します
削除するには、黄色の丸で囲んだ点々をクリックし、
コンポーネントを削除を選択します
Auto Blinkはまばたきをするスクリプトです
不要な場合は、これも同様に削除してください
ユニティちゃんとカメラの位置を調節して、
ユニティちゃんがカメラに映るようにします
ユニティちゃんのTransformの中の
位置X , Y , Zを全て0にし、Y軸に180度回転させました
カメラのTransformの中の位置Xを0 , Yを1 , Zを-2にしました
これでゲーム画面にしたとき、
カメラにユニティちゃんの全身が映るようになりました
Unityでオブジェクトを動かすとき、様々な方法がありますが、
ここでは、RigidBodyのvelocityを使って動かしてみたいと思います
RigidBodyをオブジェクトに付けると
そのオブジェクトに物理的な動きをさせることができます
velocityを使っての移動は速度を変化させて移動させるイメージです
ということで、ユニティちゃんにRigidBodyを付けます
RigidBodyを付けるにはユニティちゃんを選択し、
コンポーネントを追加を押します
そして、Physicsの中のRigidbodyを選択します
Rigidbodyを付けたら、その中のConstraintsを開いて、
回転を固定の場所全てにチェックをつけます
これでユニティちゃんが何かの影響で回転したり、倒れたりしなくなります
今のユニティちゃんは宙に浮いている状態なので、地面を作りましょう
ヒエラルキーのプラスボタンを押して、
3Dオブジェクトの中のキューブを選択します
Cubeの名前を変更します
右クリックして、名前を変更を押します
分かりやすいように名前をStageに変更しました
Stageの位置と大きさを変更します
StageのTrasformの値を画像のように変更しました
今の状態でゲームを実行すると
ユニティちゃんが地面をすり抜けて下に落ちてしまいます
これはユニティちゃんに当たり判定がないためです
ユニティちゃんに当たり判定を付けましょう
Rigidbodyを付けた時と同じように
コンポーネントを追加を押し、
Physicsの中のCapsule Colliderを選択します
緑の線がCapsule Colliderの範囲なのですが、位置がずれています
ユニティちゃん全体を覆うように調整します
Capsule Colliderの中の中心、半径、高さを画像のように変更しました
これでCapsule Colliderがユニティちゃん全体を覆うようになりました
ゲームを実行してみます
ユニティちゃんが大地に降り立ちました!
(デフォルトで胸に手を当てたポーズが設定されていますが、後で変更します)
次は動かすためのスクリプトを書きます
プロジェクトウィンドウの何もないところで右クリックし、
作成の中のC#スクリプトを選択します
名前はunitychanControllerにしました
ダブルクリックして開きます
開くとVisual Studioが起動し、以下のような画面になります
ここにコードを書いていきます
以下のコードを入力してください
Rigidbodyコンポーネントを取得し、velocityが使えるようにしています
これによって、キー操作で動かせるようになります。
Horizontalが横、Verticalが縦です
斜めのベクトルを縦、横のベクトルと長さを同じにしています(対角線はちょっと長いため)
これで斜めに移動するときも、縦、横に移動するときと同じ距離にしています
どんな端末でも呼ばれる回数が一定のFixedUpdateを使うのが良いらしいです
右上のファイルから保存できます
Unityに戻り、できたスクリプトをユニティちゃんにドラッグ&ドロップします
ユニティちゃんを選択し、
unitychan Controller内の速度を1にします
この速度はユニティちゃんの動く速度になります。値を大きくすると速く動きます
Rigidbody内の補間を補間にすると滑らかに動くようになります
ゲームを実行してキー操作で動くか確認します
gif画像がうまく載せれなかったので、見せることができませんが、
キー操作でユニティちゃんが動きました!
操作が反転しているのが、気になる場合は、
ユニティちゃんを180度回転してください
ですが、歩いているようには見えないですよね…
次回はユニティちゃんを歩かせてみたいと思います!
お疲れ様でした、またね~
3Dアクションゲームの移動方法の実装、2回目です
前回はユニティちゃんをシーン上に配置するところまでやりました
今回はキー操作でユニティちゃんを動かしてみたいと思います
それでは、ゆる~くやっていきましょう☆
※私自身、ゲーム制作については全くの素人ですので、
ここ、こうした方が良いよ!とか、
ここ、間違ってるよ!というものがありましたら、
ぜひ、コメントにて教えてくださるとありがたいです。
画像が見にくい場合は、画像をクリックしてください
動かすための下準備をしよう!
前回、ユニティちゃんを配置しましたが、ヒエラルキー画面を見てみると、
ユニティちゃんのオブジェクトだけ四角いマークが水色になっています
これは、このオブジェクトがPrefab状態だよ!ということを表しています
Prefabとは、同じオブジェクト間で状態を共有できる機能です
ユニティちゃんは1人しか動かさないので、Prefab状態を解除します
ヒエラルキー上のunitychanのところで右クリックし、
プレハブの中の展開をクリックします
四角いマークが水色ではなくなり、普通のオブジェクトになりました
ユニティちゃんを選択して、インスペクター画面を見ると、
Idle Changer , Face Update , Auto Blinkの3つのスクリプトが付いています
Idle ChangerとFace Updateは不要なので削除します
削除するには、黄色の丸で囲んだ点々をクリックし、
コンポーネントを削除を選択します
Auto Blinkはまばたきをするスクリプトです
不要な場合は、これも同様に削除してください
ユニティちゃんとカメラの位置を調節して、
ユニティちゃんがカメラに映るようにします
ユニティちゃんのTransformの中の
位置X , Y , Zを全て0にし、Y軸に180度回転させました
カメラのTransformの中の位置Xを0 , Yを1 , Zを-2にしました
これでゲーム画面にしたとき、
カメラにユニティちゃんの全身が映るようになりました
Unityでオブジェクトを動かすとき、様々な方法がありますが、
ここでは、RigidBodyのvelocityを使って動かしてみたいと思います
RigidBodyをオブジェクトに付けると
そのオブジェクトに物理的な動きをさせることができます
velocityを使っての移動は速度を変化させて移動させるイメージです
ということで、ユニティちゃんにRigidBodyを付けます
RigidBodyを付けるにはユニティちゃんを選択し、
コンポーネントを追加を押します
そして、Physicsの中のRigidbodyを選択します
Rigidbodyを付けたら、その中のConstraintsを開いて、
回転を固定の場所全てにチェックをつけます
これでユニティちゃんが何かの影響で回転したり、倒れたりしなくなります
今のユニティちゃんは宙に浮いている状態なので、地面を作りましょう
ヒエラルキーのプラスボタンを押して、
3Dオブジェクトの中のキューブを選択します
Cubeの名前を変更します
右クリックして、名前を変更を押します
分かりやすいように名前をStageに変更しました
Stageの位置と大きさを変更します
StageのTrasformの値を画像のように変更しました
今の状態でゲームを実行すると
ユニティちゃんが地面をすり抜けて下に落ちてしまいます
これはユニティちゃんに当たり判定がないためです
ユニティちゃんに当たり判定を付けましょう
Rigidbodyを付けた時と同じように
コンポーネントを追加を押し、
Physicsの中のCapsule Colliderを選択します
緑の線がCapsule Colliderの範囲なのですが、位置がずれています
ユニティちゃん全体を覆うように調整します
Capsule Colliderの中の中心、半径、高さを画像のように変更しました
これでCapsule Colliderがユニティちゃん全体を覆うようになりました
ゲームを実行してみます
ユニティちゃんが大地に降り立ちました!
(デフォルトで胸に手を当てたポーズが設定されていますが、後で変更します)
スクリプトを書いてみよう!
下準備が完了したので、次は動かすためのスクリプトを書きます
プロジェクトウィンドウの何もないところで右クリックし、
作成の中のC#スクリプトを選択します
名前はunitychanControllerにしました
ダブルクリックして開きます
開くとVisual Studioが起動し、以下のような画面になります
ここにコードを書いていきます
以下のコードを入力してください
using System.Collections; using System.Collections.Generic; using UnityEngine; public class unitychanController : MonoBehaviour { public float Speed; float x, z; Rigidbody rb; Vector3 moving; // Start is called before the first frame update void Start() { rb = GetComponent<Rigidbody>(); } // Update is called once per frame void Update() { x = Input.GetAxis("Horizontal"); z = Input.GetAxis("Vertical"); moving = new Vector3(x, 0, z); moving = moving.normalized * Speed; } void FixedUpdate() { rb.velocity = moving; } }コードの意味を簡単に説明します
void Start() { rb = GetComponent<Rigidbody>(); }Start関数では、ユニティちゃんに付けた
Rigidbodyコンポーネントを取得し、velocityが使えるようにしています
x = Input.GetAxis("Horizontal"); z = Input.GetAxis("Vertical");Input.GetAxisは矢印キーやWASDを押したときに、数字を返してくれるメゾットです
これによって、キー操作で動かせるようになります。
Horizontalが横、Verticalが縦です
moving = new Vector3(x, 0, z); moving = moving.normalized * Speed;normalizedを付けることによって、
斜めのベクトルを縦、横のベクトルと長さを同じにしています(対角線はちょっと長いため)
これで斜めに移動するときも、縦、横に移動するときと同じ距離にしています
void FixedUpdate() { rb.velocity = moving; }RigidbodyをUpdate関数で使いたいときは
どんな端末でも呼ばれる回数が一定のFixedUpdateを使うのが良いらしいです
動かしてみよう!
コードが書けたら、忘れずに保存しましょう右上のファイルから保存できます
Unityに戻り、できたスクリプトをユニティちゃんにドラッグ&ドロップします
ユニティちゃんを選択し、
unitychan Controller内の速度を1にします
この速度はユニティちゃんの動く速度になります。値を大きくすると速く動きます
Rigidbody内の補間を補間にすると滑らかに動くようになります
ゲームを実行してキー操作で動くか確認します
gif画像がうまく載せれなかったので、見せることができませんが、
キー操作でユニティちゃんが動きました!
操作が反転しているのが、気になる場合は、
ユニティちゃんを180度回転してください
ですが、歩いているようには見えないですよね…
次回はユニティちゃんを歩かせてみたいと思います!
お疲れ様でした、またね~
この作品はユニティちゃんライセンス条項の元に提供されています
コメント