I have a door, and 2 union parts which are the sides that slide out when tweened, but when I try it they still tween to the right position, but just get pushed on top of the door. When I turned off "CanCollide" in all the parts and unions of the door it worked, but it seems it doesn't tween properly when CanCollide is on for everything. But when I have CanCollide off for everything I can walk through it which is an issue.
Gif of CanCollide on for everything (Broken version) https://gyazo.com/a619dcd02ff39a4ccee1003752e518ba
Gif of CanCollide off for everything (Working version)
https://gyazo.com/da21e27fe4783dde54a0658d28ac0a45
And here is the script I use to handle the tweening
local tweenService = game:GetService("TweenService") local part = script.Parent.Parent.Parent.d1.Union local part2 = script.Parent.Parent.Parent.d2.Union local function onCard(hit) local tweeningInformation = TweenInfo.new( 1, Enum.EasingStyle.Quint, Enum.EasingDirection.In, 0, false, 0 ) local partProperties = { Position = Vector3.new(-17.311, 3.451, 32.719) } local partProperties2 = { Position = Vector3.new(-10.22, 3.302, 32.719) } local Tween = tweenService:Create(part,tweeningInformation,partProperties) Tween:Play() local Tween = tweenService:Create(part2,tweeningInformation,partProperties2) Tween:Play() end script.Parent.Touched:Connect(onCard)
Basically, the problem here is that you are tweening with Position
The position property of a part, like velocity and Orientation, factors in collisions. If the part is colliding with the hitbox of another object. However, BodyMovers such as BodyPositions, BodyGyros, Bodyforces , BodyVelocities can combat this.
If you do not want to bodymovers and just want to tween it, use the CFrame property of the part.
CFrame, unlike position does not factor in collisions. So it can do things you can't do with positions and going through walls. The transfer from Position to CFrame is actually pretty easy as you can directly inputting the position of the CFrame matrix without doing anything with the orientation like such : Cframe.new(vector3pos)
, with all that said, tweening the cframe can be done like such :
local ts = game:GetService("TweenService") local tinfo = TweenInfo.new(1,Enum.EasingStyle.Sine,Enum.EasingDirection.Out) local part = workspace.Part local t = ts:Create(part,tinfo,{CFrame = CFrame.new(Vector3.new(-10.22, 3.302, 32.719))})
Locked by User#24403
This question has been locked to preserve its current state and prevent spam and unwanted comments and answers.
Why was this question closed?