見出し画像

ダンジョンでお花摘みさせて!!"いわゆるリファクタリング" #12

こんにちは。やーぺです。

 こちらは「ダンジョンでお花摘みなんか許しません!!」の二次創作、「ダンジョンでお花摘みさせて!」のスコアアタックゲーム開発記録です。(フリーウェア公開予定)

原作はこちら

体験版も公開中です。(Booth以外のアップロード先も検討中)

前回はDynamicNavigation機能を作成しました。

今週の作業はステージ全体のシステムの見直しです。

実は今使っているステージのシステムが微妙に管理しづらく、自分でも「あれ?どうなってんだこれ?」ってなることが多くありました。そこで今週はシステムの見直し及び修復作業をしていました。

こちらが現在のステージ選択画面とステージ選択ボタンの情報です。

Godot Engine - ダンジョンでお花摘みをさせて!! - StageSelect.tscn 2020_11_28 17_19_02

この画像を見るとステージ選択ボタンがステージの情報を持っているということになります。ここで気を付けなければいけないところが誤ってステージ選択ボタンを削除してしまった場合、ステージ情報も一緒に消えてしまうのです。本来別々の画面(シーン)であるはずなのに、互いに強く干渉しあっている状況です。

システム全体図


一度、これでステージを削除してしまって開発が遅れたことがあるのでここを直していきました。

対処は簡単です、ステージ情報をステージ選択ボタンに保存するのではなくてステージ自身に保存させることです。

ステージ情報を移動

これで終わり。簡単!・・・ですけど、テストが地味に面倒くさい。データの更新されているかとかセーブデータに影響がないかとか。そっちのほうが時間持ってかれちゃいましたねー。


という感じで公開できる進捗がこれだけなんですけど・・・それではあまりにも短いですね。そこで技術的に興味がある人向けに、前回に少し登場した死霊ちゃんをちょっと解説をしようと思います。


以前にチラッと死霊ちゃんが出てきましたね。

右のほうにいる半透明な子が死霊ちゃんです。「ダンジョンでお花摘みなんか許しません!」の20話にチラっと出てくる短髪の子がモデルです。

現在、死霊ちゃんの構成要素は以下のようになっています。

Godot Engine - ダンジョンでお花摘みをさせて!! - Ghost.tscn 2020_11_28 18_07_06 (2)

ノード名(ノードの型):ノードの説明

Ghost(KinematicBody2D):物理制御を行うノード
MoveAnimation(AnimationPlayer):移動時のアニメーションを行うノード
FluffyAnimationPlayer(AnimationPlayer):上下にゆらゆらさせるためのアニメーションを行うノード
Sprite(Sprite):死霊ちゃんの画像
CollisionShape2D(CollisionShape2D):Ghostの接触可能範囲
TouchZone(Area2D):剣士さん(プレイヤー)が触れた場合にダメージを与える範囲制御ノード
TouchZone/CollisionShape2D(CollisionShape2D):TouchZoneの接触可能範囲
NavTimer(Timer):経路探索を実行するタイマー(0.5秒に一回経路を更新する)
Detection(RayCast2D):剣士さんを検知(見つける)ための物理制御ノード
IconPosition(Position2D):剣士さんを見つけたときに表示するアイコンの位置(「!」マークの位置)

以前にどこかで紹介しましたが、Godotはノードを組み合わせてシステムを作ります。ゲームの死霊ちゃんもノードの組み合わせて動いています。

死霊ちゃんの挙動は「剣士さんを見つける→アイコンを表示して剣士さんを追いかける」です。それをちょっと言い方を変えると「Detectionで剣士さんを検知する→検知出来たらIconPositionの位置にアイコンを表示して、NavTimerを動かし経路を更新する」となります。

そして死霊ちゃんが動き始めたら動く方向に合わせてMoveAnimationを上下左右に更新。

言葉にすると何がなんの役割を持っているのかが分かりやすいですね!本当はもうちょっと解説しようかなって思ったんですけど本来のテーマから外れてしまうのでやめておきます!


今週はここまで!

かなり雑に解説したので、「これどうなってんの?」リプでもDMでもなんでもどうぞ!
あと新機能とかもろもろ作って「びっくりさせたろ!」って考えています。なので今後も公開できる進捗が少なくなってしまうかもしれないのであしからず・・・。

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