Open4

Godot 小技集

tkmfujisetkmfujise

GodotでコードをDRYにする3つの方法。継承、ヘルパー、Mixin

  • 継承(is-a)
    • TemplateMethodなど。差分プログラミング
  • ヘルパー
    • 処理の外出し。static関数にする。Utilsでもある。
  • Mixin(has-a)
    • Nodeにスクリプトを書いたシーンを使う側でアタッチする。〇〇ableみたいな名前になる

Mixinの例
https://youtu.be/rCu8vQrdDDI?si=4d1Ie9u0B1PUt8aq

tkmfujisetkmfujise

メニューなど、カメラが動いても画面に固定表示したい Conrol 要素は、CanvasLayer 配下に作成すると解決した。

tkmfujisetkmfujise

BGM など、get_tree().change_scene_to_packed() でシーンを切り替えても継続的に動作してほしいものは、autoloads に設定する。

tkmfujisetkmfujise

カメラをシェイクする方法。

extends Camera2D

const SHAKING_TIME = 2.0
var shaking_time := 0.0


func _process(delta: float) -> void:
    if shaking_time:
        shaking_time = maxf(0.0, shaking_time - delta)
        shaking()


func shake() -> void:
    shaking_time = SHAKING_TIME


func shaking() -> void:
    offset.x = 32 * randf_range(-1, 1) * shaking_time
    offset.y = 18 * randf_range(-1, 1) * shaking_time