-
Q:图中左边每条数字都是单独的BillboardGui,通过修改StudsOffset属性来实现的;右边每条数字都是单独的TextLabel,通过修改Position属性来实现。
问题:能否通过修改TextLabel来实现左边的效果?(BillboardGui的属性不变的情况下)
A:将BillboardGui的高度做大一些会有问题么 这种hud一般都是用label做的,或者直接把label映射到GUI上 -
Q:右边只修改TextLabel会受到BillboardGui的高度限制
A:通过映射的方式吧
local camera = workspace.CurrentCamera
local vector, onScreen = camera:WorldToScreenPoint(player.Character.Head.HairAttachment.WorldPosition)
可以将头的坐标映射到UI上 -
Q:没有办法在自己设计的gui上面添加炫酷的光影和特效
A:这个只能用图片做了 目前界面上没法加粒子效果 可以用图片结合TweenService做一些效果出来 -
Q:我加入一个Accessory,它就给我创建一个HeadWeld,莫名其妙
A:嗯 玩家带上帽子就会创建这个把头和Accessory链接起来的东西 -
Q: 我还遇到了另一个问题,就是ContextService 能够映射键盘到移动设备,但那种上下左右的圆盘是怎么映射出来的呀,我自己映射wasd只有四个按钮
A: 是说摇杆么 手机左下角的那个那个没法映射到各个方向 pc上最多是2个方向键一起按 -
Q:那如何在手机上独立实现这个摇杆呀
A:roblox自带摇杆的 -
Q:
大佬如何去除官方摇杆旁边的jump这个按钮
A:
这里建个localScript 然后
game.Players.LocalPlayer.PlayerGui.TouchGui.TouchControlFrame.JumpButton.Visible = false -
Q: sharkbite游戏里面,我想做一个可以在海水中游动的鱼应该怎么做呀,我发现游戏中的水好像不能潜水
A:可以把人物所有的part的密度调为1 这样就可以让人飘在水里了相当于没有浮力了 sharkbite游戏里面不一定是这么做的哈 他那个是一直朝着鼠标的方向移动我往下移动鼠标 玩家自己就跟过去了 就跟我们一直往水里游一样 -
Q: 请问怎么添加像其他游戏那样的光影
A: 将lighting服务的technology改成shadowmap
10.Q:怎么制作像发光的金子一样的经验条
A:可以在PS等图像编辑软件中设置好颜色和外发光效果,加载到Roblox中使用
11.Q:图片在gui上面显示不会适应gui的比例大小吗
根据设置的参数来的
Scale会根据父节点的大小计算当前节点的大小
Offset可以认为设置的就是固定像素大小
12.Q:想问下测试了后那个小人的尺寸在哪里查看?
A:可以看下size属性 暂时没法看人物整体的大小 如果是基础的人物大小 大约是5
13.Q:我想在客户端生成一些生物,怎么取消他们之间的碰撞呢?PhysicsService貌似只能在服务器上用
A:这里写的客户端可以设置碰撞组 但不能创建 修改 删除
可以通过设置碰撞组解决
-
Q:Roblox可以做数值体验的玩法吗
A:可以做 平台上很多游戏是做数值的 -
Q:如何解决服务器滞后问题?我从ServerStorage里克隆出一个大地图,然后服务器就卡主一会,如何解决这个问题?
A:试试一点一点地克隆到workspace里,
https://devforum.roblox.com/t/how-should-i-handle-loading-maps/242885/4
16.Q:请问如何在roblox里实现类似于玩家月卡的功能
A:和其他引擎实现方式一样,可以在玩家数据中添加一个月卡过期时间,然后每次玩家上线时,判断一下当前时间是否超过过期时间,超过就取消月卡效果即可
- Q:如果自己建模上传 是不是自己也得配套把动作做了
A:提示信息 - 罗布乐思官方论坛 - Powered by Discuz! 看下这个帖子吧这个是上次模型的方法 动作的话 如果按照roblox的骨骼定义 是可以直接只用默认的动作的。Importing Rthro Avatars 可以看看这个 里面有说骨骼的
18.Q:穿模?
A:帽子稍微做大一点或者把帽子的挂点稍微往下移一点
- Q:head和别的不一样,没有meshld怎么替换?
A: 可以做一个meshPart 替换原来的那个
20.Q: 如果我在游戏中想要卸载背包里面的装备, 用哪个函数呢,ChildRemoved和Destory都不行
A:ChildRemoved是一个事件 当工具从背包移除之后 这个事假会触发
用下面的方法移除
local tool1 = game.Players.LocalPlayer.Backpack:FindFirstChild(“Tool1”)
tool1:Destroy()
- Q: 怎么给人物增加一个属性
A:
local intValue = Instance.new(“IntValue”, player)
intValue.Name = “Age”
intValue.Value
代码里 先获得玩家的对象 然后用Instance可以挂任何上面截图里的对象
之后就可以通过player.Age.Value来访问或者修改属性了
22.Q:我给一个Part写了脚本,如果是用LocalScript写的,无法运行。
A:恩 是的 localScript只能在
Tool
character model
PlayerGui
PlayerScripts.
ReplicatedFirst service
下面自动运行
在workSpace和其他地方是不自动运行的
23.Q: 模型怎么导入,需要建模吗
A:想单独导入模型 ,可以看https://bbs.roblox.qq.com/forum.php?mod=viewthread&tid=620&extra=page%3D1#nv_diy
24.Q: Roblox游戏里自己控制的人物可以换模型的吗?
A:可以换模型。参考网址:https://developer.roblox.com/en-us/article
s/using-avatar-importer
25.Q: 请问有什么办法给物体初速度吗?我现在用BodyVelocity来给它加速,一段时间后删掉。请问有更好的方法吗?谢谢
A:直接给Part的Velocity赋值可以 最好是代码赋值 然后地面和part有摩擦力 这个值如果很小 会看不到效果
26.Q: 摩擦力是什么操作?
A:就是如果你把part放到地面上 然后设置这个值 会是减速运动,如果初速度的值没有大于摩擦力 这个物体是没法运动的。你可以把一个part放在空中 然后再设置这个值 就会有效果
27.Q: 在studio里可以自己制作圆锥吗
A: 用这几个工具可以切出来,如果需要特别圆滑的 还是建议用模型做吧,或者直接从Toolbox里找一下
28.Q: 怎么添加光影效果
A:可以看这个帖子
https://devforum.roblox.com/t/how-to-make-your-lighting-more-realistic-in-shadowmap/367805
29.Q:请问怎么样设置,可以让玩家没有碰撞就是玩家可以重叠,而不是可以站在别人头上
A:可以通过collisionGroup实现让玩家之间没有碰撞
30.Q: 这种第一人称效果要怎么做
A: 可以将照相机的CFrame一直跟随玩家Head的Cframe
31.Q: 我如果想要再游戏中途更换玩家的身体部件模型该怎么办
A:可用HumanoidDescription实现,不过建议整体换,这个暂时没有详细的教程,我们会和官方沟通给份文档的
32.Q: 为什么模型的rootpart设置了massless,他就不会穿过物体,然后如果不设置,它就会穿过那些实体
A:这个massless是2个part weld之后 可以不计质量的,massless的part是不计质量的
33.Q: 就是我现在想知道HumanoidRootPart和其他part的关系。humanoid的hipheight
A:HumanoidRootPart就是人物的跟节点 其他身体部件的part都是直接或者间接和他链接的 人物移动都是靠HumanoidRootPart移动的 hipheight就是红色的距离
人型的话 刚好是
HumanoidRootPart.Position.Y - HumanoidRootPart.Size.Y/2 这么多的距离
34.Q:就是我现在有很多模型,这些模型是固定在人的特定位置,所以每个模型都有一些参数,然后是已实体化的方法放置在仓库里,还是写成数据,进行实时创建,这两个方法在roblox里哪一个性能更好
A:写成数据,放仓库里是会占用内存的 一旦量大了 就不好控制了,哪个玩家用到了对应配置 在生成 这样最好,当然 如果量小就没关系了 这个要看下策划是怎么设计的
35.Q: 请问如何将自制的装备加载到标准人模型的身上
A:Intro to Player Tools – Weapons, Wands, etc.
武器看看这个吧,盔甲什么的可以用Accessory 这个
36.Q: 请问accessory这个有详细点的使用方法吗
A:可以先创建一个accessory 然后下面加一个part然后把part的名字改为Handle
然后创建一个模板人
打开可以看到这个图标 你复制一个到刚才的Handle下然后运行游戏最后在服务器端把这个装备加到人身上 就穿上了
37.Q: 我试了一下,这个步骤是什么意思?
A:attachment复制到handle下,装饰要做出这种结构来
然后红框这个可以从人物模板上复制过来
38.Q: 感觉这个accessory很随意的放的,对的也不齐
A:具体对在哪里是我们自己调的了 可以修改装饰里的attachment的位置朝向
39.Q: part只能是box吗?如何将制作的模型作为part?
A:用meshPart就可以了,meshPart可以导入三方工具制作的模型,支持FBX和OBJ格式的
40.Q:请问下,那种在大厅等待人齐,然后再开始游戏的效果,要怎么做啊?
A:可以看一下game.Players.PlayerAdded事件 当玩家进入场景后 这个时间会响应的 然后记录人数就好了
41.Q: count*2之后是变成了10,0,-2,还是20,0,-2,还是20,0,-1
A:这个count没变化 你是直接赋值给range了
42.Q:问下怎么在上坡路段设置一键停车啊
A:把速度设置成0试试
43.Q: 请问像消逝的光芒 镜之边缘里人物扒墙的判断要怎么做
A:Humanoid 看下Climbing事件
44.Q: humanoid默认的JumpHeight和JumpPower是多少?
A:JumpHeight是7.2 JumpPower是50
45.Q: 请问怎么随时知道玩家某一时刻的即时下落速度
A:试试直接拿humanoidRootPart的Velocity属性
46.Q: 请问怎么获得玩家的位置
A:character.PrimaryPart.position
47.Q:
请问一下关于界面的移动端适配问题,我的图标放在一个底图的层级下,但是手机预览的时候图标的位置与大小没有跟随父级的底图一起改变。。请问要设置特殊的地方吗?A: 看一下这个 scale是按父级比例 offset可以认为是固定分辨率大小 Position也有这样的属性
48.Q: PromptPurchase() 只要这个函数运行就会扣除玩家的robux吗, 那如果玩家钱不够运行PromptPurchase() 函数会发生什么
A:还有个回调方法 要等给了玩家道具才能然后才能扣, 钱不够 roblox会给提示的
49.Q: 玩家每购买一次那个回调就会激活一次吗
A:对 每次调用都会激活一次
50.Q: 身体部件要怎么获取
A:直接Character.LeftFoot 这样就可以了
51.Q: meshpart这个和part有什么区别呢
A:meshPart允许我们使用自定义的模型 Part是那几种固定的模型
52.Q: 发布地图后自己上传的动作别的玩家加载不了是什么原因?
A:动作有权限问题,可以建个Group,把动作发布到Group中,其他玩家就可以看到了。
53.Q: 有没有办法让射线像一颗子弹一样有轨迹的慢慢飞行出去?
A:在子弹上加个trail 然后让子弹飞的速度慢一点
54.Q: 时间倒计时的脚本怎样写的呀!
A:
RunService Stepped
55.Q: 给物体动态添加特效怎么添加?
A:可以把做好的特效放在 ,然后在需要播放特效的代码里通过Clone()的方式添加,特效本身可以粒子也可以是Part。
56.Q: 怎么检测玩家死亡然后传送回另一个服务器?
A:Humanoid 玩家的Humanoid有个死亡事件RBXScriptSignal Died (),当玩家死亡时会触发时间,然后通过
https://developer.roblox.com/en-us/api-reference/class/TeleportService中的的传送方法进行传送。
57.Q: 这种商店里得资源动态生成按钮的自带脚本在哪里啊
A:这个无法修改,可以隐藏
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)
59.Q: 为什么我这个加了Humanoid 我的默认角色没有换掉 啊
A: model的命名错误,是StarterCharacter
60.Q: 怎么换字母、
A:
61.Q: 这个Weld 怎么设置两个物体之间的距离啊
A:可通过Weld的C0或者C1属性控制2个物体间的距离
C0,C1是CFrame需要看下这篇教程
https://developer.roblox.com/en-us/articles/CFrame-Math-Operations
62.Q: 为什么在编辑器设置attachment设置不了
A:Attachment需要附着于Part之上,创建个part在设置Attachment试试
63.Q: 怎么调整坐姿的角度呢
A:调整Seat对应part的角度就可以了
64.Q: roblox实例克隆场景内的物体脚本是什么?
A:可以直接引用场景中的物体然后使用Clone()方法
65.Q: Attachment.Position = (1.75, 1, 0.75)的属性这样写对吗,里面参数是一个Vector的类型
A:attachment.Position = Vector3.new(1.75, 1, 0.75)
66.Q: 怎么做一个一进游戏动画弹出窗口的效果
A:可以使用
https://developer.roblox.com/en-us/api-reference/class/TweenService,控制界面的大小,位置,透明度等
67.Q: imagelabel和frame有什么本质区别吗???
A: frame可以包含其他的控件 比如imageLabel textLabel 等等
68.Q:为什么我用load character刷出来的人物改名成StarterCharacter之后拖拽到starter player那个文件栏之后测试人物不能动而且在天上飘着
A:试着把HumanoidRootPart给取消固定一下
- Q:我在游戏里面,修改了玩家的行走动画,为什么有的玩家进游戏动画还是默认走动画?
A:替换默认动画可以看下
https://developer.roblox.com/en-us/Articles/humanoiddescription-system/index.html
70.Q:我使用了MoveTo让player移动后,我怎么中止移动呢,临时让速度变0勉强可以实现效果但是不好,我翻遍API也没找到方法.而且我在代码里判断了物体离人物小于4时停止也没停
A:这个方法是当玩家跑到指定点之后就会自动停止 MoveTo的第二个参数是相对part的一个偏移你这里不停可能有2个原因第一个是MoveTo的第二个参数一直在移动导致人物一直没达到相对位置所以停不下来第二个是你虽然判断len<4 但实际上人物还在移动因为MoveTo是必须移动到指定点的不受外界判断影响
71.Q:大佬如何替换一个npc的死亡动画
A:npc的动画都是咱们自己调用的,直接调用就好了
72.Q:怎么样让一个物体运动
A:设置速度bodyVelocity bodyForce都可以 或者直接用代码控制
73.Q: 怎么做一个动态gui??。怎么样做一个GUI的loading转圈圈的效果?
A:用TweenService可以实现动画效果
74.Q: 怎么实现玩家碰了一个东西,然后身体消失,镜头移动到一个固定的位置?
A:身体消失可以改变Part的透明度 ,镜头移动可以看下和文档
https://developer.roblox.com/en-us/articles/Camera-manipulation
75.Q: 弱表是不是不适用于instance?在devforum上面看到的… 如果一个instance被其它表或者objectValue引用了,是不是:Destroy()之后就不会被垃圾回收从内存里清除呢
A:自己测试了下,我知道是怎么一回事了,原来发帖的人指的是:当一个instance是其它instance的子对象但是其它表却没有引用时,弱表会把这个instance当成死对象
76.Q: 怎么搞透明字
A:背景:TextLabel的BackGroundTransparency改成1
字:TextTransparency改为透明度(0-1)
77.Q:默认的CameraMaxZoomDistance和CameraMinZoomDistance分别是多少?
A:128和0.5
78.Q: 怎么让Part移动
A:TweenService就可以
79.Q: 脚本放在这里为什么还能执行啊
A:ServerStorage里的脚本不会执行,看看是不是别的脚本运行的
80.Q: 为什么这个地方说不是模型啊我的tes 是Model啊
A: 不是说tes不是model,报错的意思是tes不是Model的成员
81.Q: 为什么我设置生成事件在装备事件下,为什么卸下的时候还是一直调用生成事件呢?
A:Connect是绑定一个方法 绑定后如果不取消绑定 就会一直响应。Connect方法会返回一个值,值里面有Disconnect方法,可以解绑。
82.Q: phantom force这种子弹效果是怎么实现的,怎么让粒子发射器发射的粒子不能穿过障碍物(´◑д◐`)
A:在2个点创建2个part 然后分别给2个part挂上attachment beam有2个参数 分别是attachment0和attachment1 把刚才的attachment赋值上去就好了。 粒子没法躲避碰撞
83.Q: 反重力 是怎么加的
A:local BodyForce = Instance.new(“BodyForce”, model.PrimaryPart)
BodyForce.Force = Vector3.new(0, game.Workspace.Gravity * model.PrimaryPart:GetMass(), 0)
84.Q: 让一个物体有固定轨迹地在空中巡航,怎么下手?可不可以在空中创建很多part,锚固之后拼成一个路线,然后物体朝着目标part移动?
A:可以哈 锚固的点提供位置 然后后移动物体
85.Q: 大佬们问一下 为啥别人用的.P就是能用的 我用的就报错了啊
A:
https://developer.roblox.com/en-us/api-reference/datatype/CFrame,CFrame中没有P这个参数,用Position
86.Q:
问一下 这个方法是干什么用的 网页版的API没搜到这个方法 引擎里有但是没解释
A:
https://developer.roblox.com/en-us/api-reference/function/Workspace/FindPartsInRegion3WithIgnoreList/index.html
87.Q: 怎么让BillboardGui的Text大小不随着距离的变化而缩放
A: 这里大小根据Offset固定就好了
88.Q: 我想在surfacegui上用键盘进行输入字符串并且显示,请问应该怎么实现
A:用textBox可以实现收入
89.Q: 如果把场景里面的所有重生点都disable了,那会怎样?玩家会在某一个默认位置重生吗?
A:会在某个位置重生
90.Q: 怎么做出一个椭圆
A: 在part下加这个,然后 属性选这个
91.Q: Tool上的代码运行问题
A:放在StarterPack里的Tool,在游戏运行之后会自动拷贝到Players.xxxx. Backpack下,然后代码就会运行了
92.Q: 随机位置
可以使用Random对象
local childs = game.Workspace.Folder:GetChildren()
local random = Random.new()
local randomIndex = random:NextInteger(1, #childs)
local Beam = Instance.new(“Beam”)
Beam.Attachment0 = xxxxx.Attachment
Beam.Attachment1 = childs[randomIndex].Attachment
93.Q: 添加buff的方法
在ServerStorage里创建一个Script脚本
在脚本里写类似的代码
script.Parent.Humanoid.WalkSpeed = script.Parent.Humanoid.WalkSpeed - 10
wait(10)
script.Parent.Humanoid.WalkSpeed = 16
script:Destroy()
然后再触发buff的地方如下的代码(需要判断是否已经加了buff)
local buff = game.ServerStorage.buff:Clone()
buff.Parent = player.Character
94.Q: 背包上限
A:参考 模板里的宝箱代码
这部分代码是克隆一个Tool保持引用,并将Tool转化成Model,防止玩家碰到Tool之后,直接给玩家。
这部分代码是玩家碰到宝箱后,宝箱将刚才引用的Tool给玩家,在这里加背包上限判定的方法就好了
95.Q: 通过点击MainUI下得ImageButton按钮关闭MainUI的方法:
在MainUI下添加一个LocalScript,然后监听ImageButton按钮点击事件MouseButton1Click,之后在事件中通过ScreenGui的Enabled属性关闭UI
96.Q: 通过点击ScreenGui下的ImageButton按钮关闭MainUI的方法:
在ScreenGui下添加一个LocalScript,然后监听ImageButton按钮点击事件MouseButton1Click,然后通过
game.Players.LocalPlayer.PlayerGui:WaitForChild(“MainUI”)
获得MainUI,之后在通过ScreenGui的Enabled属性关闭UI
- 关于UI适配问题
这个版本建议简单处理一下就好,后期可以继续优化
Roblox中的UI控件,可以通过Position和Size控制控件位置和大小,2个属性均包含Scale和Offset属性,其中Scale是按屏幕百分比进行定位的,Offset是按照像素位置定位的,当屏幕大小改变是,Scale会使得控件的相对位置和相对大小一同缩放,Offset则是固定的。
98.毒圈实现方法
用套圈的方法,里面一圈是减buff圈,外面一层是加buff圈,然后根据时间将part往中心移动
99.连续图片展示方式:
通过在GUI中显隐ImageLabel可以实现,为了让图片显示效果更好,可以使用TweenService
api:
https://developer.roblox.com/en-us/api-reference/class/TweenService
https://developer.roblox.com/en-us/api-reference/datatype/TweenInfo
EasingDirection (TweenInfo 第二个参数效果)
-
隐藏NPC头顶UI
修改BillboardGui的MaxDistance属性 -
文字效果怎么做更好
如果之后需要翻译成其他语言,或者文字量很大的时候,建议用GUI中的TextLabel实现,直接修改TextLabel的Text属性即可
如果强调文字效果,并且文字量很小时,可以用美术做好的图 -
玩家数据存储,需要注意下存储间隔,不要太频繁
DataStoreService
103.预加载
防止图片显示过慢的方法
https://developer.roblox.com/en-us/api-reference/function/ContentProvider/PreloadAsync
-
对物体某个点受力:
BodyThrust -
将人物传到某一个坐标点
player.Character:SetPrimaryPartCFrame(CFrame.new(Vector3.new(x, y, z)))
相关api
Model:SetPrimaryPartCFrame
104.Q: 关于包裹的掉落
建议将包裹分别做成一个Model和一个Tool,玩家装备的包裹是个Tool,掉落的包裹是Model,当火箭筒炸到玩家后,监听火箭的Touched事件,Touched事件完成如下操作,首先将装备的Tool包裹删掉,然后克隆一个Model包裹到场景中
local tool = hitPart.Parent:FindFirstChildWhichIsA(“Tool”)
tool:Destroy()
local xx = game.ReplicatedStorage.Model:Clone()
xx.Parent = game.Workspace
xx:SetPrimaryPartCFrame(CFrame.new(Vector3.new(x, y, z)))
即可实现掉落效果
105.Q: 掉落动画
可以用2种方式实现,一种是给物体加个力,让物体按物理的方式移动,给物体加力可以使用BodyForce
为了只给物体一个初始速度,可以配合Debris使用,Debris可以让指定实例在设置的时间删除
local Debris = game:GetService(“Debris”)
Debris:AddItem(game.Workspace.Part.BodyForce, 1)
为了确定力的大小,可以通过part的质量计算出重力,然后在估算施加多大的力可以让物体飞出来
local mass = part:GetMass()
local gravity = game.Workspace.Gravity * mass
如果想指定掉落的路线,可以使用第二种方法,缓动动画
local TweenService = game:GetService(“TweenService”)
local tween = TweenService:Create(game.Workspace.Part, TweenInfo.new(5), {Position = Vector3.new(4.33, 0.5, 16.35)})
tween:Play()
TweenService api:
https://developer.roblox.com/en-us/api-reference/class/TweenService
TweenInfo第二个参数的效果:
https://developer.roblox.com/en-us/api-reference/enum/EasingStyle
通过设定好相对偏移来计算掉落的轨迹也是可以的。
-
加属性
Roblox提供了不同类型的Value,可以给一个实例添加不同属性,
代码中可以通过Model.Time.Value来访问和修改属性 -
背包相关api
玩家的背包只是个容器,在StarterPack中的Tool,游戏运行会自动复制到玩家的BackPack下,当玩家碰到场景里的Tool,也会放到BackPack下
可以通过GetChildren()方法获得背包里的所有Tool,如果玩家装备了Tool,可以在玩家的角色player.Character下找到 -
计时器
计时的方式有2中,while循环或者使用RunService
local allTime = 10
while true do
wait(1)
allTime = allTime - 1
script.Parent.TextLabel.Text = allTime
if allTime <= 0 then
break
end
end
local RunService = game:GetService(“RunService”)
RunService.Stepped:Connect(function(time1, step)
allTime = allTime - step
script.Parent.TextLabel.Text = math.floor(allTime)
end)
-
树阴影精度:
-
修改Lighting Technology参数
-
修改树的材质和形状
-
Q:一个part移动到锚定在空中另外一个part的位置,用什么api呢
A:可以用TweenService,
TweenService
112.Q: 为什么镂空完边边角角会有空气墙
A: 调整下这个属性
先调成别的 在调回Default试试
113.Q: 为啥我获取getMouse() 在local脚本里就能获取到 放在 script脚本里就是空的?
A:getMouse()只能在客户端得到
-
Q: 我在服务器接收的事件里接收的玩家 传给moduleScript脚本里的方法 应该怎么样能获取到鼠标呢
A:同上一个问题,鼠标只能在客户端得到,然后发送给服务器使用。 -
Q:有谁能教我用localscript触发fireserver么
A:https://developer.roblox.com/en-us/articles/Remote-Functions-and-Events看看这个教程,很详细 -
Q: 想问一下怎么在右上的玩家列表增加新的列,是加新的数据,比如得分,状态
A: In-Game Leaderboards -
Q: 怎么获取场景中一个part?像unity的gameobject.find一样,有没有什么对应的方法
A:假如放在workspace里的part 直接game.Workspace.Part就可以了
local part = game.Workspace.Part part是什么类型,workspace有多个part呢?
可以给part命名 也是直接引用就行 -
Q:(´◑д◐`)如果想给玩家一个30分钟的双倍经验 那么30分钟的计时机制有什么API可以用吗
A:可以看看
RunService 的Stepped ( double time , double step )事件,累加step可以做计时效果。因为30分钟时间较长可以在玩家下线时,在数据库中保存下线时间,用os.time ( )获得时间保存在数据库,然后玩家重新登陆时从数据库将刚刚保存的时间取出,在用os.time ( )减一下刚取出的时间,可以得出间隔,然后就可以继续计时了 -
Q: 人物MoveTo()还是没用Emmmm
A:wait(10) script.Parent.Humanoid:MoveTo(Vector3.new(10, 0 ,10))
把这个代码放在
10秒后就跑了 -
Q: 怎么制作出那种对峙的效果
A:可以再循环里一直更新对象的CFrame,CFrame.new()里的第二个参数代表物体的朝向
121.Q:我可以问问游戏内那些菜单怎么做的?也就是进游戏就有一个画面之类的那种
A:In-Game Leaderboards 这里
- 求问为什么图片有这个上传框
但是声音没有呢?怎样上传资源呢?
A:声音需要单独在后台上传
Sounds and Music
另外传声音是需要花R币的,建议在ToolBox中找一下
123.Q:怎么获得自身的humanoid.Health?
A:local Humanoid = Character:WaitForChild(“Humanoid”);
-
Q: local a = game:GetService(“ServerStorage”):WaitForChild(“a”);
local go =a:Clone()
go.Parent = game.Workspace
如果 a 是个lua代码,这样做a里面的代码为什么是不运行的? 场景里面是有的
A:是script还是localscript。LocalScript在WorkSpace中是无法自动运行的。 -
Q:如果游戏里有ab两个中立的出生点,怎么让玩家加入服务器的时候是在a出生而不是b
A:可以将出生点的 勾掉 -
Q: 请问一下,怎么在代码里把另一个script给它disable掉
A:(那个script的名字).Disabled = true -
Q: 大佬们 问一下 相机 锁视角怎么锁 我看相机上只有一个调视距的属性 没有相机的Position 和Rotate 属性
A:参考下
https://developer.roblox.com/en-us/articles/Camera-manipulation和
Customizing the Camera
128.Q:请大佬教教怎么写按鼠标键相机围绕角色旋转(视角)
A:这个是roblox自带的功能,鼠标右键移动就可以了,不需要开发的 ,确保是这种设置就可以了
-
Q: 这两个有什么区别嘛
A:
Remote Functions and Events 这个是教程 下面有事例 这2个的区别是RemoteFunction会等待另一端的返回 是堵塞的 另一个不等待返回 -
Q: 请问我怎么吧图片白色的部分变成透明的 ,
但是这样图片图案有点淡, 怎么让图片颜色变深呢?
A: 将这个值设置成0可以将背景透明,图颜色淡需要在PS里修改 -
Q: 大佬 请问 怎么控制向服务器发送的消息只发一下 我这一次发两下, 在runservice里发的,
A:runservice会一直执行 看代码isSend很快就被赋值成false了 下次再进来就发了 -
Q: Script脚本 和Local脚本 获取一个相同的value,在各自脚本中计算完之后 value 的数值不是共通的吗?
A:script改的会同步 local的不会同步 -
Q: 人物从高空跳下,被反弹得翻滚,有什么办法解决吗?(可以解决无法勾选问题)
A:减小地面的弹力
-
Q: 怎么吧枪给自己?
A:将武器放在StarterGui中即可
-
Q:火焰的方向 只能是part的Y的方向吗?没有直接调整的方法吗?我想实现的是这个树枝 被点燃的效果
A: 可以加个Attachment 然后把火挂在下面 然后调Attachment的方向
-
Q:玩家了 死了复活的时候怎么让它StarterPack里的脚本重新执行一遍,还有 玩家死了怎么让它不自动复活 通过代码控制它复活
A:把players那个服务里面有一个CharacterAutoLoads,给他关掉,这样人物不会自动加载。 -
Q: 请问怎么得到玩家正在装备的tool, 我想操作玩家正在装备的tool然后复制它该怎么做, 然后我怎么让脚本找到他呢
A: 如果知道名字 可以直接获得 如果不知道 可以通过FindFirstChildWhichIsA(“Tool”)来拿,也可以设置terrain和part, ,或者就装备的时候 把装备引用好,用个ObjectValue存一下. -
Q:但是如果手动用objectvalue存储玩家装备的tool的时候会出现tool在玩家手里但是objectvalue还没被赋值的短暂的窗口期, 如果这时候保存玩家装备的时候, 玩家的装备就可能消失, 怎么保存
A:这种数据不要这么保存 还记得之前说的 实例ID么 每个装备都需要有一个对应的数据来保存, 要给装备定义一个table table里存装备的信息 比如实例ID 模板ID 攻击力等数据 -
Q: , 怎么让人物死亡时候tool图标不消失呢
A:将武器放在StarterGui中即可 -
Q: 谁知道游戏的初始场景怎么设置?就是多个place,不是有个startplace吗, 不会改啊,找了半天也没找到哪里设置就俩,想把新建的那个设置成初始的 .
A:需要通过 的方式,将startplace先发布创建一个新的place3,然后将colorCombat覆盖到startplace,然后再将place3覆盖到colorCombat,就奇幻过来了 -
Q: 有谁能教我用localscript触发fireserver么
A:Remote Functions and Events 看看这个吧 -
Q:就是游戏中有四个武器技能,需要有CD时间,用tool的话不知道该怎么控制CD,不是,backspace不是可以卸下装备吗,可以在cd时间内一直模拟点击吗
A: 如果一定需要在CD内无法装备 只能自己写UI做了,character里的Humanoid有个 unequip方法 可以用这个试试 这个 试试用这个模拟下 -
Q: attachment多了会卡吗?
A:不会 会导致卡顿 一个是很多part之间有碰撞 还有特效太多了 不过Workspace下放Humanoid确实会导致卡顿,把没用的东西删掉吧 -
Q:有什么方法不让tool图标显示在屏幕上吗
A:game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false) -
Q: 为什么我写的点击鼠标左键 不起作用
A:看看脚本放的位置,如果代码写在localScript下是没法运行的,localScript只在
能运行 -
Q:table 怎么判断它里面是否包含了要添加进去的元素啊
A:遍历table,table没有提供api做查询 -
Q:请问一下,怎样修改玩家位置,想做个传送门。player.CFrame好像不行
A:player.Character:SetPrimaryPartCFrame()可以传送 -
Q:ray能实现同时检测多个part吗?
A:不能,ray会返回第一个打到的part -
Q:输出这个提示信息,会有什么影响吗
A: 是加了policy Api么,这个代表当前地区不能物品不能用随机 比如国内的游戏 随机概率是必须公示的,有些特殊内容可以根据这个来判断 -
Q: 请问一下我要再TimeProgress脚本里获取一下MainGameScript里的一个变量应该怎么获取啊?
A:script和localScript没法直接获取变量 可以通过RemoteEvent或者RemoteFunction发消息 -
Q: 请问下这个脚本里如果把第一个圆圈得循环注释掉就可以接收到服务器发来得消息,不注释掉就收不到消息是怎么回事啊
A: 这是死循环 下面的代码没法执行了 -
Q: 为什么有的模型导入到场景中有primaryPart,有的没有啊
A:创建的模型默认是没有primaryPart的,需要自己设置一下 -
Q:请问出了触碰可以定位玩家外,例如
function onTouched(otherPart)
local human = hit.Parent:FindFirstChild(“Humanoid”)
if human then
human.Health = human.MaxHealth
end
end
还有其他什么方法可以获得玩家,比如想做个GUI选项让玩家加血
A:localscript里 local palyer = game.Players.LocalPlayer
localscript里通过按钮触发,RemoteEvent:FireServer()
服务器上
RemoteEvent.OnClientEvent:Connect(function(player)
local char = player.Character or player.CharacterAdded:Wait()
local human = char:WaitForChild(“Humanoid”)
human.Health = human.MaxHealth
end)
A: localscript里 local palyer = game.Players.LocalPlayer,localscript里通过按钮触发,RemoteEvent:FireServer()
服务器上
RemoteEvent.OnClientEvent:Connect(function(player)
local char = player.Character or player.CharacterAdded:Wait()
local human = char:WaitForChild(“Humanoid”)
human.Health = human.MaxHealth
end)
-
Q:
那像这种没有设置primarypart的模型我该把模型中的那个组件设置成这个呢?
A:任意一个part都可以,你认为是这个模型最主要的part设置上就好了 -
Q:麻烦帮我看下错在哪里了。
我在Workspace中加了LocalScript
local player = game.Players.LocalPlayer
player.PlayerGui.Mission.TextLabel.Text = 100 这个text没改到啊。谢谢!Script也不行,刚试的。
实际上我主要是不知道该怎么定位到Gui上。比如:player.gui.xx.xx=xxx。主要是这个player怎么找到?
A:你在Studio界面是看不到代码更改的你进游戏试试,用Script试试,LocalScript和Script不一样, localscript放gui下 -
Q: 麻烦问下 游戏发布后 显示 “此游戏可能无法按预期运行。开发者需要更新游戏。” 是需要在哪配置什么?
A:应该是有些移动的代码在客户端实现了,但是如果需求是这样,可以忽略 -
Q:请问,整个游戏结束是什么命令?类似Scrath中的Exit,做的个单机游戏,任务完成了,怎么完呢?
A:Player:Kick 可以将玩家踢出游戏,不过建议让玩家重玩,这样友好一些 -
Q: 有哪位大佬知道如何让这个close图标按钮显示在上层,
A: 可以通过这个值控制层级 -
Q:想在场景中刷新一个武器该怎么写啊
A:将武器放在 中,然后在代码中通过(Equip为武器名字,根据实际改变)
local equip = game.ReplicatedStorage.Equip:Clone()
equip.Parent = game.Workspace
刷新到场景中 -
Q:该怎么去获取一个文件夹下有多少个子物体呢?获取到的是一个arry, 然后怎么取arry里面的个数呢? arry:Count()?#array 是取个数吗
A:@Dark Sky getChildren(), Folder:GetChildren(),#arraylua语法,
. -
Q:请教下 我的tool.CanBeDropped=true 为什么扔不掉tool,
监听Unequipped 设置Parent = workspace 报 “Something unexpectedly tried to set the parent of Sword to Workspace while trying to set the parent of Sword. Current parent is Backpack.”
A:CanBeDropped只控制是否可以通过backspace将武器丢掉,做掉落需要我们通过代码实现,监听Unequipped报警告是因为,在Unequipped修改了Tool的Parent,但在触发Unequipped时,Tool的Parent刚好赋值给了Backpack,2个操作有冲突 -
Q: 这种怎么办,好多模型显示不出来了,不是角色的模型,是场景里part,union什么的物体 本来有个桥,现在也显示不出来了
A:发生这种情况是同一个union物体在不同场景中使用了,建议在可以看见的场景里将union的物体分离,然后放到新场景中重新组合一下 -
Q: TextBox中Text的值不能在游戏中改变吗?试几次,无论在游戏中在TextBox里输入什么,打印text的值始终是最开始在设置的那个。
A:在哪里修改的,TextBox属于UI,需要在LocalScript中操作 -
Q:请问怎么让玩家暂时无法移动?比如当某个GUI弹出是,如果玩家不关闭GUI,就没法动,谢谢。
A:当有ui的时候把玩家的行走速度调成0,Walkspeed -
Q.怎么弄二维表?就像数据库一样,m行n列
A:table里面存table就行 -
Q:UI自适应怎么做啊
A:UI组件的Position和Size属性都有Scale和Offset分量,可以通过设置Scale来定位和缩放控件,然后配合 可以达到很好的适配效果
-
Q: 为啥我这样设置一个Part 的位置报错啊
A:不能这样设置,wall.Position = mouseHitPosition -
Q: 谁给我看看,本来是掉血需要等待10秒来脱离战斗,然后每隔三秒回1HP,现在反而越掉血,回血速度越快
A:因为lua的语言特效,虽然脚本在wait,但是人物受伤后HealthChange还是会触发,使得wait没起任何作用,建议将回血做成一个buff,脱战在外层控制,脱战之后,才给玩家加上回血的buff -
Q:玩家进入和离开某一区域有事件吗?
A:通过part的Touched事件可以模拟进出区域 -
Q: 大佬们,萌新想问下,如何获取Model的坐标。。。
A:首先给Model设置PrimaryPart,然后通过model:GetPrimaryPartCFrame()可以获得到PrimaryPart的CFrame对象,然后CFrame.Position就可以获得到坐标 -
Q:做了个血瓶,使用时报错,麻烦那位看下是错在什么地方了,谢谢
还是有错“LocalScript:14: attempt to index nil with ‘Health’”
A:Health不是指针你这样只是复制了值把13-14行改写成 p.Health = p.Health + 20就可以了还有12行改写成:local p = game.Players.LocalPlayer.Character.WaitForChild(“Humanoid”), https://developer.roblox.com/里面一应俱全。 -
Q: 还请帮我看下,我想克隆些僵尸放在不同位置,但是第5句老是报错, 还是不行,提示:
Model:SetPrimaryCFrame() failed because no PrimaryPart has been set, or the PrimaryPart no longer exists. Please set Model.PrimaryPart before using this. 我找了很久也没看到part里有PrimaryPart这个属性,这是写代码吗?
A:
5改写成
n:SetPrimaryPartCFrame(CFrame.new(Vector3.new(count,0,count))) 原因:类型不正确, 你得在model里面选一个part作为PrimaryPart, 应该是在model里面不是part里面吧 -
Q:roblox的物体不能设置为隐藏的吗,没找到显隐开关,只能设置透明度?显隐开关这种3D引擎一般都带的吧,透明度只是最后渲染的上色问题,显隐的话还有更多其他的关系,感觉编辑起来就不舒服,本身一个开关现在要操作这么多下,而且从逻辑上来说也很难接受。
A:把Part的Parent设成Light,最好放进内个叫 -
Q:我把NPC身上得碰撞检测取消了 但我还是可以和他碰撞 并把NPC挤走
A:可以通过 来控制碰撞,让玩家和NPC的值设置为不同的 然后通过 来设置2个组是否可以碰撞 -
Q:请问game.Players.LocalPlayer指的是本地玩家吗?为什么Game.Players.LocalPlaye.Humanoid是错误的
A:Charater指玩家角色模型,Player指玩家的存在,Humanoid是玩家灵魂。。。,LocalPlayer.Character.Humanoid -
Q:我做了个localscript,用计时器给本地玩家加血。现在我应该怎么选到本地玩家的Humanoid呢?这个例子中有触碰函数返回的part,现在我的程序中不需要触碰,也没有返回玩家 某部分的函数
A: local player = game.Players.LocalPlayer
local Character = player.Character or player.CharacterAdded:Wait() -
Q:大佬们,请教个问题
我在一个partA下面创建了多个子part模型,在脚本里面移动partA,其余的子part怎么都不跟着移动啊?如果是在unity或者unreal里面,直接做成prefab一点问题都没有。。。。roblox的机制真的感觉搞不懂。。。
A:roblox的右侧列表只是简单的父子级关系,代码中移动父级并不会影响子级,可以将多个Part打成Model 然后设置好Model的PrimaryPart属性 在代码中可以通过MoveTo方法移动整个模型 -
Q: 为啥做obby重生位置老是不对 碰到重生点也不没用… 还有 挨着重生点的时候 再来的时候就不再那个重生点复活了, 这个有时候就乱出生, 15个重生点要15个team是吗
A: 这个要设置和出生点一样的颜色, 就能保存了, 出生点个数 = 队伍个数 + 1 并且除了第一个默认出生点外 队伍的TeamColor要和出生点的TeamColor一一对应上, 对 用作存档的出生点和队伍数是一致的 -
Q: 怎么获取人物的humanoid啊?
A:player.Character.humanoid 可以这样获取 -
Q: 技术指导老师,破坏模拟器那种游戏是怎么做的, 就是那些建筑这么多,怎么弄的,然后那些爆炸之后的效果是怎么同步的, 就是大量的part怎么同步, 还有那些建筑成千上万个part,怎么搭起来的, 像那个破坏模拟器是用了streamingEnable吗
A: 爆炸的效果roblox会自动同步的,开发者不用关心,破坏模拟器看起来并没有使用streamingEnable -
Q: 怎么把模型的y轴调整的和世界的y轴一样呀
A:可以再模型外面在套一个透明的Part,将这个Part的Y轴对在世界的Y轴,然后模型的PrimaryPart也设置为这个Part
182.Q: 有没有人知道怎么检测到玩家死亡啊, 除了一直循环判断玩家生命值
A: game:GetService(‘Players’).PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
character:WaitForChild(“Humanoid”).Died:Connect(function()
print(player.Name … " has died!")
end)
end)
end)
Q:请问一下,多个相同的part可以共用一个脚本吗?我看改了一个脚本,其它的并没有变化
A:有几种方式可以实现 一种是用moduleScript 把通用代码封装在里面 还有一种是把代码打成package如果只是方法上的重用 可以选择第一种 很灵活 打成package会对代码上传有一些限制 但是如果多个项目都想共用 可以选择这种方式
- Q:能否导入其它的人物动作?支持哪些格式的3D模型导入? DragonBone是2d的应该不会支持吧
A: 动作建议直接用animationEditor编辑哈 其他的动作骨骼可能不匹配 支持obj和fbx. 这个暂时不能哈