「Cylindrical/円柱形」は CylindricalConstraint に該当します。これは、二つのパーツを結びつける特殊な制約です。この制約を使用すると、パーツは他のパーツを中心に円柱形の範囲内で自由に動き、また他のパーツを中心に回転することができます。これは、ドアのヒンジや車輪、または他の回転するオブジェクトのような、特定の軸を中心に動くオブジェクトを模倣するために使用することができます。
以下にCylindricalConstraint のプログラム例を示します。このプログラムは単独で動作しますので、Workspace もしくは ServerScriptService に入れて実行してください。
-- 2つのパーツを作成
local part1 = Instance.new("Part", workspace)
part1.Anchored = true
part1.Size = Vector3.new(1, 1, 1)
part1.CFrame = CFrame.new(-0.513, 8.763, 10) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-45))
part1.Name = "Anchor"
local part2 = Instance.new("Part", workspace)
part2.Anchored = false
part2.Size = Vector3.new(1, 3, 3)
part2.CFrame = CFrame.new(-2.987, 11.237, 10.25) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-45))
-- CylindricalConstraintを作成
local cylindricalConstraint = Instance.new("CylindricalConstraint")
cylindricalConstraint.Parent = part1
local attachment0 = Instance.new("Attachment", part1)
local attachment1 = Instance.new("Attachment", part2)
attachment0.Position = Vector3.new(-0.5,0,0)
attachment0.Axis = Vector3.new(-1,0,0)
attachment1.Position = Vector3.new(0.5,0,0)
attachment1.Axis = Vector3.new(-1,0,0)
cylindricalConstraint.Attachment0 = attachment0
cylindricalConstraint.Attachment1 = attachment1
cylindricalConstraint.LimitsEnabled = true
cylindricalConstraint.Restitution = 1
リミット
Limitを設定して、円柱拘束のスライド範囲と回転の両方を制限することができます。LimitsEnabledプロパティを有効にすると、LowerLimitとUpperLimitの値と、いずれかの制限に達したときのアタッチメントの弾性を定義するRestitutionが表示されます。
AngularLimitsEnabledプロパティを有効にすると、LowerAngleとUpperAngleの制限値と、どちらかの制限値に達したときのアタッチメントの弾力性を定義するAngularRestitutionが公開されます。
傾斜角度
InclinationAngleは、回転軸の方向を、Attachment0のX/Y平面におけるX軸からの角度として、-180から180の範囲で定義します。これにより、スライド軸を変更せずに回転要素を傾けることができます。