罗布乐思开发探秘系列——坐标操作示例

罗布乐思是腾讯在国内的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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值