跳至正文
版本:bleeding-edge 🩸

⛓️ 缆绳

缆绳(Cable)代表一种物理约束,它将两个 Actor 连接起来,并在它们之间提供类似绳索的视觉表现。


💂Authority
This class can only be spawned on 🟦 Server side.
🔁Network Authority Distribution
This class can't be Network Authority distributed.
👪Inheritance
This class shares methods and events from Base Entity, Base Actor, Base Paintable.
🧑‍💻API Source
This page is auto-generated! The Functions, Properties and Events described here are defined in our GitHub's API Repository! Feel free to commit suggestions and changes to the source .json API files!

nanos world Cables are composed primarily of two Unreal Engine components: a Cable and a PhysicsConstraint. The first is used for visual purposes only and the second one gives the effective physical effects that are applied to each end of the Cable.

信息

Cable visuals can be tweaked with :SetForces(), :SetCableSettings() and :SetRenderingSettings() methods. Those methods don’t have effect on the physics being applied and only have effects on the visual representation.

Cable physics can be tweaked with :SetAngularLimits() and :SetLinearLimits().

After attaching the two sides of your cable, the physics can be tweaked to affect how the constraint will affect the objects.

提示

Cables are automatically destroyed when one of the sides are detached

🎒 示例

Server/Index.lua
local my_cable = Cable(Vector())
local cube_01 = Prop(Vector(100, 100, 100), Rotator(), "nanos-world::SM_Cube")
local cube_02 = Prop(Vector(200, 0, 100), Rotator(), "nanos-world::SM_Cube")

my_cable:AttachStartTo(cube_01)
my_cable:AttachEndTo(cube_02)

🛠 构造函数

Default Constructor

No description provided

local my_cable = Cable(location, enable_visuals?, defer_spawn?)

Parameters

TypeNameDefaultDescription
Vectorlocation Required parameter No description provided
booleanenable_visualstrue切换缆绳视觉效果的开关
booleandefer_spawnfalse传入 true 以避免立即将该实体发送给客户端,从而在你想要通过设置多个配置来调整它时提高性能。最后必须调用 FinishSpawn()

🗿 静态函数

Inherited Entity Static Functions
Cable inherits from Base Entity Class, sharing it's methods and functions:
Base Entityscripting-reference/classes/base-classes/entity
ReturnsNameDescription
table of Base EntityGetAll返回一个包含调用此方法的类中所有实体的表
Base EntityGetByIndex返回该类中指定索引处的特定实体
integerGetCount返回该类当前存在的实体数量
table of tableGetInheritedClasses获取使用 继承系统 创建的、直接继承自该类的所有子类列表
iteratorGetPairs返回一个包含该类所有实体的迭代器,用于 pairs() 循环
table or nilGetParentClass如果该类是使用 继承系统 创建的,则获取其父类
tableInherit使用 继承系统 继承此类
booleanIsChildOf如果该类是使用 继承系统 创建的,检查此类是否为另一个类的子类
functionSubscribe为该类的所有实体订阅一个 事件
functionSubscribeRemote订阅从服务器调用的自定义远程事件
Unsubscribe退订此包内该类中此 事件 的所有回调,或者仅取消传入的特定回调

This class doesn't have own static functions.

🦠 函数

Inherited Entity Functions
Cable inherits from Base Entity Class, sharing it's methods and functions:
Base Entityscripting-reference/classes/base-classes/entity
ReturnsNameDescription
BroadcastRemoteEvent直接在此实体上向所有玩家调用自定义远程事件
BroadcastRemoteInRadiusEvent直接针对此实体调用自定义远程事件,并将该事件传递给半径范围内的所有玩家
CallRemoteEvent直接在此实体上向特定玩家调用自定义远程事件
CallRemoteEvent直接在此实体上调用自定义远程事件
CallRemotePlayersEvent直接在此实体上调用自定义远程事件,并将事件传递给玩家列表
Destroy销毁该实体
FinishSpawn完成生成过程,如果实体是通过 defer_spawn 生成的,则将实体发送给客户端
table of stringGetAllValuesKeys获取所有值键的列表
tableGetClass获取该实体的类
integerGetID获取该实体的全网通用网络 ID(在客户端和服务器上相同)
anyGetValue获取此实体上存储在给定键处的
booleanHasAuthority获取本地上下文是否对此实体拥有主控(如果由客户端生成则为 true,由服务器生成则为 false)
booleanIsA递归检查此实体是否继承自某个类
booleanIsBeingDestroyed如果该实体正在被销毁,则返回 true
booleanIsValid如果该实体有效(即未被销毁且指向一个有效的实体),则返回 true
SetValue在此实体中设置一个
functionSubscribe在这个特定实体上订阅一个事件
functionSubscribeRemote在这个特定实体上订阅一个从服务器调用的自定义远程事件
Unsubscribe退订此包内该实体中此 事件 的所有回调,或者仅取消传入的特定回调
Inherited Actor Functions
Cable inherits from Base Actor Class, sharing it's methods and functions:
Base Actorscripting-reference/classes/base-classes/actor
ReturnsNameDescription
AddActorTag向该 Actor 添加一个虚幻 Actor 标签
AddAngularImpulse向该 Actor 添加角冲量。适用于单次瞬间爆发
AddImpulse向该 Actor 添加冲量。适用于单次瞬间爆发
booleanAttachTo将该 Actor 附加到任何其他 Actor 上,可选择附加在特定骨骼处
Detach将该 Actor 从其附加的 Actor 上分离
table of stringGetActorTags获取该 Actor 上的所有虚幻 Actor 标签
VectorGetAngularForce获取该 Actor 的角外力(由 SetAngularForce() 设置)
floatGetAngularVelocityReturns the angular velocity of this Actor
table of Base ActorGetAttachedEntities获取附加到该 Actor 的所有 Actor
Base Actor or nilGetAttachedTo获取该 Actor 所附加到的父级 Actor
tableGetBounds获取该 Actor 的边界范围
CollisionTypeGetCollision获取该 Actor 的碰撞类型
integerGetDimension获取该 Actor 的维度
floatGetDistanceFromCamera获取该 Actor 距离相机的距离
VectorGetForce获取该 Actor 的持续外力(由 SetForce() 设置)
VectorGetLocation获取该 Actor 在游戏世界中的位置
floatGetMassReturns the mass of this Actor
Player or nilGetNetworkAuthority获取该 Actor 的网络主控玩家
VectorGetRelativeLocation如果该 Actor 已附加,获取其相对位置
RotatorGetRelativeRotation如果该 Actor 已附加,获取其相对旋转
RotatorGetRotation获取该 Actor 在游戏世界中的角度值
VectorGetScale获取该 Actor 的缩放比例
floatGetScreenPercentage获取该 Actor 在屏幕中所占尺寸的百分比
tableGetSocketTransform在给定骨骼或插槽名称的情况下,获取世界空间中的插槽变换
VectorGetVelocity获取该 Actor 当前的速度
booleanHasNetworkAuthority如果本地玩家当前是该 Actor 的网络主控(Network Authority),则返回 true
booleanIsGravityEnabled如果该 Actor 启用了重力,则返回 true
booleanIsInWater如果该 Actor 处于水中,则返回 true
booleanIsNetworkDistributed如果该 Actor 当前处于网络分配状态,则返回 true
booleanIsVisible如果该 Actor 可见,则返回 true
RemoveActorTag从该 Actor 中移除一个虚幻 Actor 标签
RotateTo在一定时间内平滑旋转该 Actor 到指定角度
SetAngularForce向该 Actor 添加一个永久的角外力,设为 Vector(0, 0, 0) 可以取消
SetCastShadow设置该 Actor 是否投射阴影
SetCollision设置该 Actor 的碰撞类型
SetDimension设置该 Actor 的维度
SetDistanceOptimizationMultiplierSets this Actor's distance optimization multiplier
SetForceAdds a permanent force to this Actor, set to Vector(0, 0, 0) to cancel
SetGravityEnabledSets whether gravity is enabled on this Actor
SetHighlightEnabledSets whether the highlight is enabled on this Actor, and which highlight index to use
SetLifeSpanSets the time (in seconds) before this Actor is destroyed. After this time has passed, the actor will be automatically destroyed.
SetLocationSets this Actor's location in the game world
SetNetworkAuthoritySets the Player to have network authority over this Actor
SetNetworkAuthorityAutoDistributedSets if this Actor will auto distribute the network authority between players
SetOutlineEnabledSets whether the outline is enabled on this Actor, and which outline index to use
SetRelativeLocationSets this Actor's relative location in local space (only if this actor is attached)
SetRelativeRotationSets this Actor's relative rotation in local space (only if this actor is attached)
SetRenderCullDistanceSets this Actor's render cull distance
SetRotationSets this Actor's rotation in the game world
SetScaleSets this Actor's scale
SetVisibilitySets whether the actor is visible or not
TranslateToSmoothly moves this actor to a location over a certain time
booleanWasRecentlyRenderedGets if this Actor was recently rendered on screen
Inherited Paintable Functions
Cable inherits from Base Paintable Class, sharing it's methods and functions:
Base Paintablescripting-reference/classes/base-classes/paintable
ReturnsNameDescription
ColorGetMaterialColorParameter从该 Actor 的材质中获取 Color 参数
floatGetMaterialScalarParameter从该 Actor 的材质中获取 Scalar 参数
stringGetMaterialTextureParameter从该 Actor 的材质中获取 Texture 参数
VectorGetMaterialVectorParameter从该 Actor 的材质中获取 Vector 参数
ResetMaterial将指定索引处的材质重置为原始材质
SetMaterial设置该 Actor 指定索引处的材质
SetMaterialColorParameter设置该 Actor 材质中的 Color 参数
SetMaterialFromCanvas将该 Actor 指定索引处的材质设为 Canvas 对象
SetMaterialFromSceneCapture将该 Actor 指定索引处的材质设为 SceneCapture 对象
SetMaterialFromWebUI将该 Actor 指定索引处的材质设为 WebUI 对象
SetMaterialScalarParameter设置该 Actor 材质中的 Scalar 参数
SetMaterialTextureParameter将该 Actor 材质中的纹理参数设为一张图像
SetMaterialVectorParameter设置该 Actor 材质中的 Vector 参数
SetPhysicalMaterial使用新的物理材质覆盖该 Actor 的物理材质
ReturnsNameDescription
booleanAttachEndTo将此缆绳的末端附加到另一个 Actor 的特定骨骼或相对位置上
booleanAttachStartTo将此缆绳的始端附加到另一个 Actor 的特定骨骼或相对位置上
DetachEnd断开此缆绳的末端连接
DetachStart断开此缆绳的始端连接
Base Actor or nilGetAttachedEndTo获取附加到末端的 Actor
Base Actor or nilGetAttachedStartTo获取附加到始端的 Actor
SetAngularLimits设置此缆绳的物理角限制
SetAngularMotorSLERPOrientationSettings设置是否启用 SLERP 角朝向驱动以及目标朝向
SetAngularMotorSLERPVelocitySettings设置是否启用 SLERP 角速度驱动以及目标角速度
SetAngularMotorTwistAndSwingOrientationSettings设置启用哪些 twist 和 swing 角朝向驱动以及目标朝向
SetAngularMotorTwistAndSwingVelocitySettings设置启用哪些 twist 和 swing 角速度驱动以及目标角速度
SetCableSettings设置此缆绳的整体设置(仅限视觉效果)
SetForces设置应用到缆绳上的外力(仅限视觉效果)
SetLinearLimits设置此缆绳的物理线性限制
SetLinearMotorPositionSettings设置启用哪些线性位置驱动以及目标位置
SetLinearMotorVelocitySettings设置启用哪些线性速度驱动以及目标速度
SetPhysicsConstraintSettings设置此缆绳与物理约束相关的设置
SetRenderingSettings设置此缆绳的渲染设置(仅限视觉效果)

AttachEndTo

将此缆绳的末端附加到另一个 Actor 的特定骨骼或相对位置上。为了优化性能,建议将此方法作为设置缆绳时最后调用的方法。

注¹:你可以只附加末端,而始端将固定在缆绳的位置。

注²:如果未设置线性限制,该实体将直接吸附到另一个 Actor 上。或者,你也可以通过将其作为参数传递来保持物理约束的偏移量。
local attached_successfully = my_cable:AttachEndTo(other, relative_location?, bone_name?, constraint_offset?)

Parameters

TypeParameterDefaultDescription
Base Actorother Required parameter No description provided
Vectorrelative_location?Vector(0, 0, 0)
No description provided
stringbone_name?
要附加到哪根骨骼。如果为空,它将附加到 Actor 本身,否则将附加到网格体对应的骨骼/插槽上
Vectorconstraint_offset?Vector(0, 0, 0)
应用在附加末端的物理约束偏移量,使用另一个 Actor 的局部空间坐标

Returns

TypeDescription
boolean是否成功附加

AttachStartTo

将此缆绳的始端附加到另一个 Actor 的特定骨骼或相对位置上。为了优化性能,如果你希望同时附加始端和末端,建议先附加始端,以避免重复计算。
local attached_successfully = my_cable:AttachStartTo(other, relative_location?, bone_name?)

Parameters

TypeParameterDefaultDescription
Base Actorother Required parameter No description provided
Vectorrelative_location?Vector(0, 0, 0)
No description provided
stringbone_name?
要附加到哪根骨骼。如果为空,它将附加到 Actor 本身,否则将附加到网格体对应的骨骼/插槽上

Returns

TypeDescription
boolean是否成功附加

DetachEnd

断开此缆绳的末端连接
my_cable:DetachEnd()

DetachStart

断开此缆绳的始端连接
my_cable:DetachStart()

GetAttachedEndTo

获取附加到末端的 Actor
local attached_actor = my_cable:GetAttachedEndTo()

Returns

TypeDescription
Base Actor or nilattached_actor

GetAttachedStartTo

获取附加到始端的 Actor
local attached_actor = my_cable:GetAttachedStartTo()

Returns

TypeDescription
Base Actor or nilattached_actor

SetAngularLimits

设置此缆绳的物理角限制
my_cable:SetAngularLimits(swing_1_motion, swing_2_motion, twist_motion, swing_1_limit?, swing_2_limit?, twist_limit?)

Parameters

TypeParameterDefaultDescription
ConstraintMotionswing_1_motion Required parameter 指示是否启用 Swing1 限制
ConstraintMotionswing_2_motion Required parameter 指示是否启用 Swing2 限制
ConstraintMotiontwist_motion Required parameter 指示是否启用 Twist 限制
floatswing_1_limit?0
沿 XY 平面的运动角度。这定义了圆锥体第一个对称角
floatswing_2_limit?0
沿 XZ 平面的运动角度。这定义了圆锥体第二个对称角
floattwist_limit?0
沿 X 轴滚转的对称角

SetAngularMotorSLERPOrientationSettings

设置是否启用 SLERP 角朝向驱动以及目标朝向
my_cable:SetAngularMotorSLERPOrientationSettings(enable_drive_slerp?, strength?, target?)

Parameters

TypeParameterDefaultDescription
booleanenable_drive_slerp?false
启用 SLERP 角朝向驱动
floatstrength?0
驱动的位置强度(刚度)
Rotatortarget?Rotator(0, 0, 0)
角驱动的目标朝向

SetAngularMotorSLERPVelocitySettings

设置是否启用 SLERP 角速度驱动以及目标角速度
my_cable:SetAngularMotorSLERPVelocitySettings(enable_drive_slerp?, strength?, target?)

Parameters

TypeParameterDefaultDescription
booleanenable_drive_slerp?false
启用 SLERP 角速度驱动
floatstrength?0
驱动的速度强度(阻尼)
Vectortarget?Vector(0, 0, 0)
目标角速度

SetAngularMotorTwistAndSwingOrientationSettings

设置启用哪些 twist 和 swing 角朝向驱动以及目标朝向
my_cable:SetAngularMotorTwistAndSwingOrientationSettings(enable_drive_twist?, enable_drive_swing?, strength?, target?)

Parameters

TypeParameterDefaultDescription
booleanenable_drive_twist?false
启用 twist 角朝向驱动
booleanenable_drive_swing?false
启用 swing 角朝向驱动
floatstrength?0
驱动的位置强度(刚度)
Rotatortarget?Rotator(0, 0, 0)
角驱动的目标朝向

SetAngularMotorTwistAndSwingVelocitySettings

设置启用哪些 twist 和 swing 角速度驱动以及目标角速度
my_cable:SetAngularMotorTwistAndSwingVelocitySettings(enable_drive_twist?, enable_drive_swing?, strength?, target?)

Parameters

TypeParameterDefaultDescription
booleanenable_drive_twist?false
启用 twist 角速度驱动
booleanenable_drive_swing?false
启用 swing 角速度驱动
floatstrength?0
驱动的速度强度(阻尼)
Vectortarget?Vector(0, 0, 0)
目标角速度

SetCableSettings

设置此缆绳的整体设置(仅限视觉效果)
my_cable:SetCableSettings(length, num_segments?, solver_iterations?, enable_stiffness?)

Parameters

TypeParameterDefaultDescription
floatlength Required parameter 缆绳的自然静止长度。默认值为 100。最小值为 0
integernum_segments?10
缆绳拥有的分段数量。默认值为 10。最小值为 1
integersolver_iterations?1
解算器迭代次数,控制缆绳的“刚性”。默认值为 1。最大值为 16
booleanenable_stiffness?true
为缆绳添加硬度约束。默认值为 true

SetForces

设置应用到缆绳上的外力(仅限视觉效果)
my_cable:SetForces(force, gravity_scale?)

Parameters

TypeParameterDefaultDescription
Vectorforce Required parameter 应用到缆绳中所有粒子的力向量(世界空间)。默认值为 Vector(0, 0, 0)
floatgravity_scale?1
应用到影响此缆绳的世界重力上的缩放系数。默认值为 1

SetLinearLimits

设置此缆绳的物理线性限制。如果启用了 use_soft_constraint,则会使用劲度和阻尼,否则将使用弹性系数(restitution)。

注:此方法必须在附加任何缆绳端点之前调用。
my_cable:SetLinearLimits(x_motion, y_motion, z_motion, limit?, restitution?, use_soft_constraint?, stiffness?, damping?)

Parameters

TypeParameterDefaultDescription
ConstraintMotionx_motion Required parameter 指示沿 X 轴应用的线性约束。Free 表示完全没有约束。Locked 表示不允许沿 X 轴运动。Limited 表示所有激活轴上关节内的距离必须小于提供的距离
ConstraintMotiony_motion Required parameter 指示沿 Y 轴应用的线性约束。Free 表示完全没有约束。Locked 表示不允许沿 Y 轴运动。Limited 表示所有激活轴上关节内的距离必须小于提供的距离
ConstraintMotionz_motion Required parameter 指示沿 Z 轴应用的线性约束。Free 表示完全没有约束。Locked 表示不允许沿 Z 轴运动。Limited 表示所有激活轴上关节内的距离必须小于提供的距离
floatlimit?0
两个关节参考系之间允许的距离。距离限制适用于所有启用的轴(启用一个轴意味着线,两个轴意味着圆,三个轴意味着球)
floatrestitution?0
控制违反约束时的反弹量。弹性系数为 1 时,将以撞击限制时的相同速度反弹回来。值为 0 时则会完全静止停止
booleanuse_soft_constraint?false
是否要使用柔性约束(弹簧)
floatstiffness?0
柔性约束的刚度。仅在开启柔性约束时使用
floatdamping?0
柔性约束的阻尼。仅在开启柔性约束时使用

SetLinearMotorPositionSettings

设置启用哪些线性位置驱动以及目标位置
my_cable:SetLinearMotorPositionSettings(enable_drive_x?, enable_drive_y?, enable_drive_z?, strength?, target?)

Parameters

TypeParameterDefaultDescription
booleanenable_drive_x?false
启用 X 轴上的线性位置驱动
booleanenable_drive_y?false
启用 Y 轴上的线性位置驱动
booleanenable_drive_z?false
启用 Z 轴上的线性位置驱动
floatstrength?0
驱动的位置强度(刚度)
Vectortarget?Vector(0, 0, 0)
目标位置

SetLinearMotorVelocitySettings

设置启用哪些线性速度驱动以及目标速度
my_cable:SetLinearMotorVelocitySettings(enable_drive_x?, enable_drive_y?, enable_drive_z?, strength?, target?)

Parameters

TypeParameterDefaultDescription
booleanenable_drive_x?false
启用 X 轴上的线性速度驱动
booleanenable_drive_y?false
启用 Y 轴上的线性速度驱动
booleanenable_drive_z?false
启用 Z 轴上的线性速度驱动
floatstrength?0
驱动的速度强度(阻尼)
Vectortarget?Vector(0, 0, 0)
目标速度

SetPhysicsConstraintSettings

设置此缆绳与物理约束相关的设置
my_cable:SetPhysicsConstraintSettings(disable_collision)

Parameters

TypeParameterDefaultDescription
booleandisable_collision Required parameter 如果为 true,将禁用该约束的两个刚体之间的碰撞

SetRenderingSettings

设置此缆绳的渲染设置(仅限视觉效果)
my_cable:SetRenderingSettings(width, num_sides, tile_material)

Parameters

TypeParameterDefaultDescription
floatwidth Required parameter 缆绳几何体的宽度。默认值为 6
integernum_sides Required parameter 缆绳几何体的侧面数量。默认值为 4
integertile_material Required parameter 材质沿缆绳长度方向重复平铺的次数。默认值为 1

🚀 事件

Inherited Entity Events
Cable inherits from Base Entity Class, sharing it's events:
Base Entityscripting-reference/classes/base-classes/entity
NameDescription
ClassRegister当使用 继承系统 注册一个新类时触发
Destroy当实体被销毁时触发
Spawn当实体被生成/创建时触发
ValueChange当实体通过 :SetValue() 改变了值时触发
Inherited Actor Events
Cable inherits from Base Actor Class, sharing it's events:
Base Actorscripting-reference/classes/base-classes/actor
NameDescription
DimensionChange当 Actor 改变其维度时触发
NetworkAuthorityChangeTriggered when an Actor changes its network authority Player
NetworkAuthorityChangeTriggered when the local Player gets/loses network authority over this actor

This class doesn't have own events.