功能效果展示
思路分析
想要实现马里奥顶方块这样的效果,当角色碰撞到方块时,方块四散开来,就需要利用Touched碰撞事件API接口来触发事件。
方块的搭建
1、首先我们创建四个方块,每个颜色都不一样,用来代表不同的效果
2、在这些方块下都添加一个服务器脚本
3、接着在脚本下添加以下代码
1)、(白色方块)
local Part = script.Parent
Part.Touched:Connect(function(avr)
if avr and avr.Parent and avr.Parent:FindFirstChild(“Humanoid”) and avr.Name == “Head” then
Part.Position = Part.Position + Vector3.new(0,4,0)
end
end)
2)、(绿色方块)
local Part = script.Parent
local true_ = true
Part.Touched:Connect(function(avr)
if avr and avr.Parent and avr.Parent:FindFirstChild(“Humanoid”) and avr.Name == “Head” and true_ == true then
true_ = false
Part.Position = Part.Position + Vector3.new(0,4,0)
Part.Anchored = false
end
end)
3)、(红色方块)
local Part = script.Parent
local TweenService = game:GetService(“TweenService”)
Part.Touched:Connect(function(avr)
if avr and avr.Parent and avr.Parent:FindFirstChild(“Humanoid”) and avr.Name == “Head” then
Part.Position = Part.Position + Vector3.new(0,4,0)
local tweenInfo = TweenInfo.new(
1, – Time
Enum.EasingStyle.Linear, – EasingStyle
Enum.EasingDirection.Out, – EasingDirection
0, – RepeatCount (小于零时 tween 会无限循环)
false, – Reverses (tween 完成目标后会反转)
0 – DelayTime
)
local tween = TweenService:Create(Part, tweenInfo, {Position = Part.Position + Vector3.new(0,4,0), Transparency = 1})
tween.Completed:Connect(function(playbackState) --当前状态
Part:Destroy()
end)
tween:Play()
end
end)
4)、(黄色方块)
local Part = script.Parent
local TweenService = game:GetService(“TweenService”)
local true_ = true
Part.Touched:Connect(function(avr)
if avr and avr.Parent and avr.Parent:FindFirstChild(“Humanoid”) and avr.Name == “Head” and true_ == true then
true_ = false
Part.CanCollide = false
local tweenInfo = TweenInfo.new(
0.2, – Time
Enum.EasingStyle.Linear, – EasingStyle
Enum.EasingDirection.Out, – EasingDirection
0, – RepeatCount (小于零时 tween 会无限循环)
true, – Reverses (tween 完成目标后会反转)
0 – DelayTime
)
local tween = TweenService:Create(Part, tweenInfo, {Position = Part.Position + Vector3.new(0,4,0), Transparency = 1})
tween.Completed:Connect(function(playbackState) --当前状态
true_ = true
Part.CanCollide = true
end)
tween:Play()
end
end)
4、开始测试
补充说明
1.什么是工作区(Workspace)?
工作区中的对象是会被可视化显示到3D场景中的,并且只有在工作区中的对象才会发生物理交互。
服务对象。
不可创建。
不可复制。
不可删除。
2.什么是零件?
零件是一个物理对象,当零件在工作区Workspace中时,零件可以移动、变化外形体积、并与其他零件交互。零件是构建世界的基础元件,几乎所有物体都是用零件构建的,可以改变零件大小制作大底板,也可以零件合并、切割创建异形块,也可以使用零件制作角色和工具。
3.什么是服务器脚本?
只会在服务器运行的Lua脚本代码,用于编写服务器逻辑。