功能效果展示
运行环境
Win7,Win8,Win10
Reworld版本 体验版
vc_redist.x64 运行环境
针对零基础读者的补充
下载安装 Reworld对应版本
Reworld官网链接:http://www.reworlder.com/
Reworld创作者之家论坛:http://bbs.reworlder.com
下载后安装后注册账号打开空地图
下载安装vc_redist.x64.rar运行环境
redist.x64下载链接
思路分析
想要制作一个随机徘徊的物体,我们首先需要设置随机徘徊的半径和距离,以圆圈上的一个点作为初始点,给物体一个速度,将随机位移加到初始点上,得到新的位置。这样我们就得到一个在圆圈内随机徘徊运动的物体。
功能搭建
一、小蝙蝠搭建过程
在工作区内创建一个自定义零件,在自定义零件下导入一个小蝙蝠的模型,取消锚定。如下图所示:
二、核心功能搭建过程
在自定义零件下创建一个服务器脚本。如下图所示:
编写服务器脚本如下:
math.randomseed(tostring(os.time()):reverse():sub(1, 7))
local a = script.Parent
--徘徊半径
local wanderradius = 100
--徘徊距离
local wanderdistance = 100
--每秒加到目标的随机距离的最大值
local wanderjitter = 100
--圆圈上一个点作为初始点
local circletarget = Vector3.New(wanderradius\*0.707,0,wanderradius\*0.707)
--最大速度
local maxspeed = 5
function move()
local num = math.random(0,100)\*0.01
local num1 = math.random(0,100)\*0.01
--随机位移
local randomdisplacement = Vector3.New((num-0.5)\*2\*wanderjitter,0,(num1-0.5)\*2\*wanderjitter)
--将随机位移加到初始点上,得到新的位置
circletarget = circletarget + randomdisplacement
--由于新位置可能不在圆周上,因此需要投影到圆周上
local num2 = circletarget.normalized
circletarget = Vector3.New(wanderradius\*num2.x,0,wanderradius\*num2.z)
--转换坐标
local wandertarget = a.Velocity.normalized \* wanderdistance + circletarget + a.Position
--计算预期速度
local desirevelocity = (wandertarget - a.Position).normalized\*maxspeed
a.Velocity = desirevelocity - a.Velocity
end
GameRun.Update:Connect(move)
补充说明
1.什么是工作区?
工作区中的对象是会被可视化显示到3D场景中的,并且只有在工作区中的对象才会发生物理交互。
2.什么是自定义零件?
自定义零件是零件的一种形式,包含物理模拟的自定义网格。使用其他3D建模软件创建的模型上传到重启世界编辑器时,被转化为游戏引擎可以读取的内部格式。
3.什么是服务器脚本?
只会在服务器运行的Lua脚本代码,用于编写服务器逻辑。
好了,接下来我们开始游戏,我们制作的小蝙蝠就会以随机徘徊的形式在一个圆圈内移动。如果有什么问题或者有更好的实现方式,大家可以在下方积极交流讨论,我们也会参与进来和大家一起分享经验,期望能和大家共同进步~~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。