見出し画像

風の実装を考える - 週間ゲーム制作雑記#03

こんにちは。ゲームクリエイター志望の商業高校生、べーたまるです。
今回も、この一週間に行ったゲーム制作について書いていこうと思います。

今週は、いろいろやってたので、あまりゲーム制作に時間を使うことができませんでした。いつも以上に内容は薄くなるかと思いますが、ゆるりと見ていただければ幸いです。

1.風を吹かせたい

さて、今週とりかかったのは、製作中のゲームの根幹を担う風システムの実装です。まぁ、まだ完成はしていないので、製作過程のちらみせ程度になりますね……。どうしても、独特なシステムを作ろうとすると時間がかかってしまうんですよね。とはいえゲーム性に大きくかかわる部分ですから、手を抜くわけにもいきませんし、なかなかどうして困りものです。

まず、想定している風システムというのは、ドラッグ操作で風を巻き起こし、オブジェクトを吹き飛ばすというものです。

風速や風が止むまでの時間は、一定にするかドラッグ速度などで変動させるか迷っているので、試しながら確かめていきたいかなと思います。

このシステムを大まかに分解していくと、

1. ドラッグ操作で風を生成する
2. 風で物を吹き飛ばす

3. 風を描画する
4. 風を消す

となります。難易度の高い順でいったら、3, 2, 1, 4といったところですかね。いや、まだすべての工程に取り組んだわけではないのでめちゃくちゃ適当な順位付けではあるんですが。

私の辞書に計画性という文字列は存在しないので、
場当たり的に1から取り掛かってみることにしました。

2.ドラッグで風を生成する

ここからは、数本の動画を用いて試行錯誤を見て行きたいと思います。
基本的な構造としては、一定距離マウスが移動したら頂点を追加し、
Debug.DrawLineで表示しています。メッシュ生成はまだしていません。

この状態を撮影するのを忘れていたので線が消えるパターンから見て行きます。雑ですね!

2-1.消すパターン1

画像1

まずはパターン1、風が吹いて尻から消えていくのをイメージしていたのですが、なんか後ろからなにかしらに食べられてるみたいな奇妙な感じがしたのでボツにしました。

2-2.消すパターン2

画像2

続いてパターン2、こちらはドラッグの勢いのまま消えるようにしましたが、これはまた風じゃないよなぁ……となったのでボツに。

結局、消え方は生成から一定時間たったら消えることにしました。
書いた時間に何倍かかけた時間にしようかなーと思っていますが操作感を調整する際に決めていこうと思います。

2-3.分割してみた

画像3

次に、線を分割してみました。いや、それまで一本だけだったんかいって感じですが、内部的には結構革新だったので一応載せておきます。一つのスクリプトですべての線を管理する形を取っているんですが、これってあんまりオブジェクト指向してないような気もしますね。設計に関してはまだまだ初心者レベルなので、少しずつ身に着けたいところです。

3.風で物を吹き飛ばす

そんなこんなでだいたい風の仕様と設計は決まったので、
その風に当たったオブジェクトに力を加える処理を考えていきます。

まず、風で力を加えるには、boxcastやらcirclecastやらで付近のオブジェクトを取得し、それのrigidbody2dを取得し力を加える、という方法が考えられます。というか、私の無い頭ではそれくらいしか思いつきませんでした。
もし代案があったらご教授いただけると嬉しいです……いやマジで。

しかし、ここで問題になってくるのは、「重さ」です。
昨今飛躍的に演算能力が向上しているスマートフォンですが、さすがに毎フレーム何百何千と当たり判定を取っていたらどうしても重くなってしまいます。極力、当たり判定は少なくする必要があるわけです。

3-1.AABB?自作当たり判定への道

画像4

というわけで、思いついた軽量化作戦がAABB(Axis-Aligned Bounding Box)という境界ボリュームの利用です。矩形で大まかな当たり判定を取って、接触していたら正確な位置まで特定して衝突判定をする、というものですね。詳細な判定は作る難易度が段違いですし、正確な判定はUnity標準の物理演算を使いたいと思います。

画像の実装は、点を追加しながらAABBを拡張していき、これまたDebug.DrawLineで描画しています。

4.おわりに

中途半端ですが、今週の進捗はここまでです。来週こそは風システム完成、といきたいところなのですが、来週はテスト前なので流石にお休みさせていただこうと思います。(こいついっつも休んでないか……?)

こうしてまとめていると、一週間の進捗とは思えないほど微々たる進捗率ですね。どうにか春までに完成させたいところなんですが……できるかな……?

入試休みや春休みで、加速させないとやばそうです。

どうしようもない駄文でしたが、最後までお読みいただき、本当ににありがとうございました。いいね、フォローいただけると励みになります。

この記事が気に入ったらサポートをしてみませんか?