【Godot】ひとくちメモ:clamp(Vector2.ZERO, screen_size)

Godot ゲーム制作

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が指し示すキャラクターが指定された画面の位置よりはみ出た時に、強制的に画面サイズの範囲に書き換えられるため、キャラクターが画面から出ないように制限できる。ただし、ノードの中心点を取得するため、画面の端までいくとキャラクターが半分外に出てしまうので、その辺りは別途制御を入れる必要がある模様。