物理系统是游戏中非常重要的部分,它可以使小伙伴们的游戏更加的真实,以及增添很多趣味性,如:创造一个篮球、足球或者秋千等等,它们都离不开物理的支持,要想实现精准的游戏机制,更加真实的游戏世界,让玩家拥有更好的游戏体验以及舒适的手感我们就需要掌握这些基础内容。
在迷你世界Studio中可以使用多种物理效果,包括但不限于重力,质量,速度等。以及相关的约束系统,小伙伴们可以设置这些内容并应用到小伙伴们的游戏中去,那么就让我们一起来学习一下物理系统的使用吧~
首先我们创建一个模型
点击【顶部工具栏】的【模型】向下箭头【▼】
选择【圆形】模型
在【节点列表】左键选中这个球体
这样一个球体就创建好啦
重力属性
小伙伴可以修改重力让物体模型获得相应的重力
属性 |
值 |
描述 |
Gravity |
模型重力 |
物理属性
小伙伴可以通过选中场景模型,修改对应的物理属性。
小伙伴可以通过属性面板设置模型的质量、摩擦力等,也可通过代码在其运行的进行动态的修改。
注意:如果想要模型响应这些物理属性,Anchored属性必须取消勾选。
属性 |
值 |
描述 |
Anchored |
锚定状态,为true时此物体不受外部环境物理影响,但是会给外部提供物理输入。例如:有外来物体撞击到此物体,此物体不会产生移动,但是会对外来物体产生碰撞反弹力。 |
|
AngleVelocity |
Vector3 |
模型角速度 |
EnableGravity |
模型是否支持重力 |
|
Friction |
float |
模型摩擦力 |
Mass |
float |
模型质量 |
Restitution |
float |
模型反弹力,比如物体撞击在地面上会根据此值来计算反弹高度 |
Velocity |
Vector3 |
模型移动速度 |
物理碰撞
除了模型的基础物理,小伙伴还可以通过设置模型包围盒设置模型的物理碰撞。
在这里可以设置模型是否可以产生碰撞,以及设置碰撞组。
属性 |
值 |
描述 |
CanCollide |
是否可以碰撞。设为false时为trigger状态 |
|
CanTouch |
是否触发碰撞回调函数:Touched和TouchEnded事件 |
|
CollideGroupID |
可以通过PhysXService:SetCollideInfo函数设置任意两个组之间是否会产生碰撞 |
|
DrawPhysicsCollider |
显示物理包围盒 |
|
EnablePhysics |
开启此物体的物理状态。为true时物体的物理属性可以使用 |
动态创建一个物理球体
首先右键左侧【节点列表】【WorkSpace】
选择【新增节点】
创建一个【Script】
双击【Script】打开脚本
编写代码创建一个【物理球体】
一个动态创建【物理球体】的逻辑就写好啦
--创建实例模型
local sphere= SandboxNode.New('GeoSolid')
--设置名称
sphere.Name = "sphere"
--设置模型
sphere.GeoSolidShape = Enum.GeoSolidShape.Sphere
--设置位置
sphere.Position = Vector3.New(150.000000,300.000000,-600.000000)
--设置局部大小
sphere.LocalScale= Vector3.New(1.500000,1.500000,1.500000)
--设置大小
sphere.Size = Vector3.New(150.000000,150.000000,150.000000)
--设置锚定状态
sphere.Anchored = false
--设置模型父节点
sphere:SetParent(script.Parent)
效果展示