【Unity】モンスト風ゲームを作る その2 動かす編

【Unityの練習ゲーム作り 第二弾!】

大人気アプリ モンスト風のゲームを、Unityの練習で作ってみます。

その1 大まかな設計を考えました

今回は、自キャラの動きを作ってみます。

自キャラの動き

モンストをプレイしたことがある方はご存知の通り、モンストで自キャラは以下のように動きます。

  • 指を離すと、引張方向とは反対方向に動きだす
  • 指を離すタイミングで初速が変わる
  • 敵キャラや壁に反射する
  • 敵キャラ,壁に当たる、ステージ移動で徐々にスピードが減速する

ボタンを離すと動き出す処理

壁と自キャラにRigidbody 2DとCircle Colliderを付けます。

自キャラの動きをコントロールするスクリプトに、「ボタンを押すと動き出す処理」を、以下のように書きました。

反射,減速する処理

壁,(今はまだないですが)敵キャラに衝突したときの反射は、Collider2DのMaterialに Physics2D Materialを追加で実現します。

これで衝突時に、オブジェクトが反射するようになりました。

移動中の減速は、スクリプトに記載します。

引張りと反対方向に動き出す

マウスでボタンを押し始めた座標 ⇨ ボタンを離した座標 の逆ベクトルで実現できそうです。

押した座標と離した座標を取得し、両者のベクトルを求め、さらに正規化-1 しています。スクリプトでは (離した座標 – 押した座標)に-1を掛けることで逆ベクトルを求めていますが、(押した座標 – 離した座標)でも良いですね。

指を離すタイミングで初速を変える

最初にUIのsliderを追加します。ハンドルは不要なのでinspectorから削除しました。

マウスを押している間は、スライダーが動作するようプログラムを修正します。

bool変数shotGaugeSetを使用し、マウス押下時はshotGaugeValue関数を呼び出すようにしました。

マウスを離した時、bool変数をFalseに戻すのと、using UnityEngine.UIを忘れずに。

あとは、スライダーの表示が変化するよう、shotGaugeValue関数に追記していきます。

6行目で gaugeLength> 1.025f としています。

UI表示上、Max状態から0にすぐに切り替わってしまうと、ゲームプレイに不合理感が出ると判断したためです。Max状態で少し猶予が発生するようにしました。

ゲージ値によって、初速度を変えることができました!


今回はここまで。

次回は敵キャラを追加していきます。