驾驶位

类型

VehicleSeat

简介

驾驶位是一个带有特殊功能的零件,将驾驶位焊接到载具上,就可以使载具根据玩家的操作行驶,驾驶位有三种动力模式,用于模拟不同类型的载具,学习驾驶位的使用,可以观看视频教程驾驶位,在此教程中可以学习到如何使用驾驶位模块制作不同类型的载具。

  • 创建驾驶位
    工作区下点击+号——零件类——驾驶位,也可以使用脚本函数RWObject:New(ClassName)创建。

  • 编辑驾驶位
    在编辑模式下,点击驾驶位的属性面板可以对驾驶位进行编辑。驾驶位属于零件类对象,具备所有基础零件的属性,其自身的特有属性在“驾驶位控件”下显示。

  • 驾驶位的特性

  1. 角色与驾驶位发生碰撞后,使角色进入乘坐(Sit)状态;处于乘坐状态下角色不能进行移动、使用工具等操作,按跳跃可以解除乘坐乘坐状态。
  2. 获得玩家的操作:驾驶位会获取用户的操作输入,并转换为对载具操作命令,如前进、转向、倒车等。
  3. 为载具提供动力:驾驶位提供了三种驱动载具的方式,动力模式的不同会影响组装载具的规则,在物理运动的表现也会有很大区别。
  • 动力模式
  1. 速度:
    驾驶位将与自身焊接的第一个零件类对象视为底盘,对底盘施加一个速度,速度方向是驾驶位朝向。
  2. 力:
    驾驶位将与自身焊接的第一个零件类对象视为底盘,对底盘施加一个矢量力,力的方向是驾驶位朝向。
  3. 扭矩:
    驾驶位对处于同一个拼接结构的轮胎对象施加扭矩(即转动力),使轮胎滚动,轮胎的滚动方向与驾驶位朝向相同。
  • 使用驾驶位组建载具
  1. 结构1:
    动力模式=速度/力,通过焊接、铰链组成的载具结构,由于作用力是在底盘上,这种载具并不一定需要轮子(轮胎对象或圆柱形零件)就可以行驶,但是使用铰链(必须是铰链,否则不会使轮子进行转动)链接圆柱形零件可以有效降低与地面的摩擦力。
  2. 结构2:
    动力模式=扭矩,通过拼接组成的载具结构,需要该结构中包括一个驾驶位和一个以上的轮胎(轮胎过少可能导致载具不平衡,但仍然可以行驶),注意在拼接结构中,其他物理约束将失效。
  • 注意事项
  1. 默认的驾驶位在创建时提供了一套用于移动端操作界面和脚本,用户也可以更换界面样式(但要保持命名是完全一致的),或者自己编写LUA脚本,重新创造自己的操作界面。
  2. 两种载具结构都可以使用轮胎对象,区别在于:结构1中,轮胎对象相当于一个圆柱形零件,需要通过铰链使其进行转动。而结构2中,轮胎对象会提供一个接近真实世界中轮胎摩擦表现,而且会根据运动状态,模拟汽车悬挂系统的效果。
  3. 驾驶位是一种带有特性的零件类对象,因此不可以被合并,分离或反向。

属性

    PowerMode     动力模式   Enum.PowerModeType   
    驾驶位提供三种动力,在以速度或力作为动力源时,驾驶位需要与底盘拼接,将动力施加在底盘上;在使用扭矩作为动力源时,驾驶位需要与轮胎对象进行拼接,将动力施加在轮胎对象上。

    SpeedLimit     前进限速   float   
    前进限速

    ReverseSpeedLimit     倒车限速   float   
    倒车限速

    ThrottleSensitivity     油门力度   float   
    这个值越大,在输入前进或后退指令时,就会越快达到最大扭矩输出

    SteerSensitivity     转向灵敏度   float   
    同油门,这个值越大,转向越灵敏

    Speed     最大前进速度   float   
    单位为米/每秒,建议不要超过10

    ReverseSpeed     最大倒车速度   float   
    单位为米/每秒,建议不要超过3

    MaxForce     最大前进力   float   
    最终前进速度由该值和载具总质量共同确定

    MaxReverseForce     最大倒车力   float   
    最终倒车速度由该值和载具总质量共同确定

    MaxTorque     最大前进扭矩   float   
    最终前进速度由该值和载具总质量共同确定

    MaxReverseTorque     最大倒车扭矩   float   
    最终倒车速度由该值和载具总质量共同确定

    MaxSteerAngle     最大转向角   int   
    轮胎在进行转向时,所能扭转的最大角度,过大的转向角度会影响转向速度

    MaxSpeedAngular     最大转向速度   float   
    单位为米/每秒,建议不要超过5

    MaxForceTorque     最大转向力   float   
    最终转向速度由该值和载具总质量共同确定

    SteerRecoverSensitivity     转向恢复速度   float   
   

继承自BasePart

    UseType     改变形状   Enum.MeshTypes   
    改变形状

继承自BaseSeat

    Avatar     座位上角色   Avatar   
    当前在驾驶位上乘坐状态的角色对象

继承自ScenePrimitive

    Color     颜色   Vector3   
    点击可打开详细的颜色调节面板

    Material     材质   Enum.MaterialType   
    零件的材质,不同的材质具有不同的物理属性

    Tiling     平铺率   Vector2   
    材质贴图在零件表面的平铺次数,数值越大贴图越密。

    Offset     材质偏移   Vector2   
    材质贴图相对于默认位置的偏移量

    Transparency     透明度   float   
    零件的透明度

    AlphaCutoff     透明镂空   float   
    自定义零件没有贴图的部分会显示基本材质贴图,透明镂空指基本材质贴图的透明度

    Position     坐标   Vector3   
    显示对象的坐标,分为世界坐标和相对坐标

    Rotation     朝向   Vector3   
    显示对象的世界朝向

    Size     尺寸   Vector3   
    对象的具体尺寸大小

    WorldPosition     世界坐标   Vector3   
    世界坐标

    WorldRotation     世界方向   Vector3   
    世界方向

    LocalPosition     相对坐标   Vector3   
    相对坐标

    LocalRotation     相对方向   Vector3   
    相对方向

    IsLock     锁定   bool   
    锁定可使对象在编辑器窗口中不可被选中,但是在管理器中依然可以选中

    Anchored     锚定   bool   
    锚定可使对象不受物理规则影响

    CanCollide     是否碰撞   bool   
    对象是否可以与其他带有物理规则的对象产生碰撞

    RotVelocity     角速度   Vector3   
    当前角速度,单位弧度/秒;锚定之后会把自身角速度传递给在物体表面上的其他零件和角色

    Velocity     速度   Vector3   
    当前速度,单位米/秒,锚定之后会把自身速度传递给在物体表面上的其他零件和角色

    IsCustomPhysics     自定义物理属性   bool   
    自己定义零件的各种物理属性

    Density     密度   float   
    密度

    Friction     摩擦系数   float   
    两表面之间的摩擦力和作用在其一表面上的垂直力之比值,两物体接触时采用摩擦系数较小的一方

    Bounciness     弹性系数   float   
    弹性系数

    FrictionWeight     摩擦权重   float   
    摩擦权重,仅在人与其他物体接触时起效;权重越大自身的摩擦系数对最终摩擦系数影响越大

    UseGravity     是否开启重力   bool   
    是否开启重力

    IsCollisionCallBack     碰撞是否回调   bool    [只读]
    0

    Mass     质量   float    [只读]
    质量

继承自RWObject

    Name     名称   string   
    该对象的自定义名称

    ClassName     类型   string   
    该对象对应的对象类型名称

    Parent     父级   RWObject   
    该对象的父级对象

函数

    Sit(AvatarObj)
    使指定的角色坐到驾驶位上

    ClearSitting()
    使坐在驾驶位的角色解除驾驶状态

    Reset()
    使驾驶位x,z轴的旋转归零,并且使驾驶位位置上升一段距离

继承自ScenePrimitive

    CreateJoint(target,jointType)
    在自身与目标对象之间创建指定类型的约束

    GetJointList()
    获取自身的所有约束,返回一个列表

    DelAllJoint()
    删除自身的所有约束

    GetJointPartList(recursive)
    获取与自身通过约束相连的所有零件类对象,返回一个列表

    GetMass()
    获取自身的质量

    GetTriggeringPart()
    返回零件正在接触的其他零件类对象

    GetMaterial()
    获取自身材质的枚举类型

    GetNetworkOwner()
    返回现在拥有这个零件主权的玩家

    GetNetworkOwnershipAuto()
    返回这个零件的主权是否处于自动分配模式

    SetNetworkOwner(player)
    设置这个以及所有相连接的零件的主权

    SetNetworkOwnershipAuto()
    使游戏引擎能够自动处理零件。

继承自RWObject

    DelAllChild()
    删除所有子对象

    Available()
    检查对象是否可用

    Clone(parent)
    复制自身,若有参数则以参数为父级

    Destroy()
    删除自身

    GetAncestorByName(Name)
    通过对象名字寻找父级对象

    GetAncestorByClassName(className)
    通过对象类型寻找父级对象

    GetChildByName(Name,recursive)
    通过对象名字寻找子级对象

    GetChildByClassName(className,recursive)
    通过对象类型寻找子级对象

    GetAllChild()
    寻找自身所有子级对象,并作为一个列表返回

    GetAllDescendant()
    递归寻找自身所有后代,并作为一个列表返回

    IsAncestor(TarObj)
    判断自身是否为目标对象的祖先

    IsDescendant(TarObj)
    判断自身是否为目标对象的后代

    WaitForChild(childName,timeout)
    寻找自身的子对象。如果没有子对象,在没有填写timeout参数时,会暂停进程直到找到子对象;如果填写了timeout参数,会根据参数时间暂停进程,超出参数时间后,进程照常进行

    Child(childName)
    根据给定的名字寻找自身的子对象

    Equals(TarObj)
    判断自身是否为目标对象,结果为真返回True,结果为假返回False;注意克隆、新建同类型、同名对象,equal结果均为假

    IsClass(className)
    判断自身是否为给定的对象类型

事件

    onEnterDriveState()
    进入驾驶状态时触发

    onLeaveDriveState()
    离开驾驶状态时触发

继承自ScenePrimitive

    JointBreak()
    约束删除或受到断开力的时候触发

    TriggerEnter(res)
    自身进入触发状态时,触发该事件

    TriggerExit(res)
    自身结束触发状态时,触发该事件

继承自RWObject

    Destroyed()
    删除自身时触发

    ChildAdded(childobject)
    添加子对象时触发

    ChildRemoved(childobject)
    移除子对象时触发

    DescendantAdded(descendantobject)
    添加后代时触发

    DescendantRemoved(descendantobject)
    移除后代时触发

    AncestryChanged(AncestryChanged)
    祖先变更时触发

文档更新时间: 2020-10-12 17:48   作者:刘征