Godotの気になった動作・コードを残していきます。
今回のテーマは「clamp(Vector2.ZERO, screen_size)」です。
#関数:clamp(value, min, max)
clampはvalueの値をmaxとminの間に収める。valueの値がmaxを超えたり、minより小さかったりすると、強制的に大きいときはmaxの値を、小さいときはminの値をvalueに入れて返す。
value:制限したい元の値。この変数の値をmaxからminまでの範囲で収める。
max:制限する最大値。
min:制限する最小値。
HPのを管理したいときなどに使うと便利。例えば、レベルに応じたHPの最大値をmaxに指定し、最小値を0にしておくと、回復ポーションを使用したときにHPの最大値以上に回復できないようにできる。
これを以下の表記に変更すると、画面サイズの範囲からキャラクターを出ないように制限できる。
#表記方法:position = position.clamp(Vector2.ZERO, screen_size)
position:Node2Dの組み込みプロパティ。
Vector2.ZERO:最小値。この場合、画面の左上(0,0)の座標を表す。
screen_size:最大値。この場合、画面右下に当たる画面サイズを表す。
このとき引数(カッコ内にある変数)の数が元のclampの3つから2つに減っているが、最初の「value」がオブジェクトである「position」にドット「.」を付けてclampの前に記載することで、自動的にpositionにvalueの値が割り当てられるので不要となる。
敢えてカッコ内の1桁目にvalue値を入れて、引数を3つにするとエラーになるので注意。
この記載方法をすると、positionが指し示すキャラクターが指定された画面の位置よりはみ出た時に、強制的に画面サイズの範囲に書き換えられるため、キャラクターが画面から出ないように制限できる。ただし、ノードの中心点を取得するため、画面の端までいくとキャラクターが半分外に出てしまうので、その辺りは別途制御を入れる必要がある模様。


