我必须使用身体姿势吗?体速?请帮忙
6 回答
如果我了解您想要尝试的内容,有很多方法可以做这样的事情。为了让它有效地“滑入另一块砖并消失”,你可以做两件事:
1) 在另一个砖块的方向上有一个强大的 BodyVelocity,它的 CanCollide 为 0。当砖块与另一个砖块接触时,它会等待很短的时间,然后自行移除。
2)您可以使用 CFrame 移动砖块,使用 CFrame.new(Brick1.Pos, Brick2.Pos) 找到角度,并使用框架系统将该 CFrame 添加到 Brick1 CFrame,创建“移动”效果。当“框架”结束时,您将移除砖块。
“消失在另一个人中”是什么意思?您可以使用多种方法来模拟滑动。您可以使用 CFrame、BodyVelocity、BodyForce 甚至是 BodyPosition。您甚至可以制作没有摩擦的砖块并在其上滑动。你还有什么需要知道的吗?如果是这样,请发表评论。
您可以制作一个onClick
脚本,使砖块具有将第二块砖块滑入到位的速度,然后创建一个新onClick
脚本来使速度的影响为负,以便将第二块砖块拉回。
据我所知,您想使用 CFrame。为了能够使两块砖在同一个空间中移动(两块砖的 CanCollide = true),您必须使用 CFrame。所有“Body”实例(BodyVelocity、BodyPosition)都对积木施加力,因此不能使它们在同一空间内移动。
如果你想要一个滑动门,你可以使用这个脚本:
local StartPosition = script.Parent.CFrame
local ToPosition = workspace.TargetPart.CFrame -- Make sure this is right
function Open()
for i=0,100,1 do
script.Parent.CFrame = StartPosition + CFrame.new(StartPosition.p,ToPosition.p).lookVector * ((StartPosition.p-ToPosition.p).magnitude/100) * i
wait(0.01)
end
end
function Close()
for i=100,0,-1 do
script.Parent.CFrame = StartPosition + CFrame.new(StartPosition.p,ToPosition.p).lookVector * ((StartPosition.p-ToPosition.p).magnitude/100) * i
wait(0.01)
end
end
local Moving = false
local IsOpen = false
function Toggle()
if Moving then return end
Moving = true
if IsOpen then
Close()
else
Open()
end
IsOpen = not IsOpen
Moving = false
end
-- Following code is just for testing
Toggle()
wait(1)
Toggle()
确保第二块砖比第一块大。
好吧,还有另一种更现实且不太可能失败的方法,您可以简单地制作一个砖块,然后在函数上,例如 onClick(),您可以使用透明度使其消失并让锚定的砖块变得可见,并使原始砖块 nonCanCollide ,并且新替代品的位置向方向移动,另外,我倾向于使用 BodyPosition,因为它适用于位置,可用于锚定和非锚定砖(非锚定也不适用),bodyvelocity 用于非锚定砖移动在一个有点乏味的方向,好吧,我说它不太可能失败,因为如果替代失败,那么原来的砖仍然在那里,如果子坏了,你可以制作一个备份脚本来保存它。
我希望这能有所帮助。-奥比安。
使用传送带将其滑入并使砖可以碰撞并使其比c更肥