罗布乐思是腾讯在国内的Roblox代理。这里使用相对成熟国际版的Roblox Studio进行介绍,对应国服版的Studio是类似的。学习Roblox开发,需要具备一些Lua开发的基础知识。
在Roblox Studio中场景内的世界坐标系包含XYZ三轴。绿色表示Y,红色表示X,蓝色表示Z。在开发场景的右上角处有指明当前坐标系的方向,如下图:
在场景中添加一个Part,再用move按钮选中后可以看到当前Part的坐标朝向。如下:
但这里要注意,当Part被旋转时,由于在Move操作时你看到的坐标实际上是依附在Part上的,所以对应坐标轴的方向也会跟着旋转。这个当你选择Play Here进入游戏后,选中人物的躯干部分(UpperTorso)时也能明显看出方向的指向变化。如下图:
所以在Roblox Studio中操作物体的坐标位置时,一定要注意提前观察坐标轴的方向,不要想当然认为是与世界坐标方向一致的。
这里既然说到了人物模型,正好说一个设计开发的的小技巧:如何让人物触碰机关进行传送?
每个玩家在游戏中实际对应了是一个模型(Model),而每个Model会有一个PrimaryPart可以设置,玩家的人物模型对于的PrimaryPart是HumanoidRootPart。如下:
如果我们在代码中对这个HumanoidRootPart进行位置的操作,整个玩家的Model也随之发生位置变化。这样,我们就可以设计这样一种机制,当玩家的模型触碰到其它模型(实际也可能是这个模型的某一个Part)后,将玩家传送到另一个空间位置上去,实现类似传递门的效果。
我们只需要在这个模型(或对应的Part)下加入以下脚本(Script):
local part = script.Parent
local counter = 0
local function onTouch(pt)
if pt.parent:FindFirstChild("Humanoid") then
local torso = pt.parent.HumanoidRootPart
if torso then
torso.Position = Vector3.new(-10.4, 86.099, 187.6)
end
end
end
part.Touched:Connect(onTouch)
这个脚本设置了Touched事件的响应函数,这个函数先检测这个Touch的部件是不是属于一个玩家的人物模型,如果是的话,就拿到它的HumanoidRootPart,然后改变它的位置(Position),这样玩家就整体被传送到了新的位置了。这里注意更改位置(Position)既可以整体赋值(这里就用Vector3的方式,三个值依次对应X,Y,Z),也可以分开赋值,像下面这样:
torso.Position.X = -10.4
torso.Position.Y = 86.099
torso.Position.Z = 187.6