三星です。
前回の続きです。
今回はプレイヤーを移動させて玉を撃つところまで。
勉強したもので大事そうなところの走り書きなので実際に作成したい方はこちら。
スポンサードリンク
Contents
Rigidbody2Dクラス
Rigidbody2D クラスは Rigidbody が 3D で提供する機能と同じものを 2D で提供します。スプライトに Rigidbody2D コンポーネントを追加することで物理エンジンによる影響を受けるようになります。つまりスプライトは重力による影響を受け、力によってスクリプトで制御できます。
ベクトルと力の入力だけでプレイヤーを動かすことが出来るようになる。
今回重力は使わない。
https://docs.unity3d.com/ja/current/ScriptReference/Rigidbody2D.html?_ga=2.79191952.509694783.1511937012-1653178671.1510735616
Inputクラス
キーボードやJoyStickなどコントローラーの全ての入力を処理するためのクラス。
今回はキーボードの矢印を使う。
https://docs.unity3d.com/ja/current/ScriptReference/Input.html?_ga=2.79191952.509694783.1511937012-1653178671.1510735616
○○をアタッチする
アタッチとは取り付けるという意味で、ゲームオブジェクトにコンポーネントを取り付ける意味として使用することが多いです。
スポンサードリンク
2.3 プレイヤーを動かす準備
Apply Root Motion
Apply Root Motionは3Dモデルに対するアニメーションの制御を行うために使用されます。ですが今回のように2Dゲームを作る場合でもチェックをつけていると影響を受けてしまい、プレイヤーを正しく動かすことが出来ません。
よってチェックを外します。
Input.GetAxisRaw
これがキーボードの矢印の操作を受け入れる関数。
これは0か1を検出する。
プレイヤーから弾を撃つ
親子関係
これはゲームオブジェクト同士の関係性を表しています。 普段、ゲームオブジェクトは図3.1のように縦に並びます。これは同じ位置にゲームオブジェクトが存在することになり、それぞれは独立しています。
位置などを相関関係で表わしたいものに使う。
スポンサードリンク
3.1 プレイヤーの弾を作成する
スプライトをシーンビューにドラッグドロップでBulletオブジェクト作成。
PlayerBulletという空のオブジェクトを使ってBulletの親にする。
BulletとPleyerBulletの相関距離は最初のポジションによって決まる。
etComponent().velocityを使って弾を移動させます。
プレハブとコルーチンを使って玉を出す。
コルーチン (Coroutine)
時間のかかる処理や、何かを待機するような処理をUpdateメソッド内で行うと、その処理が終わるまでゲームの進行がストップしてしまいます。 このような処理は数秒待機したり、特定の処理が終わるまで待機することが可能なコルーチンを利用します。
関数を呼び出すと戻り値を返す前に実行完了されます。すなわち関数で行なわれるアクションはひとつのフレームで行なわれるということを意味し
コルーチンとは実行を停止して Unity へ制御を戻し、ただし続行するときは停止したところから次のフレームで実行を継続することができる関数
コルーチンを実行するには StartCoroutine 関数を使用します:
UnityScript ではもう少し簡単です。yield ステートメントを含む関数はすべてコルーチンとして解釈され IEnumerator 戻り型は明示的に宣言する必要がありません:
さらに UnityScript でコルーチンを開始する場合、通常の関数と同様に呼び出しします:
https://docs.unity3d.com/ja/current/Manual/Coroutines.html?_ga=2.110981249.509694783.1511937012-1653178671.1510735616
玉の関数
// PlayerBulletプレハブ
public GameObject bullet;
// Startメソッドをコルーチンとして呼び出す
IEnumerator Start()
{
while (true)
{
// 弾をプレイヤーと同じ位置/角度で作成
Instantiate(bullet, transform.position, transform.rotation);
// 0.05秒待つ
yield return new WaitForSeconds(0.05f);
}
}
スポンサードリンク
3.4 スプライトの描画順
Sorting Layer (ソーティングレイヤー)
スプライトの描画順を変更するにはSorting Layerを使用します
dit -> Project Settings -> Tags and Layersから選択できる。
そこ後インスペクタビューでそれぞれのオブジェクトがどのレイヤーか決定する。
出来たもの。
プレハブの更新
オブジェクトをApplyする