【实用教程】捡金币获得积分系统

使用事件

碰撞事件是一个用于检测物体碰撞最常用且普遍的事件,通过它可以实现很多功能的逻辑。比如拾取道具,拾取金币等。

具体用法

这里将制作一个拾取金币获得积分的功能。

演示

教程

1、首先做一个金币,可以使用基础零件、自定义模型等,但确保碰撞体合适。搭建一个合理的UI,用于显示积分。

按照如图所示,将对象进行分组

d984f1d16af985c50b72795de9c538b

2、接着我们创建一个值对象:这用于存储积分,在多人游戏中,最好的是不要放在Workspace中。

f43ce50d6687810f560da8a86c13fa6

3、我们再来创建一个服务器脚本(Sciript)和客户端脚本(LocalScript)。

d1d2ac47ba55f1c6ec0bdf7133ce9af

并且将客户端脚本的禁止状态(Disabled)设置为启用(true)

46cdc3197e206a9bd847295cd355453

4、接着我们在客户端脚本(LocalSciript)中写入以下代码:
这里我们使用到了碰撞事件,将会检测到玩家和金币之间的碰撞,最后使积分增加。

local player = game.Players.LocalPlayer
local Model = game.Workspace:FindFirstChild("金币积分系统"):FindFirstChild("Folder")

for k,v in pairs(Model:GetChildren())do
	v.Touched:Connect(function(Part)
		if Part and Part.Parent and Part.Parent:FindFirstChild("Humanoid") then
			local CoinNum = player.PlayerGui.UI_CoinNum.Frame.CoinNum
			CoinNum.Value = CoinNum.Value + 1
			player.PlayerGui.UI_CoinNum.Frame.TextLabel.Text = CoinNum.Value
			v:Destroy()
		end
	end)
end

5、在服务器脚本(Sciript)中写入以下代码:
这里会将UI复制到玩家的界面中,并开启客户端脚本,且添加了金币旋转的效果。

wait(1)
local TweenService = game:GetService("TweenService")
local tweenInfo = TweenInfo.new(
	0.5, -- Time
	Enum.EasingStyle.Linear, -- EasingStyle
	Enum.EasingDirection.Out, -- EasingDirection
	-1, -- RepeatCount (小于零时 tween 会无限循环)
	false, -- Reverses (tween 完成目标后会反转)
	0 -- DelayTime
)
for k,v in pairs(script.Parent.Folder:GetChildren()) do
	local tween = TweenService:Create(v, tweenInfo, {Orientation = Vector3.new(0, 360, -90)})
	tween:Play()
end

for k,v in pairs(game.Players:GetChildren()) do
	local UI_CoinNum = script.Parent.UI_CoinNum:Clone()
	UI_CoinNum.Parent = v.PlayerGui
	UI_CoinNum.Frame.LocalScript.Disabled = false
end

6、最后整理分组,即可实现拾取金币获得积分的效果,这里只需要一个Model(金币积分系统),不断的在Folder里复制Coin即可,请记住Model(金币积分系统)一定要放在Workspace下面。

c2ed686b0b53472c17ed5d7d880904f

7、如果没看明白,这里附上源文件,好了教程就到这里
金币积分系统.rbxm (20.5 KB)

3 个赞
关于我们    加入我们    条款    隐私政策
©2021 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。
粤ICP备20013629号