ゲーム制作日誌⑤ 必要な機能の実装-2[オリジナル作品] 

こんにちは!M-Jadeです!

制作日誌④の続きをやっていこうと思います。

ゲーム制作日誌④ 必要な機能の実装-1[オリジナル作品] 
こんにちは!M-Jadeです! 今回から、前回挙げた機能を1つ1つ実装していきます。 ベースにするのはコレ 目の前にあ...

持ち上げたオブジェクトを投げつける

これは前回作った「持ち上げたオブジェクトを目の前に置く」機能を応用すれば、

割と簡単にできちゃいます。前回の箇条書きから

・オブジェクトを目の前に移動させる

・オブジェクトに指定ベクトルで力を加える(AddForce)

この部分を変えるだけで実装可能です。

ちなみに、今回のゲームではForceModeをImpulseとしました。

…ああ、そうそう。オブジェクトを投げた後~着地するまでの間はGravity Scaleを4ぐらいにまで引き上げておきましょうか。

あんまりゆっくりとした速度で飛んでくようにしちゃうと「投げた時の気持ち良さ」が欠けてしまいますし。

真上、足元にあるオブジェクトを持つ

これも前回作ったものをある程度流用できますね。

垂直方向への方向キー入力を検知して、1だったらOverlapBoxを出す位置をプレイヤーの真上に、-1だったらプレイヤーの真下に出してやるとこまで書いたら、後は目の前にあるオブジェクトを持ち上げた時とほぼ一緒です。

オブジェクトの移動可能な範囲を指定する

オブジェクトにアタッチするスクリプトを新たに用意します。スクリプト名を「Block」としておきました。それから、Mathf.Clampでプレイヤーの移動可能範囲と同じようにオブジェクトの移動可能範囲を設定します。

投げたオブジェクトがプレイヤーの行けないところに飛んでっちゃうと色々とマズいので、この辺の設定は忘れないようにしておきましょう。

ついでに、オブジェクトが着地した後にGravity Scaleを1に戻す処理を記述しておきます。

投げたオブジェクトを敵に当ててダメージを与える

  • 「ThrowedObject」レイヤーのついたGameObjectが敵に衝突するとダメージが入る
  • オブジェクトの着地後にレイヤーを「Ground」に戻す

オブジェクトが当たったかどうか分かりやすいように、当たったら敵を右方向にノックバックさせて点滅させ、しばらくの間動きが止まるようにします。

あと、オブジェクトが連続で当たらないように、止まってる間はレイヤーを「Enemy」から「EnemyDamage」に変えておきます。もちろん、Physics2Dの設定で「EnemyDamage」と「ThrowedObject」が衝突しないようにしないようにしておくのをお忘れなく…。

さて、ここまでの変更+αをまたGithubに載せておきます。

+真上、足元にあるオブジェクトを持ち上げる機能 +オブジェクトの移動可能範囲を指定 +投げたオブジェクトを敵に当ててダメージを与える機能 +他微調整

このままだと右からオブジェクトをぶつけた時も右方向にノックバックしてしまうので、オブジェクトが衝突した位置を取得できるようにした方がいいですね。その辺りのことを次回のネタとして扱うとしますか。

スポンサーリンク
レクタングル(大)広告1
レクタングル(大)広告1

シェアする

フォローする