ミニマムブロック

頭の中でつながるまで

2Dシューティング #2

参考知識 

①RigidBody2D

2Dのための物理挙動を行うのに必要なクラスです。重力の影響や、物体の移動はこのクラスを介して行われます。

Inputクラス

キーボードやJoyStickなどコントローラーの全ての入力を処理するためのクラスです。モバイルなどでは加速度センサーやジャイロにもアクセスすることが出来ます。

③xxxをアタッチする

ゲームオブジェクトにコンポーネントをくっつけること。add componentとかね。Unityではすべてがゲームオブジェクトであり、コンポーネントはゲームオブジェクトの特徴の1つ1つのこと。

④入力受け取りの方法

Input.GetAxisRaw(string axisName)

キーボードのような、押す/押さないという二択の場合はこれ。戻り値は-1,0,1。

Input.GetAxis(string axisName)

ジョイスティックのような、二択ではなく状態のもの。0-1の間を取得。

 

プレイヤーを動かそう

 ①RigidBody2Dをくっつける

重力は必要ないので、Gravity Scaleを0にしておく

②Animationをチェック

Apply root motionにチェックがついている場合は外す。

 Apply root motionは3Dのアニメーション制御用の設定。

2Dについていると不具合につながることがある。

スクリプトをアタッチする

Playerというスクリプトを作成、Playerオブジェクトにアタッチ

スクリプトを編集する

キー入力はInput.GetAxisRaw(string axisName)という命令を使う。

これは左入力で-1, 入力なしで0, 右入力で1を取得できる。

プレイヤーの移動する向きと速度(速度ベクトル)をrigidBody2D.velocityに代入する。

⑤銃弾を作る

スプライトをゲームビューに持っていき、プレハブにする。

スクリプトを作成し、startメソッド内で移動処理をしてしまう。

RigidBody2Dのvelocityに向きと速度を与える。

コルーチンを使って、0.5秒ごとに銃弾を出すようにする。

updateは処理が終わるまで待機になって、ゲームの進行が止まるため、

ここでは使わない。

スプライトの上、下はソーティングレイヤーで調整が可能

玉はプレイヤーの上ではなく、下から生まれた方が見た目かっこいい。