タイピングゲーム制作記の5回目です。
前回で複数の問題文の中から入力する問題を選択したり、入力を途中でキャンセルして他の問題文を打てるようにしました。
今回は盛りだくさんの内容で色々機能を追加しました。
敵と一緒にテキストを動かす
前回までに作成した一つの問題のテキスト群を敵の子要素に配置し3D上で敵と一緒にテキストが動くようにしました。
敵の子要素にテキストを配置し、前方にテキストを移動して敵と一緒に動くようにしました。
テキストが回転し見えなくなる問題
テキストを敵の子要素に配置したので、テキストは敵と共に回転してしまいます。
例えば固定のカメラであれば以下のような感じになってしまいます。
そこでテキストがカメラの方向を常に見るように変更しました。
テキストの位置を敵の位置から調整出来るようにする
テキストは常にカメラの方向を向くようにしましたが、テキストは3D上に配置している為、敵が重なるとテキストが重なって見えづらくなることがあります。
そこで個々の敵毎に敵の位置からテキストの位置を調整出来るようにしました。
これが結構大変で、テキストの元の位置から計算するのではなく回転したところからオフセット値を指定して出来るようにする必要があったためです。
テキストの位置を調整出来るようにしましたが、結局テキストは重なるのでとりあえず調整出来る機能を付けただけという感じになっています。
敵を倒した時の演出
問題文を入力し終えて敵を倒した時にラグドールを使ってバタッと倒れるようにしました。
1文字打った時の敵のダメージアクション等はいずれ追加します。
ゲームの舞台の作成
ゲームの舞台というか、フィールドをTerrain使って作成しました。
今回作成したのはステージ1用の舞台です。
木や草を植えたらUnityエディターの動作が異常に重くなったので本数減らしたり、LODを使う必要がありますね・・・・(´Д`)
他のステージではTerrainの使用は控えめにするしかなさそうですね。
大雑把なステージなので、敵の配置等をしながら少しずつ直していきます。
敵の管理と配置、タイピングの管理
ステージ1の舞台が大雑把に出来たので、登場する敵の配置と敵の管理、タイピングが出来る敵の管理をする機能を作成しました。
あらかじめ敵を配置しておくのか?ゲームの進行具合に応じて敵を登場させるようにするのか?等は手探りでやっていこうと思います。
主人公キャラクターの配置
タイピングゲームなので主人公のキャラクターの見た目は用意せず、Ethanの子要素にカメラを配置してゲームの進行具合に応じて動かすようにしました。
スタンダードアセットのFPSControllerで使っているような頭が上下するような機能を新たに作成し取り付けました。
ボーンの頭の子要素にカメラを配置するだけでもいいかなと思ったんですが、歩きのアニメーションで予想以上に動いてしまうので、ブレが少なくなるようにスクリプトで単純に上下するようにしました。
今回の成果物
今回までの成果物は以下のようになります。
ゲームの舞台は公開するゲームの舞台なので使わず動画ではテスト用のステージと敵を使っています。
また主人公を動かしていないので視点の上下動は確認出来ません。
テキストの位置はオフセット値を設定して敵の基点から少しずらして表示しています。
終わりに
次回以降は敵をどのように配置するのか?見えている敵全てをタイピング可能とするのか?ゲームの進行具合をどうするのか?難易度によってどうゲームに変化をもたらすのか?
等を行っていきたいと思います。
細かい部分では問題文で同じものが出ないようにしたり、一文字打った時の敵のリアクション、効果音の取り付け等もしていきます。
まだまだやるべきことがたくさんありますね。