「Spring/ばね」は SpringConstraint
に該当します。これはRobloxの制約タイプの一つで、2つのアタッチメント間にスプリングのような力を追加します。SpringConstraint は、指定した伸縮性(またはスプリング定数)、ダンパー、自由長(未加重のスプリングの長さ)で、2つのアタッチメントを互いに結びつけます。これは、リアルタイムで物体間の距離が変化する場合や、ある種の動的な振る舞いを表現するのに役立ちます。
例えば、スプリングが伸縮する玩具や、ドアがゆっくりと閉まるメカニズムなど、実世界の動きを模倣するのに使用できます。
以下に SpringConstraintのプログラム例を示します。このプログラムは単独で動作しますので、Workspace もしくは ServerScriptService に入れて実行してください。
-- 2つのパーツを作成
local part1 = Instance.new("Part", workspace)
part1.Anchored = true
part1.Size = Vector3.new(1, 1, 1)
part1.Position = Vector3.new(0, 20, 0)
part1.Name = "Anchor"
local part2 = Instance.new("Part", workspace)
part2.Anchored = false
part2.Shape = Enum.PartType.Ball
part2.Size = Vector3.new(3, 3, 3)
part2.Position = Vector3.new(0, 30, 1)
-- SpringConstraintを作成
local springConstraint = Instance.new("SpringConstraint")
springConstraint.Parent = part1
springConstraint.Attachment0 = Instance.new("Attachment", part1)
springConstraint.Attachment1 = Instance.new("Attachment", part2)
springConstraint.Damping = 2
springConstraint.FreeLength = 8
springConstraint.Stiffness = 1000
-- スプリングを表示したい場合はtrueに設定
springConstraint.Visible = true
Free Length
FreeLength はスプリングの自然な静止長を定義します。アタッチメントが自由長より離れている場合、それらは一緒に強制され、アタッチメントが自由長より近い場合、それらは離れて強制されます。
Damping
Damping 値はスプリングの振動が静まるスピードをコントロールします。値が0の場合、スプリングはエンドレスに振動し、値が高い場合、スプリングはより早く静止します。
Stiffness
Stiffness はスプリングの強さを設定します。値が高いほど、FreeLengthよりもアタッチメントが近かったり遠かったりしたときに、より強い力で反応するスプリングになります。
リミット
LimitsEnabled プロパティを有効にすると、スプリングの最小と最大の長さを設定するための MinLengthと MaxLength が表示されます。スプリングのアタッチメントがこれらの限界に達すると、復元することなく互いに離れて移動しなくなります。