part实体建模
勾选左上角“移动‘按钮选择物体是否对齐至栅格栏。
取消勾选”旋转“可让模型旋转不对齐栅格栏
选中物体按住shift+拖动缩放可以三轴等比放大
开启anchored保证物体不受物理效果,固定位置
locked属性让开发者在开发过程中不能直接选中part进行更改。
”cancollide“——是否可以碰撞,不能被碰撞人物会直接穿过物体。
为其添加线速度:lineavelocity 为其添加角速度:angularvelocity
组合相交镂空:组合——成组;相交——取交集;镂空——与组合一起使用可以实现”挖空“;
组合为模型:选择多个part按ctrl+g快速组合为模型(model),model——一个保存3D对象的容器
地形编辑器与容器介绍
workspace——开发界面
player——玩家信息
lightening——全局光照、滤镜、天空盒
materialservice——材质管理
networkclient——连接至服务器
replicatedFirst——首先从服务器加载至客户端的容器比如loadding界面
replicatedStorage——从服务器复制到客户端的容器,适合存储服务器和客户端都需要调用的对象,不适合放重要代码和逻辑,可能会被攻击。
SeverScripService——不能被玩家访问到内容——商场系统、伤害计算系统
StarterGui——存储GUI文件,玩家的UI
StarterPack——将会复制到玩家系统背包中,一般存放tools或者localscript
StarterPlayer——玩家属性
调用外部资源:sound,texture——替换id,外部模型——创建meshpart
光源
pointlight——必须作为basepart或者attachment的子对象
spotlight——同上,适合做手电筒等射线
surflight——同上上,但其若为attachment的子结点将类似于spotlight,若为part将可选择part的某面发出光。
环境效果
technology——光线渲染方式,voxel性能消耗低,表现差,shadowmap,表现好性能消耗低,future——新能最好,消耗最大。
ambient——整体色调
colorshift_button——背光面反射的光线色调
environmentspecularScale——镜面反射强度
shadowsoftness——阴影的模糊程度
color correction——直接作用在摄像机上的滤镜,contrast(对比度)saturation(颜色饱和度)tinkcolor(滤镜色调)
想显示更明显的阳光光柱效果可使用baem(在两个attachment中间显示贴图)实现
depthOfField——景深,farintensity——远景模糊程度 focusdistance——焦距 infocusradios——焦距半径 near intensity——近景模糊
Blur——高斯模糊,多个模糊取优先度最高的那个
bloom——辉光,会使较亮的颜色发光,霓虹材质
atmosphere——阳光根据大气和空气粒子属性以不同方式散射 color——改变大气色调 haze-定义大气层雾度 galare——阳光眩度,与大于0的haze属性一起使用 decay——定义远离太阳的大气层色调
density——空气粒子数量
offset——增大可增强地平线轮廓,减小可将远处完美融入天空
物理效果
Attachment(附件):在物体上创建插槽,可在插槽上施加约束来使部件收到物理力的效果。
attachment必须创建在basepart之下,常见的basepart有:part、spawnlocation、terrain(地形)
绳约束:resititution:回弹系数:值越大,回弹的力越大。
杆约束:limitenable:limitangel0和limitangel1代表attachment0和attachment1的可旋转角度上限
弹簧约束:Damping(弹簧阻尼系数)乘以附件的速度来减少施加的弹簧力,值越大,弹簧弹力越足
freelength:弹簧静止长度
limitsEnable——maxlength、MinLength
siffness(弹簧刚度)——产生单位形变所需要施加的力
无碰撞约束:两物体在视图中分离,但实际重合
球形容器约束:使部件只能在某个范围(球形)里移动,可以达到类似于摇杆的效果。tips:记得勾选limitenable
小贴士:不用运行游戏也能看到物理效果
刚性约束:适用于attachment和骨骼,多用于拼装组件。
接合约束:保持相对位置(即使未结合)
棱柱约束:使两个物体可沿相同的轴滑动。lowerlimit upperlimit用于限制部件可滑动距离的最大值,restitution——部件运动到上下限时产生的回弹效果越明显。
想要部件自行运动可设置Actuator属性为Motor
还可以使用servo伺服驱动 LinearResponse部件反应能力
圆柱约束:可让部件绕着圆柱自由旋转
铰链约束:可让固件绕一个轴进行旋转,应用方式:可转动的约束
对齐朝向约束:应用扭矩来使固件对齐 reactionTorqueEnavle 反扭矩力应用属性:true(双向奔赴)false(单向奔赴)rigidityenable(刚性启用)true(瞬间完成对齐动作)
对齐位置约束:可以向特定位置施加力,所连接的部件会被约束到同一个位置,但方向不一定相同 applyAtCenterOfMass 应用质量中心属性true(施力点为整体重心)false(施力点为附件连接处)ReactionForceEnable反作用力启用属性(单项奔赴,双向奔赴。)
凹凸约束:传动轴、机械臂
平面约束:使两个部件贴合与否
粒子效果
选择效果:Explosion(爆炸效果):爆炸不依赖于任何部件,但需要单独设置位置,默认位置为0,0,0.
BlastPressure(爆炸效果强弱。产生击飞等物理效果)BlastRaius(爆炸范围,物理效果影响范围)
DestroyJointRadiusPercent(破坏关节半径百分比)与爆炸范围有关,当爆炸范围为10时,DJRP为0.5,则在距离为0-5时,组件会被炸散,距离为5-10时,组件会被作为整体被炸飞
ExplosionType(爆炸类型):craters(破坏地形),nocraters(不破坏地形)
Fire(火焰效果)heat,火焰烈度(高度) secondarycolor——火焰顶部产生烟雾的颜色
Smoke(烟雾)opacity(烟雾透明度)RiseVelocity(烟雾升起速度),值越大烟雾向上的速度与范围越大,即消散速度
Trail(拖尾)需要在物体创建两个attachment并用trail进行连接
FaceCamera 控制拖尾是否总是朝向玩家摄像机
LightEmisssion (自发光)
LightInfluence 值越大 自发光受到外界光线的影响越大
Texture 自定义拖尾纹理效果 TexutureMode 纹理覆盖模式 TextureLength 改变纹理拉伸长度。
Transparency 透明度 lifetime(生命周期)控制拖尾生成到消失的时间
Beam(光束),创建两个attachment来确定光束的首尾
curvesize0 curvesize1确定首位光线的弯曲
高光描边效果,在选中model旁边点击加号选择highlight,提示重要目标位置,或者重要道具、掉落物位置。fillcolor 控制高光效果给部件表面填充的颜色,fillTranceparancy,填充颜色的透明度
outlinecolor 描边颜色
自定义粒子发射器,创建part,点击效果ParticleEmitter
lightEmission 粒子自发光效果,当值小于0时值越小粒子黑边效果越明显
lightinfluence 小于零时粒子为黑色,等于零时粒子不受光线影响。
Orientation 朝向 FacingCameraWorldUp 在世界竖直方向朝向摄像机
VolocityParallel 粒子会永远朝着粒子速度方向 VelocityPerpendicular 速度垂直
Squash 控制粒子宽扁程度,值越大,粒子越扁
texture 自定义粒子纹理图案
shape粒子发射形状 cylinder圆柱体 disk圆盘状
shapestyle 控制粒子是在表面还是内部生成
Drag,给粒子一个牵引力,当值为正,将给一个与粒子运动方向的力直到粒子停止运动
LockedToPart FALSE 已生成的粒子不会随着部件移动
Rate 生成速率
Rotation 生成的粒子将随机从min和max取一个角度旋转
RotSpeed 生成的粒子将进行自转
SpreadAngle 随机扩散角度
Acceleration 加速度
音乐与音效
SoundService 包括Sound与SoundGroup,Sound可以放置在任意地方 playOnRemove(该声音在删除后播放)Looped控制声音是否循环播放 PlayBackRegionsEnable 若为true 则允许访问Sound访问PlaybackRegion和LoopRegion属性,达到更准确的播放声音效果
soundGroup 用于路由声音到指定声音组 ,无论Sound的父对象是谁,都可以连接到SoundService里面的SoundGroup volume音量 在SoundService右边点击加号则创建SoundGroup 多个sg嵌套音量将会是乘法关系
RolllOffMaxDistance控制声音衰减的最大范围
RollOffModel 声音衰减模式 通常使用InverseTapered TimeLength 只读属性 显示声音的持续时间。
声音效果器
EqualizerSoundEffect均衡效果器 允许控制不同频率范围的音量
CompressorSoundEffect 压缩效果器降低声音最响亮部分的音量,提高声音最小部分的音量,使玩家听到的声音不受录音时的低音或者高音的影响 sidechain 调整作品里多种声音的优先级
ReverbSoundEffect 混响效果器,模拟声音在多个表面上反射的效果,SoundService中的AmbientReverb属性将可以给旗下所以声音添加预制的声音效果
ChorusSoundEffect 合唱效果器
DistortionSoundEffect 失真效果器 模拟老式设备的过载声
EchoSoundEffect 让声音在延迟后重复播放,并逐渐降低音量 模仿回声效果
FlangeSoundEffect 镶边效果器 可创造出声音扫描或者呼啸的效果 也可用于喜剧效果
如何制作背景音乐?可以将Sound对象放在SoundService中或者workspace中,会在整个世界中以恒定的音量播放
交互音乐 将Sound放在part或者Mashpart之下,空间化播放声音还要保证SoundService的体积音频为Automatic或者Enable
玩家角色
角色model下实例:
Accessory玩家的自定义外观,其中存在焊接约束,连接到玩家角色的MeshPart的各个Attachment里
Meshpart,网格模型,玩家身体的各个部分
humanoid,一个特殊对像,赋予模型生物功能,使模型能够四处行走
Character 创建标准character可在虚拟形象选项里点击骨架建造器 R6、R15骨架代表需要六个、十五个身体部件才可驱动。
若想要修改玩家的默认角色,需要将创建的Character改为StarterCharacter移动到StarterPlayer对象下
角色参数设置 humanoid CameraOffset用于当相机的CameraSubject设置为这个角色时相机位置的偏移量,可用来实现相机效果,如摇晃、缩放等。
HealthDisplayType 显示血量
DispalyDistanceType viewer可以在自己的NameDispalyDistance(能看见其它角色名字的距离)和HealthDisplayDistance(能看到其它角色血量的距离)范围内看到其它角色的名字和血条 subject 其它角色可以看到他的名字和血条
Occlusion 默认为OccludeALL,玩家名字仅在被墙壁等物体完全遮挡时才会消失 NoOcclusion 表示角色名称始终可见
DispalyNmae 显示在humanodi角色头顶或UI上 health、maxhealth调整血量以及血量上限
RequiresNeck用来指定neck motor 6d被移除或者断开时是否会死亡
EvaluateStatreMachine,用来自动判断和更新自己的状态机
Walk to point 指Humanoid在调用Huanoid:MoveTo()时指定角色到达三维空间位置,如果玩家在8秒内没有到达指定的目标Humanoid:MoveTo()会结束执行,是为了避免npc在等待Humanoid.MoveToFinished事件触发时被卡住
hipheight 玩家臀部高度 让玩家浮空或在地里
seatpart 可用于检测玩家是否坐在某个部件上或控制玩家坐下、站立的动作
AutoRotate 玩家模型是否会通过变动移动方向而旋转
floorMateria玩家脚踩地板的材质,可以监听这个属性来制作玩家在不同材质路面上的脚步声
moveJumpEnable 打开后玩家可以自动跳过目前在自己跳跃范围内的障碍物
PlatFormStand,可判断Humanoid是否处于平台站立状态
MaxSlopAngle 调整角色爬坡的最大角度
某些角色属性无法在客户端进行修改:如:血量
Motor6D,连接部分,并出现明确的父子关系,比如让xx跟着xx旋转
将一个meshpart制作成Accessory:准备meshpart,选择虚拟形象,选择配饰调整工具
动画制作
右键关键帧可以看见缓动风格以及缓动方向,动画编辑器提供了五种缓动效果与三种缓动方向
线性:无加速或者减速的效果,动画速度保持恒定(匀速运动)
常量:无变化过渡、适用于瞬间切换的物品
立方:有平滑的加速或减速,动画的速度随着时间的立方而变化,适用于较自然的运动、例如抛物线
弹性:有一个弹簧的效果,适用于有弹力的物体
反弹:动画在达到目标后反弹,例如球或者气泡
In:指动画从慢到快过渡
Out:从快到慢
Inout:动画先从慢到快,再从快到慢
IK模式:平常的父级会随着子级的变化而变化,变化的大小呈衰减状态,若不打开IK模式,在动画编辑器中肢体将与身体分离
palyers是连接至服务端的玩家的实例,player并不是workspace中的玩家,而是玩家的抽象数据实例
在客户端可以通过以下代码获取玩家的player:
在服务器可以通过以下代码获取玩家player:
也可以通过Plyaers.PlayerAdded事件监听Player的加入Players.PlayerRemoving事件监听player的离开
player并不是模型,但可通过player获取玩家在workspace中的模型也就是character,也可以通过character获取palyer
player.characterAdded事件可以监听玩家的角色何时加载
player.CharacterRemoving事件监听玩家的角色何时退出,编写以下代码便可控制玩家模型的生成与销毁
Lua基础(上)
Lua吧nil和false看作false,其他类型都为true。type(),确定某变量的数据类型
ReplicatedStorage 存放bool类型的值,可进行脚本间的信息交换
function,函数变量
table,数组、哈希表、字典,相当于一个收纳盒,可以用来存储不同的数据类型
FOR循环 while循环 repeat循环
Tween动画
Roblox Studio 中的 Tween 动画是一种强大的工具,它可以让你创建平滑的过渡效果,让物体在场景中以动画的形式移动、旋转、缩放或改变颜色等。Tweening 是“in-betweening”的缩写,意味着计算动画的中间帧,从而在起始状态和结束状态之间创建平滑的过渡。在 Roblox 中,这是通过 TweenService
实现的,它可以应用于任何属性。
基本概念
- TweenService: Roblox 的服务之一,用于创建 Tween。
- Tween: 一个过渡动画,它定义了物体属性从初始状态过渡到结束状态的动画。
- TweenInfo: 定义了 Tween 的各种参数,如持续时间、延迟、重复次数、反转、缓动样式和缓动方向等。
- Goal: Tween 的目标状态,即属性在动画结束时应达到的值。
创建一个简单的 Tween
要在 Roblox Studio 中创建一个 Tween,你需要执行以下步骤:
- 获取 TweenService:
local TweenService = game:GetService("TweenService")
- 定义 TweenInfo:
local tweenInfo = TweenInfo.new(
2, -- Duration
Enum.EasingStyle.Linear, -- EasingStyle
Enum.EasingDirection.Out, -- EasingDirection
0, -- RepeatCount (0 = no repeat)
false, -- Reverses (true = reverse tween, false = no reverse)
0 -- DelayTime
)
- 设置目标状态:
假设你想要移动一个 Part 到一个新的位置,你需要定义一个目标状态,指定 Part 的Position
属性应该在动画结束时达到的值。
local goal = {Position = Vector3.new(50, 10, 50)}
- 创建 Tween 并播放:
使用 TweenService 创建 Tween,然后播放它。
local part = game.Workspace.Part -- 假设你的 Part 名称为 Part
local tween = TweenService:Create(part, tweenInfo, goal)
tween:Play()
缓动样式和方向
- 缓动样式(EasingStyle):定义了 Tween 动画的速度变化模式,如 Linear(线性)、Quad(二次)、Cubic(三次)等。
- 缓动方向(EasingDirection):定义了缓动样式的应用方向,如 In(加速)、Out(减速)、InOut(先加速后减速)等。
通过组合不同的缓动样式和方向,你可以创建各种自然和有趣的动画效果。
高级使用
Tween 不仅限于移动物体,它几乎可以应用于任何属性,包括但不限于大小(Size
)、颜色(Color
)、透明度(Transparency
)等。此外,通过调整 TweenInfo 中的参数,如增加重复次数(RepeatCount
)或启用反转(Reverses
),你可以创造出更复杂和动态的动画效果。
Tween 动画是提高 Roblox 游戏视觉体验的有效方式,通过实践和探索不同的参数组合,你可以为你的游戏添加流畅且吸引人的动态效果。