タワーディフェンステンプレートを改造してみた
概要
イベントという事なので、解析したかったアセットを解析&お題の「3」に合わせて3点改造してみました。元の状態と比べて、Waveの最後まで楽しく見ていられるくらいになっています。 公式で解説されていない部分を書き換えているので、アセットをダウンロードしてチラ見しては如何でしょうか(^ω^)ノ
以下が改造点です。
- 改造1.テキストの日本語化
- 改造2.攻撃した感を出す
- 改善3.マウス+キーボード操作を私にとってやりやすくする
アセットを解析する際のアドバイス
- 気になる挙動に注目して調べる事。調べていて気になった単語、処理は別途まとめる事で脱線を防ごう。
- 公式ドキュメントを一通り読んでおくことで、どういう機能があるかを前もって把握出来る。
- 全部を詳細まで理解するよりも、1つのコンポーネントが受け持っている内容を理解していく方が解析スピードが上がる。
- 作り方の違いからデータの管理方法、UIの挙動、Prefab の構造は違う物と考えておく。「いつもの」は存在しない。
- この作り方が絶対ではないはずなので、良い点悪い点を考える必要がある。
改造1.テキストの日本語化
タワーの情報をパッと見たときに分かり辛く感じてしまったので、日本語化を行った。
書き換えたファイル達は以下の通り。
- Assets\Data\Levels にレベル別の詳細テキスト
- Assets\Data\Tower にタワー情報
- Assets\Prefabs\Towers の各タワーのプレハブの Tower コンポーネントのタワー名
- Assets\Scenes の各シーンの UI の英語(個別に書くのは辛い…)
テキストを変えた事でレイアウトが狂うので、サイズ調整が必要でした。 こんな感じです。
改造2.攻撃した感を出す
改造した動機
- 攻撃した感が薄く、何が起きたのか分かり辛く感じた
- scene 上では色々と動いているように見えるが、画面上に反映されていないように見えていた
- 各パラメータを見る限りでは異常を感じる物が見つからず、不思議に感じていた
結果
- 「Directional Light」の intensity を 1 に変更し、各レベルのライトマップをベイクしなおす
- 攻撃エフェクト、ヒットエフェクトが見えるようになり楽しく見えるようになった
- 最初はダメージ数値を表示しようと思ったが、エフェクト達が見える事で十分に楽しくなったw
エフェクトが見えやすくなりました(^ω^)
改善3.マウス+キーボード操作を私にとってやりやすくする
操作し辛いと感じた部分
- マウスポインタを画面端に移動させるとカメラが移動する為、ポーズボタンなどを押すとカメラが移動する
- マウスの右ボタンを押しながらドラッグでカメラが移動するが、カメラの移動方法が逆に感じる(windows ユーザーだからとか?)
- マウス左ドラッグでカメラを動かしたいと感じた
- 配置するコストの表示を見落としがち
コードの解析
- level 1 の Scene の GameCamera オブジェクトの TowerDefenseKeyboardMouseInput コンポーネントで処理を行っている様なのでコード確認
- 継承元の KeyboardMouseInput の DoScreenEdgePan()と DoRightMouseDragPan() が該当部分だった
画面端ではカメラが動かないようにする
- 画面端の処理を無効化するためのプロパティを追加
- DoScreenEdgePan() に判定処理を追加して無効化!
ドラッグ方向を逆にする
- 反転させるためのプロパティを追加
- DoRightMouseDragPan() で panVector を求めた後にプロパティに応じて反転させる
マウスの左クリックでドラッグさせる
- DoRightMouseDragPan() の mouseInfo.mouseButtonId で ID を指定して判断を行っているのでコメントアウト
- ID の判定が無くなり、左右どちらのボタンでもドラッグが可能になる
- 関数名から「Right」を削除して完了
コスト表示を分かり易い位置に移動させる
- UI を動かして、サイズ調整
- UIによって基準となる位置が違ったりするので、不思議な挙動が見られた。極力基準は揃えた方が分かり易そう
最後、解析をした感想
- 結果として全体の雰囲気はつかめてきたが、思ったより内部が複雑なので新規拡張には時間がかかりそう。
- チュートリアルに書いてある事以上に色々な技術が詰まっており、非常に有用なコンポーネントがあった
- 普段はタワー情報などは1ファイルにまとめて管理していたため、タワー名とタワーの詳細が別のファイルにあり動作を追い辛かった
- Key 操作はかなり分かり易い状態。InputController でイベント発行、処理は TowerDefenseKeyboardMouseInput。Key のクラスが少し継承数が多いかな?
- 公開しようと web gl で書き出してみたら、シーン切り替えで止まる。4時間くらい動作検証をして、すぐに解決できなさそうなのでステージ1のみに切り替えた(´・ω・`)
- unity room にサンプルと見た目が変わらない物を置くのはどうなの?、と悩んだので公開はしませんでした。
- 実は大体1日で終わろうと考えていたが、合計で3日くらいかかりました(^o^)
公開しなかった実行ファイル
2018/05/11 頃までアップしています。ソースコードも公開しようか迷ったのですが、何か権利に引っかかると面倒だと思いましたので諦めました、すみません(´・ω・`) bin.zip - Google ドライブ