Unityで0からADV #1

開発進捗

Unityで0からアドベンチャーゲームを作っていきます。
どうせ何も分からないので(将来使うことになるなら)、最新の「Untiy6」を使用してみることにしました。

2Dか3Dか、それが問題だ

教則本では2Dを勉強しましたし、制作ゲームもドット絵を使用するものなので2Dテンプレートで始めようと思いました。
しかし3D空間への憧れは前からあったので、いずれ手を出すのなら最初から3Dテンプレートで始めて勉強してしまおうと決めました。

2Dプロジェクトと3Dプロジェクトのファイルサイズも気になっていました。
比較してみると、2Dの方が1G超えと、最初からなかなか重いのです。
これは初期パッケージによるもので、3Dより2Dにデフォルトでインストールされるパッケージ量に違いがあるようでした。

2Dプロジェクトは1.24Gで、初期パッケージが多い。

3Dプロジェクトは222MBと、かなり少ない。

のちに必要パッケージを足していけば、結局は重くなりそうではあります。
しかし使いこなせないものまで入っているとモヤモヤしてしまうので、これで丁度よいと感じます。

それでは、憧れの2.5Dを目指してアドベンチャーゲームを制作していきましょう。

3Dテンプレートに2D画像を配置

まずは初心者でも実装が可能な挙動なのかを試作していく段階です。
さっそく3D空間にドット絵を置くことができない問題にあたり、わちゃわちゃしました。

素材画像の設定を変更してなんとか配置可能に。

配置はできたが位置が把握できず、ゲーム画面にすら映っていない状態。

この時点ですでに「ChatGPT」に質問しまくりなわけで、以降もずっと頼りっぱなしになります。
ChatGPTでつまずいたところをサイトで調べる、とした方が効率が良かったです。

配置ができるようになったところで、描いたドット絵を参考に部屋を作っていきます。

さすがに2D配置の方がやりやすい。カメラ操作に慣れないといけません。

今回は2Dスプライトとして配置しましたが、次回以降は3Dモデルのプレートにテクスチャで張り付けて配置するやり方の方が良さそうだと思いました。
3Dモデルを使うことで光源の影響や影なども表現できるようになるはずです。

2Dスプライトに影を付ける」方法もあるようですが、ちょっと調べた限り「URP(Universal Render Pipeline)」なるパッケージを使用して設定していくみたいです。
3DテンプレートにURPをインストールしたところ、それだけでサイズが1G超えました(´・ω・`)
3Dモデルの輪郭付けなどにも利用するらしいので、いずれ使わなければならなくなりそうですが、とりあえずアンインストールしておきました。

やはりUnity使用ってだけで、それなりのファイルサイズとなるところが一番の懸念材料かもしれません。

探索画面の想定挙動

レイヤー」の基本を学びつつ配置ができたところで、想定している基本的な「探索画面」を作り込んでいけるか試作していきます。

  • オブジェクトにボタン機能をつける。
  • 条件下でマウスカーソルを変更。
  • UIボタンの作成。
  • 条件下でボタンのオン・オフ。
  • ボタンオブジェクトのマウスオーバー。
  • カメラ移動のオン・オフ。

各項目を実装していくうえで、ChatGPTに頼りすぎて質問の嵐になってます。

スクリプトとイベントトリガー

カーソル変更」「ボタンのオン・オフ」「ボタンのマウスオーバー」などは「スクリプト」と「イベントトリガー」で制御していきます。

スクリプトには、参照できる「変数」と、関数で「挙動」を記述します。

分かりやすくしておくために、一つ一つの挙動でスクリプトファイルを分けています。
起動基準のオブジェクトにアタッチして変数などを登録していきます。

理解が深まってきたら、まとめていけると思います、きっと。
イベントトリガーと含めて、まだまだいろいろと混乱しエラーが頻発しました(´・ω・`)

イベントトリガーは「クリックしたら~」「触れたら~」「離れたら~」などの条件を選んで、発動する関数を指定できます。

各項目で、スクリプトに記述した関数を指定していきます。
ChatGPTに出してもらったスクリプトをコピペで修正していると、スクリプト名とクラス名が一致しなくてエラーとなったり、変数の「Public」と「Private」の違いに気が付かずに、変数を代入できなくてエラーと勘違いしたりと、初心者全開で挑んだところです。

おかげでスクリプトとイベントトリガーの関係性の理解が深まりました。

ボタン機能へのマウスオーバーも「Pointer Enter」「Pointer Exit」で実装可能でした。
オブジェクトの輪郭表示は、少し厄介そうでしたので、2Dを生かして枠アリ画像で切り替えています。

Canvas UI ボタン

カメラに影響されないUIフィールドである「Canvas」に専用ボタンを作成していきます。

オブジェクト作業サイズとCanvasサイズは大きさが違いすぎて最初は戸惑います。

設定でオブジェクト作業サイズと同じにはできるのですが、3Dの場合だと、カメラ位置とゲームサイズとの兼ね合いが良く分からず、泣く泣くデフォルトサイズに戻しました。

しかしヒエラルキーから、メインカメラCanvasダブルクリックすると瞬時に切り替わることに気が付いたので、それほど不便を感じなくなりました。

アニメーション

動画時でのクリックを分かりやすくするために「クリックしたらアニメーションの輪っかが出現するギミック」を実装です。
クリックしたらエフェクトがでる挙動には憧れがあったので、どれだけの労力かを試してみました。

  • イベントトリガーで「クリックしたら~」条件に「指定アニメーション発動」
  • アニメーションの最後のキーフレームに「自身を破壊するスクリプトを指定」

意外に簡単だったので安心です。
教則本で学んだアニメーションにも少し触れられたので良かったです。

テストプレイ

探索画面」での想定ギミックを実装できたので、通してテストプレイします。

動画で確認。

突貫ですが、なんとか形になったと思います。
本番での、この基本動作に演出・エフェクトを追加していく時がまた楽しみです。

次のステップは、ちょっと避けていた一番の肝「会話」ギミックです。
ノベルゲーム用のメッセージ方法はある程度は予習済み。しかし連続で繋げていく構成がいまいち理解しきれていません。
会話用アセットに頼ることになりそうな予感はありますが、とりあえずやってみることにします。

あとのステージとしては「横スクロール」でのプレイヤー操作画面があります。

探索」「会話」「横スクロール」の基本ができれば、一応今回のゲームは形にはなるはずです。
(その他ミニゲーム的なギミックは必要になってきますが)

コメント