強火で進め

このブログではプログラム関連の記事を中心に書いてます。

【Unity】 Point Effector 2D

動作検証環境

  • Unity 2022.2.0f1

はじめに

Point Effector 2D は引力や反発力を表現をしたい時に使用するコンポーネントです。

docs.unity3d.com

プロパティ

プロパティ名 説明
Use Collider Mask Collider Mask を使いたい時にチェック。
Collider Mask ここでチェックを付けた Layer に対してのみ Point Effector 2D の処理対象となる。
Force Magnitude 力の強さ。正の数の場合には反発の力、負の数の場合には引力となる。
Force Variation ランダムで設定される力の強さ。「Force Magnitude+0~ここで指定した値の範囲のランダム値」が最終的に出力される力の強さになる。
Distance Scale Force Mode の値が Constant 以外の時に発生する距離による効果にスケールをかける。
Drag 移動を抑える力の強さを設定。
Angular Drag 回転(角速度)を抑える力の強さを設定。
Force Source ターゲットのオブジェクトを引き付けたり、反発させたりするポイントを指定。Collider を選択した場合には Collider の位置に、 Rigidbody を選択した場合には重心がそのポイントとなる。
Force Target ターゲットのオブジェクト上の力を与えるポイントを指定。Collider を選択した場合には Collider の位置に、 Rigidbody を選択した場合には重心がそのポイントとなる。
Force Mode Constant 、 Inverse Linear 、 Inverse Squared のいずれかを選択可能。それぞれの効果については後述。

解説

ここでは解説の為に以下の様なプロジェクトを準備しました。

緑色の顔の Point Effector 2D の効果で白い顔が中心に向かってに吸い込まれるというサンプルで解説します。

それぞれの顔の GameObject にはこの様なコンポーネントが付けて有ります。

白色の顔

  • Circle Collider 2D
  • Rigidbody 2D

緑色の顔

  • Circle Collider 2D
  • Rigidbody 2D
  • Point Effector 2D

Point Effector 2D はこの様に設定しています。

Force Magnitude

正の値の場合には反発の力、負の値の場合には引力が発生している事が確認できます。

Force Magnitude = 20

Force Magnitude = -100

Force Mode で設定可能な値について

■ Constant

Target Point からの距離に関わらず常に100%の力で影響を与えます。

■ Inverse Linear

Target Point から離れるほど力は直線的に減衰して行きます。

■ Inverse Squared

Target Point から離れるほど力は2乗で減衰して行きます。

万有引力の法則」など「逆2乗の法則」を持つものを再現したい場合に使用します。

Distance Scale

Distance Scale は距離による影響をスケールします。その為、 Force Mode の値が Constant 以外に設定しないと意味が有りません。

数値を大きく設定するほど影響を与える力が弱くなっている為、中央に集まる速度が遅くなっているのが確認できます。

■ Distance Scale = 1

■ Distance Scale = 10

Drag

数値が大きいほど Target Point を中心に発生している白い顔のバウンドが収まるのが速くなっているのが確認できます。

■ Drag = 1

■ Drag = 10