猫とゲームエンジン

今日も猫に面倒みられながら生きてる

Unity : TopDownEngine : 吸い付くアイテム

KoalaMagneticCoin

サンプルにKoalaMagneticCoinというアイテムがあり、近づくと吸い付く挙動をする。

MagneticCoinサンプル

構造として通常のPickableItemとして作成されたアイテムがcollisionとprefabにMagneticコンポーネントが設定されたPrefabの中に入っている形になっている。

MgneticComponent

アイテム本体にMagneticが設定されていないのは吸い付く距離のコリジョンと取得距離のコリジョンを別に扱うための模様(実際にアイテムにMagneticを付けただけだと吸い付くような挙動をしてくれなかった。)

MagneticItemPreview_001

Unity : TopDownEngine : 関連資料

TopDownEngine 関連資料

関連しているかどうかは独断と偏見に基づきます

TopDownEngine リファレンス

各機能の概要といくつかの機能を作成する際の具体的な流れであるレシピが載っている
topdown-engine-docs.moremountains.com

TopDownEngineAPI ドキュメント

リファレンスを見ただけだったり触っただけだとわからない内容も多いのでよく見ておくこと。ちなみにTopDownEngineリファレンスのページの上の方にリンクがある。 topdown-engine-docs.moremountains.com

Feel(MMFeedback) リファレンス

InventryEngine と Feel 両方に言えることなのだけれど、TopdownEngine リファレンスにも多少資料が含まれているが 個別で見たほうが機能が判りやすかったので関連資料として記載。ただし、APIドキュメントについてはTopDownEngineAPIドキュメントに含まれていてパッケージも分けて記載してくれているしで参照する機会は少なそう。 feel-docs.moremountains.com

Feel(MMFeedback) APIドキュメント

feel-docs.moremountains.com

inventory-engine リファレンス

inventory-engine-docs.moremountains.com

inventory-engine リファレンス

inventory-engine-docs.moremountains.com

TopDownEngine Extension

有志の作成してくれているTopDownEngineの拡張機能(自分はまだ触っていないので詳細は知らない) github.com

Unity : TopDownEngine : キャラクターの移動速度をスクリプトから変更

ForceAbilitiesInitialization

今回はwalkの値を変更 変更自体は普通にできるけど値を変えただけだとすぐに実際に移動速度には反映されず、 ForceAbilitiesInitialization を呼び出すと反映された。

あんま調べれてないのでベストプラクティスではないかも。 とりあえず変わる。

_character = _collidingObject.GetComponent<Character>();
CharacterMovement _movement = _character.FindAbility<CharacterMovement>();
_movement.WalkSpeed += 8f;
_character.ForceAbilitiesInitialization();

topdown-engine-docs.moremountains.com

topdown-engine-docs.moremountains.com

ForceAbilitiesInitializationのPreview

SetContextSpeedMultiplier

SetContextSpeedMultiplierを呼び出すとスピードに関わる内部の倍率?が変わるようで runコンポーネントを設定している場合はwalk、run両方の値が変わった。 しかもInitializationを呼び出さなくてもすぐ反映される。

ただし CharacterPersistanceで次のシーンに持っていけない数値のようだったので 特定の条件による一時的な加速減速などを扱うための関数かも。

float currentContextSpeedMultiplier = _movement.ContextSpeedMultiplier;
_movement.SetContextSpeedMultiplier(currentContextSpeedMultiplier + 0.25);

いずれにせよ、永続的なパワーアップアイテムはcomponentの数値が変わるようなものの方が適切かな。

Unity : TopDownEngine : プレイキャラクターの数値を変更したパラメータを次のシーンに維持する

CharacterPersistence コンポーネントを追加するとシーン遷移後にパラメータが保存される。

topdown-engine-docs.moremountains.com

CharacterPersistanceを設定してシーンを移動

不具合?

シーン切り替え時にCharacterPersistenceが有効かつLevelManagerにInitialSpawnが設定されていない場合、 NullReferenceException: Object reference not set to an instance of an object のエラーが出た。詳細は確認していないが、少なくとも自分の環境でCharacterPersistenceが無い場合は勝手に適当なspawnポイントを設定してくれるようだが、設定されているとエラーで止まってしまった。

二年ほど前から二匹の猫と暮らしています。

りんぼ ♀ 四歳

f:id:yosemite_soupcurry:20231008145356j:image

同居人の友人宅から二歳になる少し前くらいに引き取らせて頂いた子。人間が部屋から移動すると大体後を追ってついてくる。かわいい。

 

よねづ ♀ 三歳くらい

f:id:yosemite_soupcurry:20231008145938j:image

一歳のときに引き取らせて頂いた元保護猫の子。人間の上に乗ってくつろぎがちで一日合計すると二時間くらい乗ってる。かわいい。

 

二匹ともよく人間をかまってくれる子達です。

Unity : TopDownEngine : ノックバックの量を変更する

被弾時のノックバックを変更するためのパラメータの場所。 移動周りにあるかと思ったら被弾挙動はHealthだった。ちょっと思ってた場所と違った。

topdown-engine-docs.moremountains.com

ノックバックの値変更するパラメータ