roblox 杂记
ForceField
当角色生成在 SpawnLocation
处,且 SpawnLocation.Duration
属性大于零时,就会创建 ForceField 。
ForeField 会影响其父类实例。当父类实例为 Model
时,将会保护该 Model
所有的子级 BasePart
。父类实例为 BasePart
时,只有当该部件与其连接部件都拥有 Forcefield 时,才会为其提供保护。
掉落动画
可以用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
通过设定好相对偏移来计算掉落的轨迹也是可以的。
关于包裹的掉落
建议将包裹分别做成一个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)))
即可实现掉落效果
1. 将人物传到某一个坐标点
player.Character:SetPrimaryPartCFrame(CFrame.new(Vector3.new(x, y, z)))
相关api
https://developer.roblox.com/en-us/api-reference/function/Model/SetPrimaryPartCFrame
1. 隐藏NPC头顶UI
修改BillboardGui的MaxDistance属性
1. 背包上限
参考Starting Place模板里的宝箱代码 ChestLan - >Script
这部分代码是克隆一个Tool保持引用,并将Tool转化成Model,防止玩家碰到Tool之后,直接给玩家。
这部分代码是玩家碰到宝箱后,宝箱将刚才引用的Tool给玩家,在这里加背包上限判定的方法就好了
评论