Java版マイクラのMODでロボを作ってみてるよ #4 戦闘機能編

トロットビークル君に戦闘系機能を追加してみました!

👇の記事の続きになります

minecraft-hourouki.hatenablog.com

実装した機能

  • ガトリングガン(ロマン)
  • パイルバンカー(ロマン)
  • 垂直ミサイル(ロマン)
  • グレネードキャノン(超ロマン)

当初はガトリングガンだけのつもりがテンション上がりすぎて全部作ってしまった…

動画

👇のポストの動画パートを再生していただければ!

 

やったこと&学んだこと&工夫

ガトリングガン

  • 弾丸をロボ君の右手の位置に生成してたんだけど
  • 位置がぐっちゃぐちゃで、はるか上方に出たり左右に振れたり…
  • よくよく観察してみると、どうもロボ君の描画がサーバから3tick遅れてるっぽい
  • 今回は無理やり3tick前の座標を取っといて、そこに弾丸を生成する方向で回避
  • addVelocity周りがなんか悪さしてる…?

パイルバンカー

  • ハンマーの技術転用ができたので、そんなに難しいこともなく
  • 特定範囲のEntityを取得したり、ノックバックさせる技を覚えた!
  • モーションは一番時間かけたかもしれない、もっといじりたい…

グレネードキャノン

  • ほぼほぼガトリングガンの技術転用でいけた
  • ただ、爆発のパーティクルが一定距離を超えると表示されない問題がちょっとてこずったかも
  • パーティクルの生成を、弾丸が何かへの当たり判定にひっかかった時にフックしてたんだけど
  • どうも一定距離を超えると、クライアントサイドでは当たり判定のイベントが発火されないっぽい
  • エンティティの消滅イベントは発火されてたので、そっちにフックするようにして回避

垂直ミサイル

  • 正直一番きつかった…
  • ホーミングするにあたり、ピッチxヨーx速度からベロシティを出そうとしてたんだけど、どうやってもピッチとヨーが変な値になっちゃう
  • もうあきらめてベロシティをベースにして、そこからピッチとヨーを割り出す方向に切り替え…。なんかださいんだよなぁ…
  • あとは、ホーミングターゲットの取得で、初のレイトレースを使った!
  • ①ざっくり範囲指定でMOBの一覧を引いてくる
  • ②👆にレイトレースをかけて、ミサイルとの間にブロックがある場合は対象外にする
  • これは色々応用が利きそう
  • ロックオン機能も作ってみたいなぁ

所感

ちょっとやりすぎた感…。でもなかなかよい感じのものができたと思います!
イクラの無限の可能性を改めて認識しました。
あとは超巨大ボスとか作ったら、普通にACっぽいゲームにできそう…。

ちょっと頑張れば、バンピートロットの、普段の生活とか土木建築がある中で、突発的にロボバトル(AC風)が発生する、みたいなのを作れそう。

ちょっと考えてみるかなぁ。

次回以降

ちょっと悩み中です。ネタはありすぎるぐらいあるんですが、どれにしようかな…。

今のところ有力候補は次の二つです、適当に色々触りながら決めていこう

  • カメラのMODを組んでみる(2Dアクション風とか、タクティクスオウガ風とか、HD2D風、とかを色々切り替えられるやつ)
  • ボス級超巨大ロボ+取り巻きMOBを作って対決してみる