磁力

1 AgentComponent_MagnetNew

与原Magnet区分开的磁体磁力实现。

        简单说明接入流程:
        1、需要模型根层级上有刚体
        2、调用bool BindForceObject(string objectId)方法绑定,这是力学组件基类方法
        3、调用SetAs系列方法,设置为条形、蹄形、环形磁铁或铁质

        附注:
        1、SetAs系列方法设置成各种形状的磁体都隐含指定了物体的中心,如果与模型中心不一致,可调用TransformMeta方法做偏移
        2、SetMotion系列方法可以用来设置磁体的自身坐标系下的某轴向上是否受磁力影响,有助于磁力小车受力后直线运动的需求
        3、接口中涉及的长度单位均为米

1.1 属性或公有字段

名称 类型 描述
MetaActionRange 磁体每个采样点的作用范围,单位米,默认值为0.2 较大值会增加计算量,较小的值可能表现不正确,需要按效果调试。
MaxAffectMagCount 本磁铁最多可同时被多少个其它磁铁影响,上限10
ExtraLinkScale 获取或设置ExtraLink的强度缩放值,更大的值更不容易断开吸附。默认5

1.2 方法

1.2.1 OverrideTransform(System.String)

指定磁力采样点布局依附自身或子物体的Transform,初始默认值是自身的Transform

参数列表:

名称 类型 描述
subPath System.String 子物体的层级路径,传null或空字符串将使用自身的Transform

返回值:

类型 描述
如果未找到指定层级路径的子物体将返回false

1.2.2 SetAsLineMagnet(System.Single,System.Int32,System.Single,System.Single)

设置为条形磁铁采样点布局

参数列表:

名称 类型 描述
len System.Single 长度
halfCount System.Int32 采样点的一半的数量,建议值5
maxIntensity System.Single 最大强度,即两端的强度
minIntensity System.Single 最小强度,即中间的强度

1.2.3 SetAsUShapeMagnet(System.Single,System.Single,System.Single,System.Int32,System.Single,System.Single)

设置为蹄形磁铁采样点布局,布局中心在弧形与条形交界线的中点

参数列表:

名称 类型 描述
len System.Single 长度(不包含弯曲部分)
radius System.Single 弯曲部分半径
rad System.Single 弯曲部分弧度
halfCount System.Int32 采样点的一半的数量,建议值6
maxIntensity System.Single 最大强度,即两端的强度
minIntensity System.Single 最小强度,即中间的强度

1.2.4 SetAsUShapeMagnet2(System.Single,System.Single,System.Single,System.Int32,System.Single,System.Single)

设置为蹄形磁铁采样点布局,布局中心在弧形中间

参数列表:

名称 类型 描述
len System.Single 长度(不包含弯曲部分)
radius System.Single 弯曲部分半径
rad System.Single 弯曲部分弧度
halfCount System.Int32 采样点的一半的数量,建议值6
maxIntensity System.Single 最大强度,即两端的强度
minIntensity System.Single 最小强度,即中间的强度

1.2.5 SetAsRingMagnet(System.Single,System.Single,System.Int32,System.Single)

设置为环形磁铁采样点布局,分为n极s极两个环

参数列表:

名称 类型 描述
height System.Single 环形磁体高度
radius System.Single 环形半径
halfCount System.Int32 一个环上的采样数,建议值6
intensity System.Single 强度

1.2.6 SetAsIron

设置为一个铁质

1.2.7 SetAsLineIron(System.Single,System.Int32)

设置为一个直线形的铁质

参数列表:

名称 类型 描述
len System.Single 长度
halfCount System.Int32 采样数的一半,建议值5

1.2.8 SetAsRingIron(System.Single,System.Int32)

设置为一个环形铁质

参数列表:

名称 类型 描述
radius System.Single 半径
halfCount System.Int32 采样数的一半,建议值6

1.2.9 SetXMotion(System.Boolean)

设置自身X轴是否接受磁力

参数列表:

名称 类型 描述
enable System.Boolean

1.2.10 SetYMotion(System.Boolean)

设置自身Y轴是否接受磁力

参数列表:

名称 类型 描述
enable System.Boolean

1.2.11 SetZMotion(System.Boolean)

设置自身Z轴是否接受磁力

参数列表:

名称 类型 描述
enable System.Boolean

1.2.12 TransformMeta(UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.Vector3)

为采样点布局应用一次坐标变换,以调整整体分布相对于磁体的位置

参数列表:

名称 类型 描述
move UnityEngine.Vector3 位移
rotate UnityEngine.Vector3 旋转
scale UnityEngine.Vector3 缩放

1.2.13 SetShakeFilter(System.Boolean)

设置是否启用磁力抖动过滤,默认对铁质是启用的。它可以检测是否在来回晃动,并尝试让其静止。

参数列表:

名称 类型 描述
enable System.Boolean

1.2.14 Flip

翻转磁极

1.2.15 DrawGizmo(System.Boolean)

启\禁用磁力的gizmo绘制,启用之后在Unity的Scene窗口可以看到一条线,表示当前受到的磁力向量。            在Hierarchy窗口中选中对应器材,可以在Scene窗口看到磁力采样点分布的小球示意

参数列表:

名称 类型 描述
enable System.Boolean 是否启用绘制

1.2.16 SetForceApplyFactor(System.Single)

设置磁体或铁质的受力缩放因子

参数列表:

名称 类型 描述
factor System.Single 受力缩放因子,默认是1

1.2.17 SetMaxVelocity(System.Single)

设置运动的最大速度

参数列表:

名称 类型 描述
v System.Single 运动的最大速度,默认是1

1.2.18 GetCurrentForce

获取当前受到的磁力

返回值:

类型 描述
磁力向量

1.2.19 RegMagnetCollisionCallback(NLua.LuaFunction)

当碰到其它磁体时触发

参数列表:

名称 类型 描述
func NLua.LuaFunction 回调传入参数为entityId:ulong, comId:string, collison:bool

1.2.20 SetActive(System.Boolean)

设置组件是否启用,这个值也会因力学对象的启、禁用而改变

参数列表:

名称 类型 描述
bActive System.Boolean 启用与否
设置是否使用额外的关节来稳定吸附,可用于微小铁质

参数列表:

名称 类型 描述
enable System.Boolean

1.2.22 UpgradeModelToDipole

将当前磁体的磁力计算模型升级为基于磁偶极子模型,这会让磁力模拟更加真实.升级是不可逆的

1.2.23 RegExtraLinkCallback(NLua.LuaFunction)

当ExtraLink连接或断开时触发(需要ExtraLink设置为true

参数列表:

名称 类型 描述
func NLua.LuaFunction 回调传入参数为entityId:ulong, comId:string, 连接还是断开:bool