3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 侠客前传 | 刺客信条 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 6186|回复: 4
打印 上一主题 下一主题

[分享] Roblox官方教程精选3-对陷阱和拾取道具进行编码

[复制链接]

94

主题

126

帖子

409

积分

管理员

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

贡献度
39
金元
1925
积分
409
精华
6
注册时间
2016-9-12
QQ
跳转到指定楼层
主题
发表于 2019-11-15 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在“制作你自己的障碍跑游戏”教程中,首先是 Roblox Studio 简介,然后便由你设计一款基础的障碍跑游戏。在本教程中,你将执行如下操作:
思考游戏设计中的障碍物和拾取物
制作一个危险部件,会摧毁任何触碰到它的玩家
创建拾取物,玩家可获得超级跳跃能力
学习如何调整脚本以自定义游戏行为
游戏设计原则 – 障碍物和拾取物
大多数动作类游戏都具有玩家必须要避开的“障碍”或“陷阱”。与四处移动或追逐玩家的敌人不同,障碍物通常只是游戏世界的一部分,但却同样危险!例如:
熔岩或火山坑
毒水池
炸药地雷
同样,几乎每一款游戏也都有玩家可以找到和获取的“拾取物”。例如:
钱币或宝石
医药包
短时间内赋予玩家特殊能力的强化物品
创建危险陷阱
首先,让我们在障碍跑游戏中创建一个最终会变成危险陷阱的新部件。
1.选择“MODEL(模型)”选项卡。这里会显示大多数进行部件操作的重要按钮和选项。


2.创建一个新部件并将其置于另一个平台的顶部。确保留出足够的安全空间(下方显示的绿色区域),这样玩家就可以跳过陷阱而不会碰到陷阱。

3.将部件“锚固”在适当的场景内,这样部件就不会滑出平台。
  
  
4. 单击“Color(颜色)”图标下方的“小箭头”。

5. 从 Roblox“取色器”中选择一种颜色。亮红色是个不错的选择,因为它经常被用作“危险”色。


太棒了!现在你已经拥有了一个很不一样的亮红色部件(希望它有点危险),这样玩家将会试图跳过它。

为部件命名
在进一步操作之前,最好先为此重要部件输入一个自定义名称。这样做有助于你在 Explorer(资源管理器)窗口找到该部件,以进行必要的修改。
· 如果尚未在游戏编辑器窗口选择,则选择陷阱部件。在“Explorer(资源管理器)”窗口,该部件会高亮显示。
   
· 注意:只将其命名为“部件”并没有什么用处,所以我们要更改一下。“右键单击”部件名称以显示菜单选项。选择“Rename(重命名)”。
   
   
·输入“陷阱”,这作为部件名称好多了!

创建脚本
在这一节点,新的陷阱部件看起来有些不同,它不会“执行”任何操作 — 它只是游戏的另一个组成部分,玩家能够触碰到和绕开走。
要使陷阱部件具有特殊功能,就需要一个“脚本”。这些脚本由功能强大的小“代码”元组成,能够执行特殊动作、改变游戏中的元素或执行所有你能想象到的操作。你将在 Roblox 中使用“Lua”语言,这是用于游戏脚本编写非常流行的语言。
在 Explorer(资源管理器)窗口,将鼠标*悬停*在部件名称上方。
单击圆圈 (+) 按钮。
滚动下拉列表,找到“脚本(script)”并单击。
   

这将会在新的选项卡中创建一个新脚本并显示出来。

技巧
如果你知道自己要添加的确切项目(在本实例中为“脚本”),只需在靠近下拉列表顶部的小搜索框中,输入名称的前几个字母。这时只会显示与你输入内容相关的项目。
修改脚本
现在,脚本的用处并不明显 — 一般只是在那里等待你添加一些命令。要改变此种状况,你需要:
1.“删除”整行 print("Hello world!")。
复制粘贴以下几行新内容:
                 local trapPart = script.Parent
local function onPartTouch(otherPart)
    local partParent = otherPart.Parent
    local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
    if ( humanoid ) then
        -- Set player's health to 0
        humanoid.Health = 0
    end
end
trapPart.Touched:Connect(onPartTouch)
游戏测试
有趣的部分来了:测试新陷阱!
按“Play(开始游戏)”按钮。
四处奔跑跳跃直到触碰到陷阱部分。不要跳过陷阱,而是“触碰”它。如果操作得当,玩家会立即爆炸,碎片四散。
操作原理
太酷了!但是操作原理是怎样的呢?让我们来逐步解析脚本。
1.第一行仅设置一个“变量”,说明脚本与哪个特定的游戏部件相链接。在本实例中,脚本与其“父项”陷阱部件相链接。
                 local trapPart = script.Parent
1.下一部分(此处以高亮显示)即函数。
在计算机编程中,函数是指同属的步骤集,你可以反复使用。此函数会检验操作笨拙的选手(并非游戏世界中的某些其他随机部件)是否会触碰陷阱。如果触碰到,就会将玩家的生命值设置为 0,这样会立即摧毁玩家。哦,好疼啊!
                 local trapPart = script.Parent
local function onPartTouch(otherPart)
    local partParent = otherPart.Parent
    local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
    if ( humanoid ) then
        -- Set player's health to 0
        humanoid.Health = 0
    end
end
trapPart.Touched:Connect(onPartTouch)
1.此处显示的最后一行,是将陷阱部件和函数与触碰事件相关联。这样,只要触碰陷阱部件,函数就会运行。
trapPart.Touched:Connect(onPartTouch)
3:制作跳跃强化器
现在让我们创建一个酷酷的“强化拾取道具”,能够让玩家在短时间内具有超高跳跃能力。
创建一个新部件,并将它放置在另一个平台的顶部。

将部件“锚固”在适当的场景内,这样部件就不会滑出平台。

通过从 Roblox 取色器中选择新颜色,来改变颜色。

为部件“重命名”,例如“JumpBoost”。

创建脚本
就像之前一样,你需要一个“脚本”让这个部件具有特殊功能。
在“Explorer(资源管理器)”窗口,将鼠标*悬停*在部件名称上方。
单击圆圈 (+) 按钮。

滚动下拉列表,找到“脚本(script)”并单击。像之前一样,这将会创建一个新脚本并显示出来。

### 修改脚本
现在,让我们来修改新脚本。
1.“删除”整行 print("Hello world!")。
2.复制粘贴以下几行新内容:
                 local boostPart = script.Parent
-- Set a variable for boosted jump power
local boostedJumpPower = 100
local function onPartTouch(otherPart)
    local partParent = otherPart.Parent
    local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
    if ( humanoid ) then
        boostPart.CanCollide = false
        local currentJumpPower = humanoid.JumpPower
        if ( currentJumpPower < boostedJumpPower ) then
            humanoid.JumpPower = boostedJumpPower
            wait(10)
            humanoid.JumpPower = currentJumpPower
        end
    end
end
boostPart.Touched:Connect(onPartTouch)
游戏测试
太棒了!现在测试一下游戏,看看强化器是否能让你的玩家拥有超人般的跳跃能力。
按“Play(开始游戏)”按钮。
找到强化部件,身体穿过部件。现在试着跳起来,如果操作得当,你会跳得比以往更高。
操作原理
让我们来解析这些代码行,了解脚本的操作原理。
1.像之前一样,第一行会设置一个变量,说明脚本与哪个特定的游戏部件相链接。在本实例中,是强化部件。
local boostPart = script.Parent
1.下一部分就是要设置新变量。所有变量都具有关联值,该值设为 100。在脚本后期,此变量将用于在幸运玩家触碰到强化物品时,提高他们的跳跃能力。通常,Roblox 的所有玩家跳跃能力为 50,因此这一设置会让玩家跳得更高。
local boostPart = script.Parent

-- Set a variable for boosted jump power
local boostedJumpPower = 100
之后有一个函数,结构与你以往看到过的类似。但是作用却大不同。不同于将玩家生命值设置为 0,该函数:
将强化部分设为“仅”针对玩家的幽灵对象。这样,玩家触碰强化道具时可以穿过道具而无需跨过它。这对于拾取物品来说真是一项不错的小改进。
将玩家当前的跳跃能力(强化前)设置成变量 currentJumpPower,这样脚本就会相对正常跳跃能力有一个参考值。
确保玩家当前跳跃能力值低于强化跳跃能力值。这意味着,玩家只有在未强化的情况下,才能获得跳跃强化。
如果玩家未得到强化,这会提高其跳跃能力。
10 秒后会将玩家的跳跃能力设置回正常,该值存储在变量 currentJumpPower 中。
                 local boostPart = script.Parent

-- Set a variable for boosted jump power
local boostedJumpPower = 100

local function onPartTouch(otherPart)
    local partParent = otherPart.Parent
    local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
    if ( humanoid ) then
        boostPart.CanCollide = false
        local currentJumpPower = humanoid.JumpPower
        if ( currentJumpPower < boostedJumpPower ) then
            humanoid.JumpPower = boostedJumpPower
            wait(10)
            humanoid.JumpPower = currentJumpPower
        end
    end
end
boostPart.Touched:Connect(onPartTouch)
最后一行与第一个脚本的最后一行几乎一样:只是将强化部件和函数与“触碰”事件相关联。
调整脚本行为
如你所见,脚本可以让你添加独特的游戏功能和特殊的玩家行为。大多数脚本可以通过调整或添加几行变得很酷。让我们看两个示例。
更改变量值
当对脚本进行编码时,你会用到很多变量。每个变量都具有:
独特的描述性“名称”,用于在脚本其他位置进行识别。在上述超级跳跃脚本中,boostedJumpPower 就是一个变量名称。
一个“值”,该值可以更改(游戏开始后,变量会存储等值信息或数据,但你可以根据需要,在游戏运行时更改此值)。
对于超级跳跃强化器脚本,boostedJumpPower 变量值设置为“100”。相对于 50 的正常跳跃能力值来说,这是很大的提升。但你可能希望跳得更高,这样玩家就犹如脚踩火箭,翱翔天际。
要实现这一点,只需在脚本中将 100 改成 250 之类的数值:
                 -- Set a variable for boosted jump power
local boostedJumpPower = 250
现在运行游戏并测试效果吧。新数值应当会让玩家高高地跳向空中!
对于大多数游戏来说,250 这个新数值可能过高。在此情形下,只需将其减至较为合理的数值,比如“120”:
                 -- Set a variable for boosted jump power
local boostedJumpPower = 120
移除拾取道具
当测试游戏时,你很快就会发现玩家抓取的超级跳跃强化器不会消失。尽管脚本代码的确能确保玩家在 10 秒内不会始终不停地反复强化,但部件本身还是会停留在屏幕上。
如果你希望拾取道具仅能使用一次,则可以向脚本添加一个简单的命令,在受到触碰(玩家拾取)后,部件即刻“销毁”。在函数内,只需添加此高亮行:
                 local boostPart = script.Parent

-- Set a variable for boosted jump power
local boostedJumpPower = 120

local function onPartTouch(otherPart)
    local partParent = otherPart.Parent
    local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
    if ( humanoid ) then
        boostPart.CanCollide = false
        local currentJumpPower = humanoid.JumpPower

        if ( currentJumpPower < boostedJumpPower ) then
            humanoid.JumpPower = boostedJumpPower
            boostPartestroy()
            wait(10)
            humanoid.JumpPower = currentJumpPower
        end
    end
end
boostPart.Touched:Connect(onPartTouch)
现在,再次运行游戏并抓取跳跃强化器。如果你在适当的位置添加了 Destroy() 命令,部件应当会消失。
提示
跳跃强化部件销毁后,Roblox Studio 将在你编辑脚本的位置“关闭”选项卡。如果想要在停止游戏测试后再次编辑脚本,你需要在“Explorer(资源管理器)”窗口双击脚本,重新将其打开。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

93

主题

3万

帖子

5万

积分

游戏圣者

Rank: 12Rank: 12Rank: 12

贡献度
134
金元
497948
积分
50331
精华
0
注册时间
2015-12-17

3DMer

舒服的沙发
发表于 2019-11-15 19:30 | 只看该作者
。。。。。。。。。
回复 支持 反对

使用道具 举报

0

主题

8408

帖子

8533

积分

游戏精英

Rank: 8Rank: 8

贡献度
0
金元
85334
积分
8533
精华
0
注册时间
2006-1-10

萌新欢迎奖

硬硬的板凳
发表于 2019-12-17 15:41 | 只看该作者
3dm438 发表于 2019-11-15 19:30
。。。。。。。。。

为啥这几个帖子下面全是你在。。。
回复 支持 反对

使用道具 举报

34

主题

87

帖子

837

积分

超级版主

虎牙游戏发行制作人

Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22

贡献度
10
金元
7966
积分
837
精华
0
注册时间
2018-11-27
冰凉的地板
发表于 2019-12-18 09:57 | 只看该作者
无论是游戏还是开发的问题都可以在官方QQ群中提问,加入QQ群了解更多信息:163421242
参加活动:提交完整策划案、团队介绍、作品体验地址,到邮箱roblox@tencent.com


回复 支持 反对

使用道具 举报

0

主题

376

帖子

444

积分

高级玩家

Rank: 4

贡献度
4
金元
4281
积分
444
精华
0
注册时间
2009-5-27
5#
发表于 2019-12-20 09:29 | 只看该作者
厉害了,这个很实用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2024-4-23 16:18 , Processed in 0.101089 second(s), 20 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表