UDN
Search public documentation:

VehiclesTechnicalGuideCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 游戏性编程 > 载具系统技术指南

载具系统技术指南


概述


在虚幻引擎中载具可以是玩家在世界中到处行走所使用的任何物理对象。首先想到的事情就是类似于汽车、卡车这样的带轮子的车辆或者像飞机、直升机那样的能飞的载具。但是,虚幻引擎中的载具系统和刚体物理引擎在创建载具类型方面提供了巨大的灵活性。使用这个系统可以创建不仅可以创建汽车、卡车、飞机、直升机、坦克,甚至可以创建像气垫船、气垫滑板这样使用踏板另其悬浮的载具,还可以创建像马这样的生物载具,以及创建可以机械化地行走的载具。这意味着该系统不仅可以创建具有载具战斗的游戏,而且可以创建项赛马比赛游戏中那些可以骑的马。载具系统甚至可以用于创建冲浪板或滑雪板以进行仿真模拟。当然,对于某些非常特殊的载具,可能需要实现自定义功能,但是整个架构和系统已经准备好,从而允许您简单地添加特殊类型载具所需要的功能,而不必从头开始构建整个系统。

Vehicle 类


虚幻引擎中的所有载具都继承Pawn类,从中继承了大量的属性和功能。虚幻引擎中的载具的可视化组件使用一个骨架网格物体,并且可以播放动画、声效、以及在网格物体骨架上的插槽或骨骼位置处产生各种特效。

Vehicle

这是所有载具的基类。它包含了基本控制输入Steering(方向控制)、Throttle(油门)、Rise(上下移动)以及用于允许计算机玩家驾驶载具的大部分AI代码的存根。它也包含了用于进入和退出载具的代码。您可以继承该类来创建一些东西,比如固定的塔车。

+
Vehicle 属性 (点击查看)

AI

  • bTurnInPlace - 如果该项为true,那么则告诉AI这个载具可以原地转动。
  • bSeparateTurretFocus - 如果该项为true,那么则告诉AI该载具有转动炮塔式武器,该武器的瞄准方向和载具朝向相反。
  • bFollowLookDir - 如果该项为true,那么则告诉AI载具的旋转度和相机的旋转度一样。
  • bHasHandbrake - 如果该项为true,则告诉AI该载具可以手动制动。用于驾驶控制载具。
  • bScriptedRise -如果该项为true,那么则告诉AI该载具可以盘旋。当卡住或到达目的地时使用。
  • bDuckObstacles - 如果该项为true,则告诉AI检测障碍物并躲闪到其下面。
  • bAvoidReversing - 如果该项为true,则告诉AI除非绝对必须否则避免使用倒退功能。
  • bRetryPathfindingWithDriver - 如果该项为true,那么则告诉AI如果在载具中寻路失败则继续步行。

Damage(伤害)

  • DriverDamageMult - 驾驶员在载具中所导致的伤害的乘数。
  • MomentumMult - 伤害给予载具的动力的乘数。
  • CrushedDamageType - 当载具压缩某物时所使用的DamageType (伤害类型)。
  • MinCrushSpeed - 载具移动压碎某物时必须达到的最小速度。
  • ForceCrushPenetration - 无论载具速度怎样,当载具压碎某物之前所允许的最大穿过量。

Display(显示)

  • ViewPitchMin - 继承Pawn。允许载具的相机具有的最小倾斜旋转度。
  • ViewPitchMin - 继承于Pawn。允许载具的相机具有的最大倾斜旋转度。

Entry/Exit(进入/退出)

  • Driver - 引用驾驶该载具的Pawn。
  • bDriving - 如果该项为true,则载具由驾驶员。
  • ExitPositions - 一个和载具相对的位置的数组,用于当玩家退出载具时放置玩家。如果没有指定位置,那么则使用可选的自动放置系统。
  • ExitRadius - 当使用自动放置系统时放置玩家的位置到达载具位置的距离;尝试将玩家放置到载具前面、后面、左面、右面的这个距离处。
  • ExitOffset - 当玩家退出载具时放置玩家所使用的额外偏移量。
  • bDriverIsVisible - 如果该项为true ,则渲染载具的驾驶员。
  • bAttachDriver - 如果该项为true,那么当驾驶员进入载具时将会把他附加到载具上。

网格物体和动画

  • Mesh -继承于Pawn。代表载具可视化组件的SkeletalMeshComponent(骨架网格物体组件)。

Movement(运动)

  • Steering(方向控制) - -1到1之间的值代表玩家正在向左或向右驾驶载具的方向。默认情况下,这是按下A和D键的结果。
  • Throttle - 值在-1到1之间,代表玩家的前进和倒退输入。默认情况下,这是按下W和S键的结果。
  • Rise - 值在-1到1之间,代表玩家的向上和向下输入。默认情况下,这是按下空格和C键的结果。
  • bIgnoreStallZ - 如果该项为true,那么载具则继续上升到关卡的World属性中指定的StallZ值的高度之上。

+
Vehicle 函数 (点击查看)

AI

  • GetMaxRiseForce - 返回载具的最大上升力。
  • GetTargetLocation [RequestedBy] [bRequestAlternateLoc] - 当瞄准载具时返回最佳瞄准位置。
    • RequestedBy - 可选项。引用瞄准载具的Actor。
    • bRequestAlternateLoc - 可选项。如果该项为true,那么如果有多个位置则返回次要位置。在这个实现中没有使用。
  • ContinueOnFoot - 如果驾驶员是AI强制驾驶员从载具内出来,并返回驾驶员是否离开载具。当路径仅能通过步行通过时从寻路代码中调用该功能。

Collision(碰撞)

  • EncroachingOn [Other] - 当载具侵占某个特定actor或和某个特定actor重叠,且该Actor不能从路上推开时引擎会调用该函数。
    • Other - 引用载具所侵占的Actor。
  • PancakeOther [Other] - 由EncroachingOn()调用来处理大量伤害,以便压碎指定的Pawn。
    • Other - 引用要压碎的Pawn。

Damage(伤害)

  • TakeRadiusDamage [InstigatedBy] [BaseDamage] [DamageRadius] [DamageType] [Momentum] [HurtOrigin] [bFullDamage] [DamageCauser] [DamageFallowExponent] - 应用伤害给载具和驾驶员,并根据载具到达伤害的指定原点的距离缩放伤害。
    • InstigatedBy - 引用负责产生伤害的控制器。
    • BaseDamage - 存放了在原点处要应用的最大伤害量。
    • DamageRadius - 存放了从原点处开始可以产生伤害的最大距离;伤害量在原点和这个距离之间进行缩放。
    • DamageType - 存放了要产生的伤害的类型。
    • Momentum - 存放了给载具施加的动力量。
    • HurtOrigin - 存放了要应用的伤害的原点。在这个位置处产生完全伤害。
    • bFullDamage - 如果该项为true,则不会基于到达原点的距离缩放伤害量。在这个半径范围内施加完全伤害。
    • DamageCauser - 引用负责产生伤害的Actorimpart。
    • DamageFalloffExponent - 存放了伤害随着半径的衰减指数。默认值是1.0,进行线性衰减。
  • DamageRadiusDamage [DamageAmount] [DamageRadius] [EventInstigator] [DamageType] [Momentum] [HitLocation] [DamageCauser] [DamageFalloffExponent] - 决定施加给载具的伤害是否会影响到驾驶员,如果会伤害到驾驶员则在Driver(驾驶员)上调用TakeRadiusDamage() 函数。
    • DamageAmount - 存放了在原点处要应用的最大伤害量。
    • DamageRadius - 存放了从原点处开始可以施加伤害的最大距离;在原点和这个距离之间缩放伤害量。
    • EventInstigator - 引用负责施加伤害的控制器。
    • DamageType - 存放了要施加的伤害的类型。
    • Momentum - 存放了赋予玩家的动力。
    • HitLocation - 存放了要应用的伤害的原点。在这个半径范围内施加完全伤害。
    • DamageCauser - 引用负责产生伤害的Actorimpart。
    • DamageFalloffExponent - 存放了伤害随着半径的衰减指数。默认值是1.0,进行线性衰减。
  • Destroy - 当载具被破坏时由引擎调用该项。
  • Destroyed_HandleDriver - 当载具被破坏来处理玩家的清除时调用该项。
  • TakeDamage [Damage] [EventInstigator] [HitLocation] [Momentum] [DamageType] [HitInfo] [DamageCauser] - 从父类继承而来。应用伤害给载具。使用DamageType 载具缩放值来调整到来的伤害量。
    • Damage - 存放了要产生的伤害量。
    • EventInstigator - 引用负责施加伤害的控制器。
    • HitLocation - 存放了要产生伤害的位置。 * Momentum - 存放了赋予载具的动力。
    • DamageType - 存放了要施加的伤害的类型。
    • HitInfo - 存放了导致伤害的碰撞的信息。
    • DamageCauser - 引用导致伤害的Actor。
  • AdjustDriverDamage [Damage] [InstigatedBy] [HitLocation] [Momentum] [DamageType] - 调整应用给驾驶员的输入伤害量。当驾驶员受到伤害时从驾驶员的Pawn类调用该函数。
    • Damage - 存放了要产生的伤害的原始量。
    • InstigatedBy - 引用负责该伤害的控制器。
    • HitLocation - 存放了导致伤害的碰撞的位置。
    • Momentum - 存放了赋予玩家的动力。
    • DamageType - 存放了要施加的伤害的类型。
  • DriverDied [DamageType] - 当载具的驾驶员在载具内死亡时该项用于处理Driver(驾驶员)和Controller(控制器)的清除。
    • DamageType - 存放了导致玩家死亡的伤害的类型。
  • NotifyDriverTakeHit [InstigatedBy] [HitLocation] [Damage] [DamageType] [Momentum] -

Display(显示)

  • GetDefaultCameraMode [RequestedBy] - 返回当玩家在载具内时要使用的默认相机模式。
    • RequestedBy - 引用请求相机模式的控制器,一般是载具的控制器。

Entry/Exit(进入/退出)

  • CanEnterVehicle [P] - 返回给定的Pawn是否可以进入这个载具,比如,如果由空余座位、Pawn具有控制器、Pawn没有驾驶另一个载具等。
    • P - 引用尝试放入到载具中的Pawn。
  • AnyAvailableSeat - 返回载具中是否有可用座位。
  • TryToDrive [P] - 返回给定pawn是否成功地变为了载具的驾驶员。
    • P - 引用要变成驾驶员的Pawn。
  • DriverEnter [P] - 除非给定的Pawn是死的,否则将该Pawn放置为载具的驾驶员,并返回是否放置成功。这里驾驶员的控制器变为了载具的控制器。
    • P - 引用要进入到载具的Pawn。
  • AttachDriver [P] - 强制地将驾驶员附加到载具上,并且如果bDriverIsVisible 为false则隐藏驾驶员。在Pawn类中由驾驶员在StartDriving()中调用。仅当bAttachDriver为true时执行。在所有客户端上调用。
    • P - 引用要附加的驾驶员。
  • DetachDriver [P] - 从载具中分离当前的驾驶员的函数存根。在Pawn类中由驾驶员在StopDriving()中调用。在所有客户端上调用。
  • GetExitRotation [C] - 返回驾驶员在退出载具时放置驾驶员所使用的旋转度。
    • C - 引用驾驶员的控制器。
  • DriverLeave [bForceLeave] - 当驾驶员项退出载具是从PlayerController 中调用该项。使驾驶员脱离载具,将驾驶员放置到世界中,并返正在由控制器处理的驾驶员。
    • bForceLeave - 如果该项为true,则强制让驾驶员从载具中出来,即使没有找到纺织驾驶员的合适位置也要让其出来。将驾驶员放置到载具的GetTargetLocation()位置处。
  • DriverLeft - 清除Driver(驾驶员)并设置bDriving为false。
  • PlaceExitingDriver [ExitingDriver] - 当玩家退出载具时尝试找到合适的位置来放置玩家,并返回是否放置成功。
    • ExitingDriver - 可选项。引用退出载具的Actor。如果没有指定该项则使用Current Driver(当前的驾驶员)。
  • FindAutoExit [ExitingDriver] - 尝试在载具的前、后、右侧、左侧查找退出位置,并返回查找是否成功。
    • ExitingDriver - 引用退出载具的驾驶员。
  • TryExitPos [ExitingDriver] [ExitPos] [bMustFindGround] - 测试由FindAutoExit()生成的每个单独的退出位置并返回是否可以将驾驶员放到那个位置处。
    • ExitingDriver - 引用退出载具的驾驶员。
    • ExitPos - 存放要测试的退出位置。
    • bMustFindGround - 如果该项为true,查找地面的跟踪必须碰到某物才算测试成功。
  • GetEntryLocation - 返回载具的入口位置。默认是载具的位置。

Movement(运动)

  • SetInputs [InForward] [InSrafe] [InUp] - 提供一个接口,供手动地设置载具的Rise、Steering和Throttle的值。
    • InForward - 存放了载具的新的Throttle值。
    • InStrafe -存放了载具的新的Steering 值。
    • InUp - 存放了载具的新Rise 值。
  • SetDriving [b] - 设置载具的驾驶状态bDriving。
    • b - 存放载具的新的驾驶状态。
  • DrivingStatusChanged - 当驾驶动作改变时调用该项,允许您执行任何必要的动作。默认是将Rise、 Steering和Throttle的值清零。
  • ZeroMovementVariables - 将Rise、Steering和Throttle的值清零。

SVehicle

SVehicle 类向载具系统引入了基于物理的刚体运动。它包含了支持具有车轮的载具的所有参数,并使用一个通用的仿真对象来创建不同类型的载具: 带轮子、可以飞行、可以悬浮、有踏板等的载具。

+
SVehicle属性 (点击查看)

Damage(伤害)

  • RadialImpulseScaling - 存放了由HurtRadius()函数产生的伤害施加给载具的冲力的缩放量。

Display(显示)

  • BaseOffset - 相机位置的基本向量偏移量。
  • CamDist - 沿着相机的局部X-轴从基础位置开始偏移相机的距离。
  • DriverViewPitch - 存放了用于LookToSteer的驾驶员的倾斜度。
  • DriverViewYaw - 存放了用于LookToSteer的驾驶员的偏转量。

Movement(运动)

  • SimObj - 处理了大部分载具仿真的SVehicleSimBase 对象。关更多信息,请参照SVehicleSimBase部分。
  • Wheels - SVehicleWheel 对象的数组,存放了每个轮子的参数(对于带有轮子的载具来说)。
  • COMOffset - 载具的质心位置,以局部空间坐标系为准。
  • InertiaTensorMultiplier - 这项用于缩放载具的惯性张量。该项影响载具围绕每个周旋转的难易程度,它是质量的角度等价物。
  • MaxSpeed - 允许载具运行的最大速度。
  • MaxAngularVelocity - 允许载具获得的最大角速度。
  • bUseSuspensionAxis - 如果该项为TRUE,那么和地面基础的轮子将总是让它的法线沿着悬架轴指回。如果该项为FALSE,那么车轮接触将使用它碰到的地面的表面法线。
  • HeavySuspensionShiftPercentage - 当调用 SuspensionHeavyShift() 函数时允许Suspension (悬架)移动的最大距离。

SVehicle也支持‘直立约束’。这是个弹力约束,当载具在到处运行时它用于保持载具直立,这对于某些盘旋的悬浮载具是有用的。

  • bStayUpright - 使用这种保持直立的世界约束。
  • StayUprightRollResistAngle - 载具抵制滚动的角度。
  • StayUprightPitchResistAngle - 载具抵制倾斜的角度。
  • StayUprightStiffness - 超过限定角度的直立弹簧的硬度。
  • StayUprightDamping - 超过限定角度的直立弹簧的阻尼。

如果载具翻转了,SVehicle支持通过使用以下设置将载具再次翻转回来。

  • bCanFlip - 如果载具能被玩家直立起来则该项为True。
  • UprightLiftStrength - 缩放在直立载具过程中应用到载具的举力。
  • UprightTorqueStrength - 缩放在直立载具过程中所应用到载具上的力矩。
  • UprightTime - 应用直立 力/力矩 的时间,以秒为单位。

Outputs(输出)

在SVehicle类中有很多‘output(输出)’参数,您可以在代码的其他地方使用这些输出。

  • bVehicleOnGround - 如果 任何 SVehicleWheel目前正在接触地面(忽略和底盘的接触等)则该项为true。
  • TimeOffGround - bVehicleOnGround设置为false的时间量。
  • bVehicleOnWater - 如果 任何 SVehicleWheel目前正在接触水则该项为true。
  • bIsInverted - 如果载具几乎上下颠倒则设置该项为True。
  • bChassisTouchingGround - 如果载具的地盘和地面之间有任何接触则该项为True。
  • bWasChassisTouchingGroundLastTick - 如果载具的地盘和地面的最后更新有任何接触则该项为True。

Sounds(声效)

  • EngineSound - 引擎运行的环境声效的AudioCompnent(音频组件)。音调根据RPMs进行调制。
  • SquealSound - 轮子振鸣声的AudioComponent (音频组件)。音量基于振鸣声的量进行调制。
  • CollisionSound - 当载具和其他物体发生碰撞时播放的SoundCue(音效)。
  • EnterVehicleSound - 当驾驶员进入载具时播放的SoundCue(音效)。
  • ExitVehicleSound - 当驾驶员退出载具时播放的SoundCue(音效)。
  • CollisionIntervalSeconds - 再次播放CollisionSound(碰撞声效)之前碰撞之间需要间隔的时间量,以秒为单位。
  • SquealThreshold - 滑动速度降低于多少时不会听到轮子振鸣声。
  • SquealLatThreshold - 侧向滑动速度低于多少时不会听到轮子振鸣声。
  • LatAngleVolumeMult - 侧向滑动振鸣声相对于直向滑动振鸣声的音量级别乘数。
  • EngineStartOffsetSecs - 引擎启动声效和引擎空转声效之间延迟的时间,以秒为单位。
  • EngineStopOffsetSecs - 引擎关闭声效和引擎空转声效减慢之间的时间,以秒为单位。

+
SVehicle 属性 (点击查看)

Display(显示)

  • CalcCamera [fDeltaTime] [out_CamLoc] [out_CamRot] [out_FOV] - 继承于Pawn。计算这个载具中玩家的相机的视口。
    • fDeltaTime - 自从上一次更新过去的时间量。
    • out_CamLoc - 存放当前的相机位置并输出新的相机位置。
    • out_CamRot - 存放当前相机的旋转度并输出新的相机旋转度。
    • out_FOV - 存放当前的视角并输出新的视角。

Entry/Exit(进入/退出)

  • TurnOff - 继承于Pawn。关闭声效、动画、物理等。

Movement(运动)

  • AddForce [Force] - 使用指定向量应用一个常量力。
    • Force - 一个向量,代表要应用的力的方向和强度。
  • AddImpulse [Impulse] - 使用指定向量应用一个冲力。
    • Impulse - 一个向量,代表要应用的冲力的方向和强度。
  • AddTorque [Torque] - 使用指定向量应用力矩(旋转力的方向)。
    • Torque - 一个向量,代表要应用的力矩的方向和强度。
  • AddVelocity [NewVelocity] [DamageType] [HitInfo] - 继承于Pawn。给载具添加一个指定速度。这里覆盖Pawn的版本是必要的,因为这里使用了刚体物理。
  • IsSleeping - 返回控制载具的物理的物理仿真是否是休眠状态。
  • HasWheelsOnGround - 返回载具的任何轮子是否当前正在接触地面。
  • SuspensionHeavyShift [Delta] - 当载具的悬架发生了大量移动时调用该项。
    • Delta - 存放了移动量。
  • PostTeleport [OutTeleporter] - 当载具已经被电传到更新位置等时调用该项。
    • OutTeleporter - 引用目标位置的teleporter (电传器)。

Collision(碰撞)

  • SetWheelCollision [WheelNum] [bCollision] - 打开或关闭载具指定轮子的碰撞。
    • WheelNum - 要针对其修改碰撞设置的Wheels数组中轮子的索引。
    • bCollision - 如果该项为true,则在轮子上启用碰撞。否则,禁用碰撞。
  • RigidBodyCollision [HitComponent] [OtherComponent] [RigidCollisionData] [ContactIndex] - 当引擎的刚体和另一个对象碰撞时调用该项。播放 CollisionSound 声效。
    • HitComponent - 引用发生碰撞的载具的组件。
    • OtherComponent - 引用和载具组件发生碰撞的另一个对象的组件。
    • RigidCollisionData - 存放关于碰撞的数据。
    • ContactIndex - 存放碰撞接触点的索引。

网格物体和动画

  • PostInitAnimtree [SkelComp] - 当初始完动画树后由引擎调用该项。如果载具有轮子则获得并设置到载具的动画树中的SkelControlWheel控制器的引用。
    • SkelComp - 引用初始化了其动画树的SkeletalMeshComponent(骨架网格物体组件) 。

物理

  • InitVehicleRagdoll [RagdollMesh] [RagdollPhysAsset] [ActorMove] [bClearAnimtree] - 将使用单独刚体作为物理的载具转换为使用完全的、有关节的、类似于布娃娃的骨架作为物理的载具。
    • RagdollMesh - 包含完整骨架的新的骨架网格物体。
    • RagdollPhysAsset - 新骨架网格物体的物理资源。
    • ActorMove - 用于在变换过程中平移载具的向量。可以用于避免布娃娃网格物体插入到地面中。
    • bClearAnimtree -如果该项为true,则清除到载具的当前动画树的引用。

Sounds(声效)

  • StopVehicleSounds - 从TurnOff()中调用该函数。停止播放引擎声效和振鸣声的音频组件。
  • StartEngineSound - 开始播放引擎声效音频组件。
  • StartEngineSoundTimed - 启动一个计时器,在EngineStartOffsetSecs秒过后开始播放引擎声效音频组件。
  • StopEngineSound - 停止播放引擎声效音频组件。
  • StopEngineSoundTimed - 启动用一个计时器,在EngineStartOffsetSecs秒过后开始播放引擎声效音频组件。
  • VehiclePlayEnterSound -播放EnterVehicleSound声效并调用StartEngineSoundTimed()函数。
  • VehiclePlayExitSound - 播放ExitVehicleSound并调用StopEngineSoundTimed()。

UDKVehicleBase

UDKVehicleBase类继承于SVehicle,添加了对多座位载具的支持,并且可以携带游戏对象,比如vCTF游戏中的旗帜。

+
UDKVehicleBase 属性 (点击查看)

Entry/Exit(进入/退出)

  • bShouldEject - 如果该项为true,那么当驾驶员退出载具时驾驶员将会被弹出。如果需要弹出当前驾驶员则设置该项。

+
UDKVehicleBase 函数 (点击查看)

AI

  • NeedToTurn [Targ] - 继承于Pawn。返回AI是否需要转身来面向某个特定位置或者超某个特定位置射击。
    • Targ - 存放了要 朝向/向其开火 的位置。

Entry/Exit(进入/退出)

  • SwitchWeapons [NewGroup] - 由SwitchWeapon() 可执行函数中的UTPlayerController 调用来切换玩家的当前座位位置(默认使用键盘上的数字键操作)。
    • NewGroup - 存放了要切换到的 组/座位。作为索引是NewGroup - 1。
  • ServerChangeSeat [RequestedSeat] - 在服务器上调用。一个函数存根,用于在所有客户端上同步座位改变信息。子类需要重载这个类。
    • RequestedSeat - 存放了要切换到的座位索引。
  • AdjacentSeat [Direction] [C] - 在客户端上调用。要求换到载具中相邻的座位上。
    • Direction - 存放了要移动的方向。-1 指前一个座位。1 指下一个座位。
    • C - 引用改变座位的玩家的控制器。
  • ServerAdjacentSeat [Direction] [C] - 在服务器上调用。一个函数存根,用于将玩家移动到邻接座位上。子类需要重载这个类。
    • Direction - 存放了要移动的方向。-1 指前一个座位。1 指下一个座位。
    • C - 引用改变座位的玩家的控制器。
  • EjectDriver - 以高速将玩家从载具中弹出。由DriverLeft()函数调用。

GamePlay(游戏性)

  • HoldGameObject [GameObj] - 由引擎调用的函数存根,用于将GameObject附加到载具上。子类需要重载这个类。
    • GameObj - 引用要附加到载具上的GameObject 。

UDKVehicle

UDKVehicle类添加了对载具武器的基本支持,同时开始引入了灵活的系统,以便播放不同的动画、粒子特效及声效。它也可以使用顶点变形目标来显示针对特定位置的损坏。

关于所添加的某些子系统的更多信息,请参照以下部分:

+
UDKVehicle 属性 (点击查看)

AI

  • ObjectiveGetOutDist - 当AI控制载具时,有一个需要除非的目标但是不能通过载具本身进行触发,那么AI将尝试从载具中出来这么远的距离。
  • bUseAlternatePaths - 如果该项为true,那么AI将考虑使用它的队伍的可替换路径到达目标。如果载具需要绕路的地方将会非常麻烦(很慢),否则如果载具足够强大而不必绕路,那么应该设置该项为false。

Damage(伤害)

  • BurnOutMaterialInstances - 当载具死亡或者变为燃烧的金属废壳时,将会使用这个材质实例和相关数据来替换网格物体的正常材质。
  • FireDamageThreshold - Health / MaxHealth的比率, 当达到这个值将会导致载具着火并开始受到火力的持续伤害。
  • FireDamagePerSec - 当着火后每秒钟所产生的伤害。
  • AccruedFireDamage - 到目前为止所造成的火力伤害。
  • UpsideDownDamagePerSec - 当载具上下颠倒及没人占领时每秒所受到的伤害量。
  • OccupiedUpsideDownDamagePerSec - 当载具上下颠倒并有人占领时每秒所受到的伤害量。
  • WaterDamage - 当载具被淹没时每秒所受到的伤害量。
  • bTakeWaterDamageWhileDriving - 如果该项为true,那么当驾驶载具时将会受到水力伤害。
  • AccumulatedWaterDamage - 自从上一次调用 TakeWaterDamage() 来应用伤害后所产生的水力伤害量。
  • DestroyOnPenetrationThreshold - 在销毁载具之前所允许的最大穿透量。
  • DestroyOnPenetrationDuration - 在销毁载具之前允许超过DestroyOnPenetrationThreshold的最大穿透时间量。
  • KillerController -引用负责销毁载具的控制器。
  • MinRunOverSpeed - 载具撞上另一个玩家并产生伤害的所需的最小运行速度。

Display(显示)

  • TeamBeaconMaxDist - 当超出该最大距离将显示团队灯塔。
  • bShowLocked - 如果该项为true,那么将会在HUD上针对这个载具描画 "No Entry(没有入口)" 标识。
  • bTeamLocked - 如果该项为true,那么仅在同一团队中的玩家可以进入载具。
  • ShowLockedMaxDist - 从载具距离相机最大距离为多远时显示锁定标识符。

* Effects(特效)

  • VehicleEffects - VehicleEffect数据结构体数组,包含了载具使用的各种粒子特效的信息。
  • WheelParticleEffects - 针对材质的粒子特效数组,应用于所有设置bUseMaterialSpecificEffects 为true的附加UDKVehicleWheels上。
  • MaxWheelEffectDistSq - 当车轮距离载具最大距离为多远时仍然播放声效和粒子特效。
  • GroundEffectIndices - VehicleEffects数组的索引的数组,指出了用作为地面特效的特效,或者指出了当载具在距离某个特定距离内时所显示的特效。
  • MaxGroundEffectDist - 载具距离地面最大距离为多远时仍然显示地面特效。
  • GroundEffectDistParamName - 控制特效强度的地面特效粒子系统中的参数的名称。该项将会被设置为0.0到1.0之间的值,该值是CurrentGroundDist / MaxGroundEffectDist的结果。
  • WaterGroundEffect - 当载具在水上时水面特效所使用的粒子系统。
  • WaterEffectType - 代表水的材质类型的名称。如果当前的地面接触材质类型和该名称相匹配,那么则切换到水面特效。
  • ContrailEffectIndices - 到VehicleEffects数组的索引的数组,指出了要飞行云的特效。
  • ContrailColorParamName - 在飞行云粒子系统中用于设置颜色的参数的名称。传入到这个参数的值是依赖于载具速度的。
  • HoverboardDust - 在悬滑板下播放的特效的ParticleSystemComponent (粒子系统组件)。

Entry/Exit(进入/退出)

  • bEjectKilledBodies - 如果该项为true,那么当载具的驾驶员死亡时它将会被弹出或者被作为布娃娃。否则,将立即销毁它。
  • bEjectPassengersWhenFlipped - 如果该项为true,那么如果载具翻了将会弹出包括驾驶员在内的所有乘客。
  • Seats - VehicleSeats数组,包含了用于为载具的玩家构建各种座位 和/或 提供各种武器的信息。请参照载具座位和武器部分获得更多信息。
  • bAllowedExit - 如果该项为true,那么则允许驾驶员离开载具。

Gameplay(游戏性)

  • Team - 这个载具当前所处的团队。

网格物体和动画

  • VehicleAnims - VehicleAnim数组,包含了关于当发生某些事件时在载具上播放的各种动画的信息。请参照载具动画部分获得更多信息。
  • DrivingAnim - 当驾驶员可见及正在驾驶时要在Driver(驾驶员)上播放的动画的名称。
  • DamageParamScaleLevels - 将伤害材质参数名称映射到缩放因数的数组。这个参数值通过获得当前伤害顶点变形目标的生命值比率(CurrentHealth / DefaultHealth)来设置。这允许缩放0.0到1.0的值,以便使得它们适合材质中参数的应用。
  • DamageSkelControls - 载具的动画树中的伤害骨架控制器数组。
  • DamageMorphTargets - 用于控制伤害系统的伤害顶点变性目标结构体的数组。
  • DamageMaterialInstance - 到从载具的材质中动态地创建的材质实例的引用,该材质实例应用到载具上,允许访问伤害参数。

Movement(运动)

  • bNoZDampingInAir - 如果该项为true,那么当载具在空中时载具速度的Z-分量将不会应用阻尼。
  • bNoZDamping - 如果该项为true,那么当载具在地面上时载具速度的Z-分量将不会应用阻尼。
  • bIsDisabled - 如果该项为true,那么将会禁用载具。
  • bJostleWhileDriving - 如果该项为true,那么将会给载具应用个随机冲力来模拟真实的悬停。通常用于空中载具。
  • bFloatWhenDriven - 如果该项为true,那么载具将使用重力 Z-值 -1.0来模拟浮动。用于飞行的载具。
  • CustomGravityScaling - 针对载具的重力Z-值的乘数,允许自定义单独载具上的重力。
  • bDisableRepulsorsAtMaxFallSpeed - 如果该项为 true,当载具的负Z速度大于Driver(驾驶员)的MaxFallSpeed 值,将禁用载具的repulsor(反重力器)。

Sounds(声效)

  • TireAudioComp - 用于播放轮胎声效的AudioComponent。
  • TireSoundList - MaterialSoundEffects(材质声效)数组,当轮胎使用不同类型的材质时播放不同的声效。
  • CurrentTireMaterial - 存放了轮胎当前的材质类型。
  • ScrapeSound - 当载具的躯体刮擦到某个对象时使用这个AudioComponent来播放刮擦声。
  • VehicleSounds - VehicleSound数据结构体数组,包含了针对各种事件要播放的SoundCue。
  • LargeChunkImpactSound - 当载具受到力度大于20000的力影响时要播放的声效。
  • MediumChunkImpactSound - 当载具受到力度大于4000的力影响时要播放的声效。
  • SmallChunkImpactSound - 当载具受到力度大于1000的力影响时要播放的声效。

Weapons(武器)

  • bHomingTarget - 如果该项为true,那么这载具可以锁定自导式武器。
  • WeaponRotation - 载具的主要武器的当前旋转度。

+
UDKVehicle 函数 (点击查看)

AI

  • JumpOutCheck - 当载具向它的目的地下降时调用该函数存根,允许机器人有机会跳出载具。子类需要重载这个类。

Collision(碰撞)

  • OnTouchForcedDirVolume [Vol] - 通知载具它已经碰到一个ForcedDirVolume。在这个函数中返回false将会导致载具忽略该体积。
    • Vol - 引用所接触的ForcedDirvolume 。

Damage(伤害)

  • GetRanOverDamageType - 返回当使用这个载具撞倒某人时所使用的伤害类型。
  • LockOnWarning [IncomingMissile] - 警告载具的司机有个自导式武器正在来临。
    • IncomingMissile - 引用锁定到载具上的射弹。
  • ReceivedHealthChange - 当客户端接收到载具的生命值的改变时由引擎调用该函数存根。子类需要重载这个类。
  • CheckAutoDestruct [InstigatorTeam] [CheckRadius] - 返回载具是否应该自动销毁,也就是,如果它足够低接近敌人或目标的时候。
    • InstigatorTeam - 启动自动销毁的玩家的TeamInfo(团队信息)。
    • CheckRadius - 载具距离某物多近时才进行自动销毁。
  • SelfDestruct [ImpactedActor] - 当载具应该自动销毁时引擎所调用的函数存根。子类需要重载这个类。
    • ImpactedActor - 引用由自动销毁导致受到完全伤害的Actor。
  • RBPenetrationDestroy - 当发生大量穿透时销毁载具。
  • TakeWaterDamage - 当载具受到水力伤害时在每次更新中引擎会调用该函数存根。子类需要重载这个类。
  • TakeFireDamage - 当载具受到火力伤害时引擎会调用该函数存根。子类需要重载这个类。

Display(显示)

  • NativePostRenderFor [PC] [Canvas] [CameraPosition] [CameraDir] - 允许载具描画HUD覆盖层。一般描画锁定图标。
    • PC - 引用本地玩家控制器。
    • Canvas - 引用当前画布以进行描画。
    • CameraPosition - 存放了玩家相机的当前位置。
    • CameraDir - 存放了玩家相机正面向的当前方向。
  • SetHUDLocation [NewHUDLocation] - 设置在HUD上描画载具图标的位置。
    • NewHUDLocation - 存放描画图标的位置(向量的X 和 Y分量)。

* Effects(特效)

  • PlayTakeHitEffects - 当载具受到撞击时由引擎调用该函数存根播放碰撞特效。子类需要重载这个类。
  • UpdateHoverboardDustEffect [DustHeight] - 引擎调用该函数存根来更新悬滑板灰尘特效。子类需要重载这个类。
    • DustHeight - 存放了悬滑板在地面上方的高度。

Gameplay(游戏性)

  • GetTeamNum - 返回载具的团队编号。
  • InUseableRange [PC] [Dist] - 返回载具是否在将要使用的范围内。
    • PC - 引用尝试使用这个载具的玩家控制器。
    • Dist - 存放了玩家距离载具的距离。

网格物体和动画

  • InitDamageSkel - 使用载具动画树种的伤害骨架控制器来填充 DamageSkelControls 数组。
  • UpdateDamageMaterial - 当伤害系统更新生命值时更新应用到载具上的任何材质。
  • ApplyMorphDamage [HitLocation] [Damage] [Momentum] - 应用碰撞伤害给伤害系统来修改顶点变形目标。
    • HitLocation - 存放了碰撞发生的位置。
    • Damage - 存放了所产生的伤害量。
    • Momentum - 存放了伤害所施加的动力。
  • MorphTargetDestroyed [MorphNodeIndex] - 当一个伤害节点被销毁时由引擎调用这个函数存根(由于ApplyMorphDamage的结果)。
    • MorphNodeIndex - 存放了被销毁的节点的DamageMorphTargets数组中的索引。

物理

  • PostInitRigidBody [PrimComp] - 当刚体仿真初始化完成时由引擎调用该函数存根,允许载具执行任何必要的物理初始化。子类需要重载这个类。
    • PrimComp - 引用为其初始化刚体物理的图元组件。

Weapons(武器)

  • SeatWeaponRotation [SeatIndex] [NewRot] [bReadValue] - 获得或设置特定座位的武器旋转度。
    • SeatIndex - 存放座位的索引。
    • NewRot - 可选项。为座位的武器旋转度设置的新的旋转度值。
    • bReadValue - 如果该项为true,则返回座位的武器旋转度。否则,设置座位的武器旋转度为NewRot。
  • SeatFlashLocation [SeatIndex] [NewLoc] [bReadValue] - 获得或设置特定座位的射击闪光位置。
    • SeatIndex - 存放座位的索引。
    • NewLoc - 可选项。为座位的射击闪光位置设置的新的位置值。
    • bReadValue - 如果该项为true,则返回座位的射击闪光位置。否则,设置座位的射击闪光位置为NewLoc。
  • SeatFlashCount [SeatIndex] [NewCount] [bReadValue] - 获得或设置指定座位的射击闪光数量。
    • SeatIndex - 存放座位的索引。
    • NewCount - 可选项。为座位的闪光位置设置的新的射击闪光数量。
    • bReadValue - 如果该项为true,则返回座位的射击闪光数量。否则,设置座位的射击闪光数量为NewCount。
  • SeatFiringMode [SeatIndex] [NewFireMode] [bReadValue] - 获得或设置置顶座位的开火模式。
    • SeatIndex - 存放座位的索引。
    • NewFireMode - 可选项。为座位的开火模式设置的新开火模式。
    • bReadValue - 如果该项为true,则返回座位的开火模式。否则,设置座位的开火模式为NewFireMode。
  • ForceWeaponRotation [SeatIndex] [NewRotation] - 强制设置指定座位的武器旋转度为新的旋转度。通常当产生载具时由载具工厂使用。
    • SeatIndex - 存放座位的索引。
    • NewRotation - 设置座位的新的武器旋转度的值。
  • GetSeatPivotPoint [SeatIndex] -返回特定座位的支点。
    • SeatIndex - 存放座位的索引。
  • GetBarrelIndex [SeatIndex] - 返回特定座位当前正在使用的枪管的索引,或者已经全部射完。
    • SeatIndex - 存放座位的索引。

UTVehicle

UTVehicle类实现了载具的大部分游戏性功能并真正实现了载具事件系统的大部分功能以便播放动画、特效及声效。这个类也包含了大量的针对游戏机平台功能以便控制载具。

+
UTVehicle 属性 (点击查看)

AI

  • bKeyVehicle - 如果该项为true,那么认为这个载具对AI来说更加重要。同时,在迷你地图上显示了载具。
  • AIPurpose - 指出了AI应该针对哪类任务使用这个载具。
    • AIP_Offense - 该载具应该仅用于攻击或进攻行为。
    • AIP_Defense - 该载具应该仅用于防御行为。
    • AIP_Any - 该载具可以用于任何目的。
  • bShouldLeaveForCombat - 如果该项为true,那么当AI遇到敌人时它们将离开这个载具。
  • MaxDesireability - 决定了AI对这个载具的需要程度。
  • HornAIRadius - 距离载具的距离,当在这个距离之内时AI将会通过尝试进入载具中的任何可用座位对喇叭做出反应。
  • Reservation - 引用将要进入载具的AI;防止多个AI敌人进入到同一个载具内。

Camera(相机)

  • bShouldAutoCenterViewPitch - 如果该项为true,那么当玩家在载具内时载具将会在玩家视图内自动居中。
  • SeatCameraScale - 针对座位的相机偏移量的乘数。
  • bRotateCameraUnderVehicle - 如果该项为true,那么将允许相机在载具下旋转,从而潜在地模糊玩家的视图。
  • bNoZSmoothing - 如果该项为true,那么延迟的相机将会平滑它的Z-位置,从而产生颠簸的效果。
  • bLimitCameraZLookingUp -如果该项为true,那么当向上查看时相机将总是位于载具的上方,从而避免当飞行载具再向上运行时出现剪辑现象。
  • bNoFollowJumpZ - 如果该项为true,那么当自居”跳跃“时将不会改变相机的Z-位置,从而产生更加具有动态效果的跳动。
  • CameraSmoothingFactor - 平滑延迟的相机所使用的平滑比例。较高的值将会导致较短的平滑次数。
  • DefaultFOV - 载具中乘客使用的默认视角。
  • CameraLag - 延迟相机的时间量。
  • LookForwardDist - 当向下查看载具的前面地方时将相机向前移动的距离。
  • MinCameraDistSq - 除非bCameraNeverHidesVehicle为true,否则该项指出了相机距离载具的距离的开平方值为多少时开始隐藏载具。
  • bCameraNeverHidesVehicle - 如果该项为true,那么无论相机距离载具多么近都永远不会隐藏载具。
  • bStopDeathCamera - 如果该项为true,那么则阻止深度相机使用死亡对象上保存的旧的相机位置。

Damage(伤害)

  • bValidLinkTarget - 如果该项为true,那么该载具可以通过Link Gun进行治愈。
  • LinkHealthMult - 如果该项大于0,那么Link Gun对该载具所施加的治愈量是这个值乘以Link Gun伤害量的结果。
  • LinkedToCount - 当前连接到该载具的Link Gun的数量。
  • RanOverDamageType - 该载具撞到的玩家导致的伤害的伤害类型。
  • VehicleDrowningDamageType - 当载具沉没到水中受到的伤害所使用的伤害类型。
  • ClientHealth - 伤害系统中顶点变形目标的客户端侧的伤害量。当接收到该值时,可以使用它来调整所复制的Health值。
  • ExplosionDamageType - 由于载具爆炸所导致的伤害所使用的伤害类型。
  • ExplosionDamage - 载具爆炸所导致的伤害量。
  • ExplosionRadius - 载具爆炸导致的伤害所处的半径。
  • ExplosionMomentum - 载具爆炸所施加的冲力量。
  • ExplosionInAirAngVel - 当载具在空中爆炸时给载具应用的旋转量。
  • CollisionDamageMult -当载具和其他刚体发生碰撞时所导致的伤害的乘数。
  • bReduceFallingCollisionDamage - 如果该项为true,那么当载具和它下面的刚体发生碰撞时将会降低碰撞伤害。

Display(显示)

  • bHasWeaponBar - 如果该项为true,那么该载具的武器条将会描画在HUD上。
  • bDrawHealthOnHUD - 如果该项为true,那么除了将玩家的生命值显示到HUD上外载具的生命值也将会显示到HUD上。
  • bDriverCastsShadow - 如果该项为true,那么玩家的网格物体应该总是投射阴影。
  • bDropDetailWhenDriving - 如果该项为true,那么除非游戏当前正处于超高级细节模式中,否则当本地玩家驾驶该载具时将会导致载具的细节质量下降。
  • LightEnvironment - 该载具为动态阴影使用的DynamicLightEnvironment(动态光照环境)。
  • TeamBeaconPlayerInfoMaxDist - 玩家信息中将会显示到达相机的最大距离。
  • HUDExtent - 如果决定瞄准十字准线是否在载具上面的缩放因数。
  • MapSize - 在迷你地图上描画该载具的图标的比例。
  • IconCoords - 该载具的图标的图标贴图中的坐标。
  • FlipToolTipIconCoords - 载具的翻转工具提示信息图标的图标贴图中的坐标。
  • EnterToolTipIconCoords - 载具的进入工具提示信息图标的图标贴图中的坐标。
  • DropFlagIconCoords - 这个载具的下降标志图标的图标贴图中的坐标。
  • DropOrbIconCoords - 该载具的下降球图标的图标贴图中的坐标。
  • bPostRenderTraceSucceeded - 如果该项为true,那么说明描画后期处理HUD图标的最后的线性检测成功。
  • TeamBeaconOffset - 显示信息所使用的距离载具位置的偏移量,比如‘锁定’图标。
  • PassengerTeamBeaconOffset - 显示乘客图标所使用的距离载具位置的偏移量。
  • HUDIcons - 包含了该载具要在HUD上描画的图标的贴图。

* Effects(特效)

  • ExplosionLightClass - 爆炸效果所使用的光源类。
  • MaxExplosionLightDistance - 创建爆炸光时爆炸可以距离相机的最大距离。
  • bInitializedVehicleEffects - 如果该项为true,那么则已经附加了载具特效。
  • DeathExplosion - 引用爆炸毁灭时所产生的Emitter(发射器),以便当发生燃烧殆尽时可以禁用它。
  • TimeTilSecondaryVehicleExplosion - 初始载具爆炸之后等待多长时间才播放第二次爆炸(假设由于某些其他因素还没有播放该爆炸)。
  • DamageSmokeThreshold - 载具开始播放烟雾特效的生命值比(Health / HealthMax)。
  • MaxImpactEffectDistance - 当距离相机距离最大为多少时碰撞冲力产生特效。
  • MaxFireEffectDistance - 当距离相机的最大距离为多少时将显示载具的火力特效。
  • ExplosionTemplate - 当载具爆炸时要显示的ParticleSystem(粒子系统)。
  • BigExplosionTemplate - 根据本地玩家距离该载具爆炸的距离来播放爆炸特效时所使用的ParticleSystems和最小距离数组。
  • SecondaryExplosion - 针对载具的第二次爆炸播放的ParticleSystem(粒子系统)。 在初始爆炸之后播放或者当初始爆炸之后载具下降并和地面产生碰撞时播放。
  • BigExplosionSocket - 附加到爆炸的插槽的名称。如果该项为‘None’,那么将不会附加大爆炸。
  • BurnOutTime - 将载具烧尽所需的时间量。
  • BurnTimeParameterName - 控制燃烧特效所使用的材质参数的名称。
  • BurnOutMaterial - 为燃烧殆尽网格物体所使用的针对特定团队的材质的数组。
  • DeadVehicleLifeSpan - 载具燃烧殆尽之前应该过去的时间量。
  • DelayedBurnoutCount - 已经显示的燃烧殆尽效果的次数。
  • bHasTurretExplosion - 如果该项为true,那么当载具死亡时将会播放炮塔爆炸序列。
  • TurretScaleControlname - 用于将炮塔缩放为0所使用的炮塔控制器的名称。
  • TurretSocketname - 当炮塔爆炸时产生爆炸特效的插槽的名称。
  • DistanceTurretExplosionTemplate - 基于玩家距离爆炸的本地距离播放不同的炮塔爆炸效果所使用的ParticleSystems(粒子系统)和最小距离数组。
  • SpawnInTemplate - 当载具在世界中生成时要播放的针对特定团队的粒子系统数组。
  • SpawnMaterialLists - 当载具在世界中生成时他所使用的针对特定团队的材质的数组。
  • SpawnMaterialParameterName - 产生材质中所使用的材质参数的名称。
  • SpawnMaterialParameterCurve - 用于控制生成材质参数的值的曲线信息。
  • SpawnInTime - 完成产生特效所需的时间量。
  • bPlayingSpawnEffect - 如果该项为true,则正在生成特效。
  • DisabledTemplate - 当载具变为禁用状态时所播放的粒子系统。
  • DisabledEffectComponent - 播放禁用的特效所使用的ParticleSystemComponent (粒子系统组件)。

Entry/Exit(进入/退出)

  • bEnteringUnlocks - 如果该项为true,那么当玩家进入载具时载具将会解锁。
  • bHasCustomEntryRadius - 如果该项为true,那么载具应该使用专用的入口半径规则(定义在InCustomEntryRadius()函数中)来决定玩家是否可以进入。
  • bMustBeUpright - 如果该项为true,那么为了能进入载具它必须是竖立的。
  • bHasBeenDriven - 如果该项为true,那么说明这个载具自从生成后已经驾驶了一段时间。
  • bFindGroundExit - 如果该项为true,那么离开载具的乘客的退出位置必须在固体地面附近。
  • bRequestedEntryWithFlag - 如果该项为true,那么玩家尝试握着旗帜进入到不允许旗帜的载具中。
  • PassengerPRI - 引用乘客炮塔中玩家的 PlayerReplicationInfo (比如,座位 1).

Gameplay(游戏性)

  • bDriverHoldsFlag - 如果该项为true,那么载具的驾驶员将具有旗帜,如果正携带旗帜则将旗帜附加到载具上。
  • bCanCarryFlag - 如果该项为true,则允许玩家携带旗帜进入到该载具。
  • NoPassengerObjective - 引用一个目标,当该目标是AI的当前目标时,它们将不会尝试进入该载具。
  • bOverrideAVRiLLocks - 如果该项为true,该载具可以覆盖AVRiL火箭的瞄准目标锁定。
  • RespawnTime - 当该载具被销毁后重新生成该载具所需要的时间量。
  • InitialSpawnDelay - 在第一次生成该载具之前游戏必须已经开始的时间量。
  • NextVehicle - 引用载具链表中的下一个载具。链表中的第一个载具由UTgame类的VehicleList属性引用。
  • ParentFactory - 引用生成该载具的UTVehicleFactory 。
  • VehiclePositionString - 本地化。用于显示 [VehicleName]信息中存放的文本的字符串。在本地化文件中设置。
  • VehicleNameString - 本地化。. 存放载具可读名称的字符串。在本地化文件中设置。
  • TeamMaterials - 载具所使用的针对特定团队的材质的数组。
  • SpawnRadius - 决定了载具产生点周围的安全局域的半径。这个区域必须在Pans的外面,以便生成载具。
  • FlagOffset - 当将旗帜附加到载具上时放置旗帜时所使用的距离旗帜骨骼的偏移量。
  • FlagRotation - 当将旗帜附加到载具上时旋转骨骼所使用的距离旗帜骨骼的偏移量。
  • FlagBone - 载具骨架上用于附加旗帜的骨骼的名称。

网格物体和动画

  • VehiclePieceClass - 用于生成爆炸的载具碎片的类。
  • DeathExplosionShake - 在该载具爆炸附近的玩家相机上播放的CameraAnim(相机动画)。
  • InnerExplosionShakeRadius - 相机抖动可以具有完全强度时相机距离爆炸的最大距离。强度从这个距离开始到OuterExplosionShakeRadius之间进行衰减。
  • OuterExplosionShakeRadius - 爆炸相机抖动强度达到0时的距离。
  • TurretOffset - 生成破毁的炮塔时距离炮塔插槽的偏移量。
  • DestroyedTurret - 引用破毁的炮塔以播放死亡特效。
  • DestroyedTurretTemplate - 当炮塔销毁时要产生的静态网格物体。
  • TurretExplosiveForce - 应用给炮塔爆炸的力的强度。
  • ReferenceMovementMesh - 载具座位的运动特效(比如,Cicada中移动的云)所使用的静态网格物体。

Movement(运动)

  • bStickDeflectionThrottle - 如果该项为true,那么当使用游戏机控制器时则使用摇杆偏斜量(摇杆移动量)来决定油门量。
  • DeflectionThrottleReverseThresh - 当使用摇杆倾斜来控制油门时,这个值是在载具进入倒退状态时摇杆在Y-轴上必须拉回的量。
  • bLookSteerOnNormalControls - 如果该项为true,那么当使用‘Normal(正常)’载具控制设置时将会使用'look to steer(面向驾驶)'控制。
  • bLookSteerOnSimpleControls - 如果该项为true,那么当使用‘Simple(简单)’载具控制设置时将会使用'look to steer(面向驾驶)'控制。
  • bUsingLookSteer -如果该项为true,则载具当前正在使用'look to steer(面向驾驶)' 控制。
  • LeftStickDeadZone - 为了使得载具转向,左侧摇杆必须移动的量;从而使得静止驾驶更加容易。
  • LookSteerSensitivity - 决定了当使用”look to steer(面向驾驶)“时‘looking(查看)’、‘facing(面向)’及驾驶角度之间的关系。
  • LookSteerDamping - 当使用‘look to steer’控制时应用到载具的加速度的阻尼以减少它对驾驶的影响。
  • LookSteerDeadZone - 当 'look to steer'控制时为了使得载具转向摇杆必须移动的量。
  • ConsoleSteerScale - 该乘数可以增加控制器中心区域的驾驶敏感度。

物理

  • DrivingPhysicalMaterial - 当驾驶载具时载具所使用的物理材质。
  • DefaultPhysicalMaterial - 当没有驾驶载具时载具所使用的物理材质。

Sounds(声效)

  • VehicleLockedSound - 当载具锁着而玩家尝试进入该载具时要播放的SoundCue (音效)。
  • LinkedToAudio - 当玩家使用Link Gun连接到该载具时播放音效所使用的AudioComponent (音频组件)。
  • LinkedToCue - 当玩家使用Link Gun连接到该载具时要播放SoundCue (音效)。
  • LinkedToEndSound - 当道这个载具的连接断开时要播放的SoundCue(音效)。
  • HornSounds - 用作为该载具的喇叭的SoundCue数组。
  • LockedOnSound - 当某些东西(比如自导式射弹)锁定到该载具上时要播放的SoundCue。
  • RanOverSound - 当载具撞到某人时要播放的SoundCue(声效)。
  • StolenAnnouncementIndex - UTVehicle类中的MessageAnnouncements(消息通知)数组中的索引,当有”抢劫“发生时针对该载具播放该索引所指的通知。
  • StolenSound - 当有人盗取载具时播放的SoundCue(声效)。
  • ExplosionSound - 当载具爆炸时播放的SoundCue(声效)。
  • SpawnInSound - 当在世界中生成载具时所播放的SoundCue (声效)。
  • SpawnOutSound - 当载具燃烧时所播放的SoundCue (声效)。
  • BoostPadSound - 当载具通过加速垫上时所播放的SoundCue (声效)。

+
UTVehicle函数 (点击查看)

AI

  • SetKeyVehicle - 设置该载具为重要载具。
  • HasOccupiedTurret - 返回是否所有乘客座位都被占用。
  • TooCloseToAttack [Other] - 返回对于AI来说给定的Actor是否太近以至于不能攻击。
    • Other - 引用要检测的Actor。
  • BotDesireability [S] [TeamIndex] [Objective] - 返回对AI来说该载具的渴求程度或有用程度。
    • S - 引用渴求该载具的AI。
    • TeamIndex - AI所在的团队。
    • Objective - 引用AI的目标。
  • SetReservation [C] - 设置给定AI预留载具。
    • C - 引用预留载具的AI。
  • ShouldLeaveForCombat [B] - 返回当AI遇到敌人时AI是否应该离开载具。
    • [B] - 引用AI控制器。

Camera(相机)

  • ProcessViewRotation [DeltaTime] [out_ViewRotation] [out_DeltaRot] - 给载具提供一个机会来为相机修改这个架构的视图旋转改变。
    • DeltaTime - 自从上一次更新所过去的时间量。
    • out_ViewRotation - 存放了当前的视图旋转度,并输出更新的视图旋转度。
    • out_DeltaRot - 存放了旋转度中的当前改变并在旋转度中输出更新的改变。
  • GetCameraFocus [SeatIndex] - 返回给定座位的相机聚焦位置,不考虑任何相机延迟。
    • SeatIndex - 获取其相机聚焦位置的座位的索引。
  • GetCameraStart [SeatIndex] - 返回考虑了相机延迟的给定座位的相机聚焦位置。
    • SeatIndex - 获取其延迟相机聚焦位置的座位索引。
  • VehicleCalcCamera [DeltaTime] [SeatIndex] [out_CamLoc] [out_CamRot] [CamStart] [bPivotOnly] - 计算给定座位的相机位置和旋转度。从 CalcCamera() 中调用。
    • DeltaTime - 自从上一次更新过去的时间。
    • SeatIndex - 为其计算相机位置及旋转度的座位的索引。
    • out_CamLoc - 输出参数。输出相机位置。
    • out_CamRot - 输出参数。输出相机旋转度。
    • CamStart -输出参数。输出添加了延迟的相机聚焦位置。
    • bPivotOnly - 可选项。

Collision(碰撞)

  • StopsProjectile [P] - 返回该载具是否应该可以“接触”给定射弹。
    • P - 引用要检测的射弹。
  • DisableCollision -

Damage(伤害)

  • GetRanOverDamage - 返回当载具撞到玩家时为其施加伤害所使用的伤害类型。
  • RanInto [Other] - 给可以从道路上移开的挡路Actors应用的伤害。
    • Other - 引用挡路的Actor。
  • BlowupVehicle - 当载具死亡导致载具爆炸时调用该项。
  • GetDisplayedHealth - 返回载具的生命值以便在HUD上描画。
  • HealDamage [Amount] [Healer] [DamageType] - 继承于Pawn。治愈载具,更新正在运行的伤害系统。
    • Amount - 要补充的生命值量。
    • Healer - 引用负责治愈载具的控制器。
    • DamageType - 治愈所使用的伤害类型。
  • GetHealth [SeatIndex] - 返回载具的当前生命值。
  • GetCollisionDamageModifier [ContactInfos] - 返回给定碰撞使用的伤害乘数。考虑是否应该降低下降伤害。
    • ContactInfos - 关于碰撞的信息。仅使用数组中的第一项。
  • InitializeMorphs - 设置到MorphNodes(顶点变形节点)的引用并在伤害系统中连接DamageMorphTargets(伤害顶点变形目标)的索引。
  • ReceivedHealthChange - 当载具的生命值发生改变时在客户端调用该项。更新伤害系统,给顶点变形目标应用伤害或者治愈顶点变形目标。
  • ApplyMorphHeal [Amount] - 给伤害系统顶点变形目标应用治愈。由于伤害建模是在客户端侧完成的,治愈处理是在服务器端完成的,所以我们知道哪个特定的节点是用于治愈的,所以治愈处理最终会应用到所有顶点变形目标上。
    • Amount - 载具接收的治愈量。
  • ApplyRandomMorphDamage [Amount] - 当由于远程客户端上的载具生命值发生改变而导致不能确定伤害的特定位置时将伤害随机地应用给顶点变形目标。
    • Amount - 给载具应用的伤害量。

Display(显示)

  • UpdateShadowSettings [bWantShadow] - 启用或禁用载具的阴影投射功能。
    • bWantShadow - 如果该项为true,则启用阴影。否则,禁用它们。
  • DisplayWeaponBar [canvas] [HUD] - 由HUD调用的函数存根,它允许载具描画它自己的武器条。如果他们想在屏幕上显示武器条,比如他们的武器需要付费,那么需要在子类中重载该项。
    • Canvas - 引用当前画布以进行描画。
    • HUD - 引用HUD。
  • DrawKillIcon [Canvas] [ScreenX] [ScreenY] [HUDScaleX] [HUDScaleY] - 当执行一次杀死动作时在HUD上描画该载具的图标。
    • Canvas - 引用当前画布以进行描画。
    • ScreenX - 存放用于描画图标的水平位置。
    • ScreenY - 存放用于描画图标的垂直位置。
    • HUDScaleX - 存放HUD的水平比例大小 (相对于1024)。
    • HUDScaleY - 存放HUD的垂直比例大小 (相对于768)。
  • RenderMapIcon [MP] [Canvas] [PlayerOwner] [FinalColor] - 在迷你地图上描画载具。从UTMapInfo中调用。
    • MP - 引用用于描画地图的地图信息。
    • Canvas - 引用当前画布以进行描画。
    • PlayerOwner - 引用本地玩家控制器。
    • FinalColor - 存放描画载具地图图标的颜色。
  • PostRenderFor [PC] [Canvas] [CameraPosition] [CameraDir] - 继承于Actor。NativePostRenderFor 的脚本版本,允许pawns给它们本身渲染HUD覆盖层。
    • PC - 引用玩家的控制器。
    • Canvas - 引用当前画布以进行描画。
    • CameraPosition - 当前的相机位置。
    • CameraDir - 相机的当前朝向。
  • PostRenderPassengerBeacons [PC] [Canvas] [TeamColor] [TextColor] [Weap] [InPassengerPRI] [InPassengerTeamBeaconOffset] - 在HUD上描画载具的乘客信息。
    • PC - 引用玩家的控制器。
    • Canvas - 引用当前画布以进行描画。
    • TeamColor - 当描画乘客信息图标时所使用的颜色。
    • TextColor - 当描画乘客信息文本时所使用的颜色。
    • Weap - 引用乘客正在使用的武器。
    • InPassengerPRI - 引用乘客的PlayerReplicationInfo。
    • InPassengerTeamBeaconOffset - 描画乘客信息时距离载具位置的偏移量。
  • TurnOffShadows - 调用UpdateShadowSettings(False) 来禁用载具的所有阴影。
  • DisplayHUD [HUD] [Canvas] [HudPOS] [SeatIndex] - 描画所有载具相关的HUD细节。从HUD中调用。
    • HUD - 引用HUD。
    • Canvas - 引用当前画布以进行描画。
    • HudPOS - 尚未使用。
    • SeatIndex - 可选项。座位的索引。

* Effects(特效)

  • PlaySpawnEffect - 播放和生成载具相关的所有特效。当载具工厂生成载具时由载具工厂调用该项。
  • StopSpawnEffect - 停止和载具生成相关的所有特效。
  • CreateVehicleEffect [EffectIndex] - 为给定特效创建ParticleSystemComponent,并将相关的粒子系统分配给它。
    • EffectIndex - 要创建的特效在VehicleEffects数组中的索引。
  • InitializeEffects -触发'BeginPlay' 载具特效并设置bInitializedVehicleEffects为true。
  • SetVehicleEffectParams [TriggerName] [PSC] - 设置和给定事件名称相关的任何粒子参数。
    • TriggerName - 和该特效相关的事件的名称。
    • PSC - 引用特效的ParticleSystemComponent(粒子系统组件)。
  • TriggerVehicleEffect [EventTag] - 播放和给定事件相关的所有载具特效。
    • EventTag - 正在触发的事件的名称。
  • TeamChanged_VehicleEffects - 更新载具的特效以便和载具所在的团队相匹配。
  • StartLinkedEffect -设置当Link Gun连接到载具上时要播放的所有特效。
  • StopLinkedEffect - 关闭所有和连接到载具上的Link Gun相关的所有特效。
  • PlayTakeHitEffects - 当载具受到冲撞时播放碰撞特效,并更新伤害系统。
  • CauseMuzzleFlashLight [SeatIndex] - 打开给定座位的武器的喷嘴火焰光。
    • SeatIndex - 要为其打开喷嘴火焰的座位的索引。
  • VehicleWeaponFireEffects [HitLocation] [SeatIndex] - 通过触发和武器的FireTriggerTags相匹配的载具事件来播放给定座位的武器开火特效。
    • HitLocation - 开火特效的位置。
    • SeatIndex - 要为其播放特效的座位的索引。
  • VehicleWeaponImpactEffects [HitLocation] [SeatIndex] - 播放从给定座位开火武器的碰撞点发生的任何特效。
    • HitLocation - 碰撞的位置。
    • SeatIndex - 进行武器开火并造成碰撞撞击的座位的索引。
  • SpawnImpactEmitter [HitLocation] [HitNormal] [ImpactEffect] [SeatIndex] - 根据所射击碰撞到的表面类型生成适当的特效。
    • HitLocation - 碰撞的位置。
    • HitNormal - 设计碰撞处的表面法线。
    • ImpactEffect - 要产生的针对特定材质类型的特效。
    • SeatIndex - 进行武器开火并负责产生射击碰撞的座位的索引。
  • DisableDamageSmoke - 当载具几乎要燃烧殆尽时通过触发 'NoDamageSmoke'事件来禁用 烟雾 和/或 火焰效果。
  • StartBurnOut - 在死亡废弃的载具上启动燃烧殆尽特效。
  • SetBurnOut - 设置燃烧殆尽特效并启动计时器来启动该特效。
  • ShouldSpawnExplosionLight [HitLocation] [HitNormal] - 返回是否应该给予爆炸到达本地玩家的距离来生成爆炸光。
    • HitLocation - 尚未使用。
    • HitNormal - 尚未使用。
  • TurretExplosion - 设置并执行炮塔爆炸,隐藏现有的炮塔并产生销毁的炮塔。
  • CheckDamageSmoke - 根据载具生命值触发 'DamageSmoke' 或'NoDamageSmoke' 事件。
  • SpawnGibVehicle [SpawnLocation] [SpawnRotation] [TheMesh] [HitLocation] [bSpinGib] [ImpulseDirection] [PS_OnBreak] [PS_Trail] - 由载具的动画树中的任何伤害骨架控制器调用该项,从而在当弹簧断裂或者载具废弃断裂时生成特定的载具碎片。
    • SpawnLocation - 产生部件部分的位置。
    • SpawnRotation - 产生部件的旋转度。
    • TheMesh - 生成的部件的静态网格物体。
    • HitLocation - 碰撞的位置。
    • bSpinGib - 如果该项为true,则赋予生成的部件一个随机的角速度。
    • ImpulseDirection - 应用给生成的部件的冲力。
    • PS_OnBreak - 当该部件断裂脱离时播放的粒子系统。
    • PS_Trail - 用作为脱离部分的尾迹的粒子系统。
  • SetMovementEffect [SeatIndex] [bSetActive] [UTP] - 创建或销毁指定座位的运动特效。运动特性允许使用静态网格物体来创建一些运动效果,比如Cicada中飘过的云的效果。
    • SeatIndex - 要为其创建运动特效的座位的索引。
    • bSetActive - 如果该项为true,则创建该特效。否则,则销毁该特效。
    • UTP - 引用座位中的Pawn。用于决定该特效是否是针对本地玩家的。如果不是,则不创建任何特效。
  • ApplyWeaponEffects [OverlayFlags] [SeatIndex] - 给指定作为设置并附加武器特效。
    • OverlayFlags - 用于查找该座位的特效的标志。
    • SeatIndex - 座位的索引。

Entry/Exit(进入/退出)

  • EjectSeat [SeatIdx] - 从载具的给定作为上弹出 玩家/AI。
    • SeatIndex - 弹出乘客的座位的索引。
  • ExitRotation - 返回用于决定有效退出位置的旋转度。默认为载具的旋转度。
  • DisableVehicle - 禁用载具,赶出所有乘客,并播放和禁用该载具相关的任何特效。如果有人在载具中则返回true。
  • EnableVehicle -启用载具并停止和禁用载具相关的任何特效。
  • GetSeatIndexFromPrefix [Prefix] - 返回和给定变量前缀相关的座位索引。
    • Prefix - 为其查找前缀的座位的索引。
  • SeatAvailable [SeatIndex] - 返回指定的作为是否可用或则是否已被占用。
    • SeatIndex - 要检查的座位的索引。
  • AnySeatAvailable - 返回载具中是否有任何可用座位。
  • GetSeatIndexForController [ControllerToMove] - 返回给定控制器正在占用的座位的索引,如果控制器没有占用载具中的任何作为则返回-1。
    • ControllerToMove - 引用要检查的控制器。
  • GetControllerForSeatIndex [SeatIndex] - 返回占用给定座位的控制器,如果没有占用任何作为则返回None。
    • SeatIndex - 为其获取控制器的座位的索引。
  • HasPriority [First] [Second] - 返回第一个控制器是否比第二个控制器有优先权。用于改变作为及决定如果目标座位被占用时一个玩家是否可以冲撞另一个玩家以占用座位。默认情况下,优先权赋予人类控制的玩家。
    • First - 引用要检查的控制器以获得优先权。
    • Second - 引用要检查的相对的控制器。
  • ChangeSeat [ControllerToMove] [RequestedSeat] - 尝试移动给定玩家到新的座位。如果新的座位是空的或者如果要移动的玩家的优先权高于占用座位的玩家则移动成功。
    • ControllerToMove - 引用要移动的玩家的控制器。
    • RequestedSeat - 要将玩家移动到的座位的索引。
  • InCustomEntryRadius [P] - 当bHasCustomEntryRadius为true时调用该项,并返回给定Pawn是否在自定义半径内。默认情况将总是返回false。使用自定义半径的载具应该重载这个函数。
    • P - 引用要检查的Pawn。
  • KickOutBot - 迭代在载具中的座位,并强制从载具中找到的第一个AI乘客给人类玩家腾出空间。
  • VehicleLocked [P] - 当Pawn尝试进入载具而载具正在锁着时调用该项。播放载具锁着的音效并向玩家显示信息。
    • P - 引用尝试进入到载具的Pawn。
  • ShouldShowUseable [PC] [Dist] - 返回给定玩家是否可以进入到载具。 * PC - 引用要检查的玩家的玩家控制器。 * Dist - 要检查的玩家距离载具的距离。
  • NumPassengers - 返回当前占用载具的乘客的数量,包括驾驶员。
  • GetFirstAvailableSeat - 返回第一个可用的乘客座位,比如seat0,如果没有可用座位则返回-1。
  • PassengerEnter [P] [SeatIndex] - 当新的乘客(也就是,不是驾驶员)进入到载具时调用,从而处理乘客所携带的任何旗帜并将乘客放置到给定座位上。
    • P - 引用进入载具的Pawn。
    • SeatIndex - 引用放置乘客的座位的索引。
  • PassengerLeave [SeatIndex] - 当乘客离开载具时调用该项。
    • SeatIndex - 要从中移除乘客的座位的索引。
  • Occupied - 返回当前载具中的任何作为是否被占用。
  • OpenPositionFor [P] - 返回这是否是针对给定Pawn的可用座位。
    • P - 引用要检查的Pawn。
  • InitializeSeats - 设置载具中每个座位的武器。
  • SitDriver [UTP] [SeatIndex] - 将给定Pawn放置到特定座位中,并将它附加到相关骨骼上。
    • UTP - 引用要放置到座位中的Pawn。
    • SeatIndex - 用于放置pawn的座位的索引。
  • OnExitVehicle [Action] - 接收一个Exit Vehicle(退出载具) Kismet动作,强制所有乘客退出载具。
    • Action - 引用激活的UTSeqAct_ExitVehicle动作。
  • SetSeatStoragePawn [SeatIndex] [PawnToSit] - 当将特定pawn放置到给定座位上时或将特定Pawn从给定座位上删除时更新SeatMask(座位蒙板) 。
    • SeatIndex - 用于放置pawn或者从中删除pawn的座位的索引。
    • PawnToSit - 引用要放置到座位中的Pawn,或如果要删除给定座位中的乘客可以设置它为 None。

Events(事件)

  • VehicleEvent [EventTag] - 提供了在载具上触发事件以便对任何情形作出反应的接口。请参照载具事件部分获得更多信息。
    • EventTag - 要触发的事件的名称。

Gameplay(游戏性)

  • SetTeamNum [T] - 设置载具所属的团队。
    • T - 将载具更改为的团队的编号。
  • TeamChanged - 当载具改变团队来更新材质及特效以便和新的团队相匹配时调用该项。
  • IncomingMissle [P] - 通知AI有一个正在瞄准射击载具的射弹来临。
    • P - 引用瞄准射击载具的射弹。
  • ShootMissile [P] - 使载具向指定的射弹开火。
    • P - 引用要对其开火的射弹。
  • SendLockOnMessage [Switch] -由LockOnWarning() 函数调用,以便将该警告传递给载具中的所有座位。
    • Switch - 要显示的消息的索引。
  • HandleEnteringFlag [EnteringPRI] - 根据载具是否允许携带旗帜来附加进入到载具中的玩家携带的旗帜,或强制玩家丢掉旗帜。
    • EnteringPRI - 引用进入载具的玩家的 PRI。
  • AttachFlag [FlagActor] [NewDriver] - 附加指定的旗帜给载具,或者如果指定了FlagBone则附加到该旗帜骨骼上。
    • FlagActor - 引用要附加的旗帜。
    • NewDriver - 引用携带旗帜的Pawn。
  • GetHumanReadableName - 返回易读的载具名称,或者是VehicleNameString或者是类名 。

网格物体和动画

  • ReattachMesh - 分离或附加网格物体组件。当设置已经更新时使用该项。
  • PlayVehicleAnimation [EventTag] - 播放和给定事件相关的任何动画。
    • EventTag - 正在触发的事件的名称。
  • OnAnimEnd [SeqNode] [PlayedTime] [ExcessTime] - 继承于Actor。当动画结束时由引擎调用。在载具上调用‘Idle’事件来讲载具置回到空闲状态。
    • SeqNode - 播放动画的AnimNodeSequence。
    • PlayedTime - 动画播放的持续时间。
    • ExcessTime - 超出动画结束的重叠时间量。

Movement(运动)

  • UpdateLookSteerStatus - 根据当前的控制机制更新bUsingLookSteer 的值。

物理

  • OnDriverPhysicsAssetChanged [UTP] -该函数存根允许载具在物理资源发生改变时在玩家上执行自定义屋里设置。
    • UTP - 引用驾驶员的pawn。

Sounds(声效)

  • PlayVehicleSound [SoundTag] -播放 和/或 停止和给定事件相关的任何声效。
    • SoundTag - 被触发的事件的名称。
  • EntryAnnouncement [C] - 当某人进入载具时播放任何必要的声音或通知。
    • C - 禁用进入到载具的 玩家/AI 的控制器。
  • PlayHorn - 播放喇叭声效来告诉附近的任何AI尝试进入到载具中。
  • StopVehicleSounds - 停止播放所有载具声效。

Weapons(武器)

  • WeaponRotationChanged [SeatIndex] - 当给定座位的武器旋转值发生改变时在客户端调用该项,以便更新客户端上的炮塔的旋转度。
    • SeatIndex - 其旋转度值发生改变的座位的索引。
  • CheckTurretPitchLimit [NeededPitch] [SeatIndex] - 检查给定的倾斜度是否受到炮塔控制器的限制,也就是,炮塔不能朝那个方向开火,并返回是否限制旋转度。
    • NeededPitch - 超期望方向开火所需的倾斜度。
    • SeatIndex -要执行开火动作的座位的索引。
  • GetHomingTarget [Seeker] [InstigatedBy] - 返回尝试锁定到这个载具上的Actor射弹。
    • Seeker -引用瞄准载具的射弹。
    • InstigatedBy - 引用负责开火发射射弹的控制器。
  • IntializeTurrets - 初始化载具中所有座位的炮塔骨架控制器。
  • SetFiringMode [Weap] [FiringModeNum] - 继承于 Pawn。将驾驶员武器的开火模式设置为给定的开火模式。
    • Weap - 引用驾驶员的武器。
    • FiringModeNum - 武器的新的开火模式。
  • ClearFlashCount [Who] -继承于Pawn。通过VehicleAdjustFlashCount()清除驾驶员的武器的所有开火模式的闪光次数。
    • Who - 引用驾驶员的武器。
  • IncrementFlashCount [Who] [FireModeNum] - 继承于Pawn. 通过 VehicleAdjustFlashCount()增加驾驶员的武器的特定开火模式的闪光次数。
    • Who - 引用驾驶员的武器。
    • FireModeNum - 要增加其闪光次数的开火模式。
  • SetFlashLocation [Who] [FireModeNum] [NewLoc] -继承于Pawn。通过VehicleAdjustFlashLocation()设置驾驶员武器的涉及碰撞位置,以便将它复制到播放开火特效的所有客户端。
    • Who - 引用驾驶员的武器。
    • FireModeNum - 负责产生射击碰撞的开火模式。
    • NewLoc - 碰撞的位置。
  • ClearFlashLocation [Who] - 通过VehicleAdjustFlashLocation()清除驾驶员武器的闪光位置,并停止武器开火特效。
    • Who - 引用驾驶员的武器。
  • GetBarrelLocationAndRotation [Seatindex] [SocketLocation] [SocketRotation] - 输出给定座位的武器发射的当前炮筒的插槽的 位置 和/或 旋转度。
    • SeatIndex - 获取其位置和旋转度的座位的索引。
    • SocketLocation - 输出炮筒的位置。
    • SocketRotation - 可选项。输出炮筒的旋转度。
  • GetEffectLocation [SeatIndex] - 获得给定座位的武器的炮筒位置。
    • SeatIndex - 获得其炮筒位置的座位的索引。
  • GetPhysicalFireStartLoc [ForWeapon] - 通过GetEffectLocation()函数获得驾驶员武器的炮筒的位置。
    • ForWeapon - 引用驾驶员的武器。
  • GetWeaponAim [VWeapon] - 返回代表给定武器瞄准方向的旋转度。
    • VWeapon - 引用要获得其瞄准位置的武器。
  • WeaponFired [InWeapon] [bViaReplcation] [HitLocation] - 将载具驾驶员的武器开火函数调用传递给VehicleWeaponFired()函数。
    • InWeapon - 引用驾驶员的武器。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
    • HitLocation - 播放开火发射特效的位置。
  • VehicleWeaponFired [bViaReplication] [HitLocation] [SeatIndex] - 触发给定座位的武器的任何武器开火特效。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
    • HitLocation - 开火特效的位置。
    • SeatIndex - 进行武器开火的座位的索引。
  • WeaponStoppedFiring [InWeapon] [bViaReplication] - 将载具驾驶员的武器停火函数调用传递给VehicleWeaponStoppedFiring() 函数。
    • InWeapon - 引用驾驶员的武器。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
  • VehicleWeaponStoppedFiring [bViaReplication] [SeatIndex] - 停止给定座位的武器的任何开火特效。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
    • SeatIndex - 武器停火的座位的索引。
  • FindWeaponHitNormal [HitLocation] [HitNormal] [End] [Start] [HitInfo] - 通过使用从给定起点和终点的跟踪输出碰撞的位置、发现及信息。
    • HitLocation - 输出跟踪碰撞的位置。
    • HitNormal - 输出跟踪碰撞位置处的表面法线。
    • End - 跟踪的终点。
    • Start - 跟踪的起点。
    • HitInfo - 输出跟踪的碰撞信息。
  • VehicleAdjustFlashCount [SeatIndex] [FireModeNum] [bClear] - 修改或清除特定座位的武器的闪光次数。
    • SeatIndex - 要为其调整闪光次数的座位的索引。
    • FireModeNum - 要调增其闪光次数的开火模式。
    • bClear - 可选项。如果该项为true,则清除闪光次数。否则,增加闪光次数。
  • VehicleAdjustFlashLocation [SeatIndex] [FireModeNum] [NewLocation] [bClear] -设置或清除特定座位的武器的闪光位置。
    • SeatIndex - 要为其调整闪光位置的座位的索引。
    • FireModeNum - 要设置其闪光位置的开火模式。
    • NewLocation - 闪光位置的新位置。
    • bClear - 可选项。如果该项为true,那么则清除闪光位置。否则,将闪光位置设置为新的位置。
  • SetShieldActive [SeatIndex] [bActive] - 启用/禁用 具有盾牌射击开火模式的字句的 盾牌。具有盾牌的子类需要重载这个类。
    • SeatIndex - 激活盾牌的座位的索引。
    • bActive - 如果该项为true,则激活盾牌。否则,禁用盾牌。

SVehicleSimBase

载具的大部分仿真工作都是在SVehicleSimBase对象中处理的。它被分离出来作为一个单独的对象,以便您可以为您的所有载具创建针对特定游戏的继承于SVehicle的基类,但是仍然可以针对不同载具类型重复使用代码。

  • WheelSuspensionStiffness - 控制车轮的悬架弹簧的硬度。这个值没有特定的范围,但是我们一般使用20.0 到 500.0之间的值。
  • WheelSuspensionDamping - 控制轮子的悬架弹簧的阻尼。 这个值越大,在悬架上获得震荡就越小。同样,这个值没有特定的范围,但是我们一般使用1.0 到 75.0之间的值。
  • WheelSuspensionBias - 应用到轮子悬架平衡位置处的偏移量。
  • WheelInertia - 轮子的质量。由PhysX使用,用于决定轮子力矩可以达到的轮子速度。说明了轮子的重量及转动轮子的难度。
  • bWheelSpeedOverride - 如果该项为true,那么可以直接指定这个轮子的速度,而不必应用力矩,并且物理会相应地自动更新轮子速度。这项由SVehicleSimTank对象使用,它在轮子上调用SetAxleSpeed 。
  • bClampedFrictionModel -如果该项为true,那么摩擦力模型区间限定轮子应用的摩擦力。应该会更加真实。

轮子模型

虚幻引擎3载具系统利用了类似于Pacejka的轮子模型(您可以使用Google找到这种类型的模型)。轮子模型细分为横向(侧向)和纵向(滚动方向)。每一个方向都有一个关于车轮和地面间的滑动及所生成的力的大小的曲线。曲线如下所示:

pacejka_curve.jpg

对于横向来说,Slip Angle(滑移角)作为输入;对于纵向来说,使用Slip Ratio(滑移系数)作为输入。您指定这些曲线的方式是通过给出图表中显示的两个点的坐标,被称为 `Extremum(极值)' 和`Asymptote(渐近线)'。Extremum(极值)是最大力的点,而Asymptote(渐近线)点给出了发生无限滑动时的输出值。每个点的切线看做是平的,在它们之间适当有个三次样条给出了曲线的最终形状。每个曲线您可以使用的属性定义为:

  • Wheel..ExtremumSlip - Extremum点的输入Slip值。
  • Wheel..ExtremumValue - Extremum(极值)点的输出值。
  • Wheel..AsymptoteSlip - Asymptote点的输入Slip值。
  • Wheel..AsymptoteValue - Asymptote点的输出值。

当轮子和地面之间有较大的相对速度时,之前的轮子仿真版本将会大大地增加轮子力。这意味着落地跳跃和稳定地滑动是很难实现的。不久后,引入了 'clamped friction mode(区间限定摩擦模式)',从而帮助修复了这个问题。 要想使用这个模型,需要在SVehicleSimBase中将'bClampedFrictionModel'选项设置为TRUE。注意,在现有载具上这样做将要求重新调整上面描述的轮子参数。 SVehicleSimBase类使用默认轮子函数值,这些值对于一般的带轮载具来说是个很好的入手点。

SVehicleWheel 属性

有几个SVehicleWheel 上的值是通过仿真代码每次更新设置的,然后这些值会被传递给物理。

  • Steer - 轮子的旋转角度。0代表径直向前,负角度代表向右转。以度数为单位。
  • MotorTorque - 应该应用到这个轮子上的发动机转矩。可以是负值,这样将是轮子反向转。
  • BrakeTorque - 应用给轮子的刹车力矩量,以便阻止旋转。应该总是正值。
  • ChassisTorque - 从这个轮子发向应用给地盘的力矩量,以便当加速等时轮子上仰。

仿真代码使用轮子的很多其它参数来决定上面的值应该是多少。这些值通常不会改变。

  • bPoweredWheel - 是否应该给这个轮子应用动力。
  • bHandbrakeWheel - 当应用时‘手动刹车’是否降低对轮子的控制。
  • SteerFactor - 这个轮子应该对驾驶转动做出响应的程度。如果该值为0,那么当驾驶转动时轮子将不转。如果该值为1.0,那么当驾驶转动时轮子向右转。如果设置为-1.0则会导致轮子向相反的方向转动,这在4-轮驾驶配置中是有用的。
  • LongSlipFactor - 定义在SVehicleSimBase中的在纵向上基于每个轮子缩放轮子力大小的函数。
  • LatSlipFactor - 定义在SVehicleSimBase中的在横向上基于每个轮子缩放轮子力大小的函数。
  • SkelControlName - 应该基于这个轮子更新的SkelControlWheel的名称。关于更多的信息,请参照设置载具页面。
  • BoneName - 用于放置轮子的骨架网格物体中骨骼的名称。
  • BoneOffset - 在和BoneName指定的骨骼偏移量为多少的地方放置轮子。
  • WheelRadius - 轮子的半径。
  • SuspensionTravel - 在轮子达到‘硬性’停止之前允许它在垂直方向上运动的程度。
  • SuspensionSpeed - 为了避免图形轮子滚动的太快(比如当上台阶时),您可以指定轮子每秒可以运行的虚幻单位的最大数量。
  • WheelParticleSystem - 可选的粒子系统,用于生成这个轮子的烟雾特效。每帧更新时在这个粒子系统上设置‘WheelSlip’浮点参数,它可以用于修改产生速率等。
  • Side - 用于坦克载具,指出这个轮子是否构成载具的左侧或右侧‘轮胎面’的一部分。

SVehicleWheel同时提供了一些‘输出’参数,这些参数在每帧都会更新。

  • bWheelOnGround - 这个特定的轮子当前是否在地面上。
  • SpinVel - 这个轮子的当前角速度,以每秒中移动的弧度为单位。
  • LongSlipRatio - 该轮子的当前纵向滑移比率。
  • LatSlipAngle - 该轮子的当前横向滑移角。
  • ContactNormal - 轮子和地面之间的接触点法线。
  • LongDirection - 纵向轮子方向向量,在世界空间中。
  • LatDirection - 横向轮子方向向量,在世界空间中。
  • ContactForce - 最后一帧这个轮子所应用的力的大小。
  • LongImpulse - 最后一帧在纵向上应用的冲力的大小。
  • LatImpulse - 最后一帧在横向上应用的冲力的大小。
  • SuspensionPosition - 轮子在它的悬架上的当前垂直位移。
  • CurrentRotation - 轮子的当前旋转度,以度数为单位。

物理所做的线性检测是悬架移动加上轮子半径。

载具座位和武器

载具系统(从UDKVehicle类开始)允许载具具有多个座位和武器。这意味着载具可以有一个控制载具运动的驾驶员及很多主要武器,同时可以有很多乘客,它们也可以控制各自的一组武器。这不仅允许武器作战,同时使得制作传送器成为可能,比如制作运输船、人员输送车。

每个载具至少定义一个座位,供驾驶员用。每个载具座位通过在载具的默认属性中的Seats数组内添加一个VehicleSeat来进行定义。VehicleSeat结构体包含了定义座位所需的所有属性,包括如何为座位上玩家放置相机、座位上的玩家的武器使用哪个武器类等。

默认情况下,当玩家进入载具时,他们将会被放置到第一个可用座位上。如果载具是空的,那么显然将会把该玩家放置为驾驶员。载具中的乘客,包括驾驶员,可以通过使用通常用于切换武器的数字按键在任何时候切换到载具中的其他任何可用座位。

VehicleSeat 属性

Damage(伤害)

  • DriverDamageMult - 应用给这个座位上的乘客的伤害的乘数。

Display(显示)

  • CameraTag - 用作为相机基座的骨骼或插槽名称。
  • CameraBaseOffset - 距离基座位置(CameraTag中的骨骼/插槽)的偏移量,用于决定基本的相机位置。
  • CameraSafeOffset - 距离载具位置的偏移量,用于决定安全跟踪的起始点。
  • CameraOffset - 将相机从座位处拉回的距离。
  • CameraEyeHeight - WeaponPawn的俯视高度。
  • ViewPitchMin - 座位的 相机/武器 倾斜时允许具有的最小旋转度。如果设置为0.0f,则会使用的ViewPitchMin 。
  • ViewPitchMax - 座位的 相机/武器 倾斜时允许具有的最大旋转度。如果设置为0.0f,则会使用的ViewPitchMax 。
  • SeatIconPos - 用于在HUD上描画座位图标的位置。

* Effects(特效)

  • WeaponEffects - 如果激活了武器奖励特效(UDamage等),该项是武器奖励特效的位置和组件引用的数组。
  • MuzzleFlashLightClass - 喷口火焰使用的光源的类。
  • MuzzleFlashLight - 引用喷口火焰使用的光源。
  • ImpactFlashLightClass - 这个作为的武器产生的射击碰撞时所使用的光源的类。
  • SeatMovementEffect - 当载具在运动时播放的特效 (VehicleMovementEffect)。

一般

  • StoragePawn - 引用坐在座位中的Pawn。
  • SeatPawn - 如果给作为分配了武器,该项引用该座位的的WeaponPawn 。
  • bSeatVisible -如果该项为true,则会渲染占用这个座位的Pawn。
  • SeatBone - 用作为占用这个座位的Pawn的锚点的骨骼名称。
  • SeatOffset - 距离SeatBone的偏移量,以便放置占用这个座位的Pawn。
  • SeatRotation - 距离SeatBone的旋转度的旋转度偏移量,以便旋转占用这个座位的Pawn。
  • SeatSocket - 看上去没有使用过。

Sounds(声效)

  • SeatMotionAudio - 当座位发生运动时用于播放生效的AudioComponent ,比如当 座位/武器 旋转时。

* Weapon(武器)*

  • GunClass - 这个作为所使用的武器的类。如果座位没有武器,该项可以为空。
  • Gun - 引用该座位的武器。
  • GunSocket - 作为特效和生成射弹的定位点所使用的插槽的名称数组。
  • GunPivotPoints - 作为 旋转/瞄准 武器的支点的骨骼的名称数组。
  • BarrelIndex - 存放了武器的当前激活的炮筒。
  • TurretVariablePrefix - 用作为该座位的WeaponRotation、FlashLocation、FlashCount和FiringMode属性的前缀的名称。应该为除了Seat[0]之外的所有座位设置该项。请参照载具武器复制部分 获得更多信息。
  • TurretControls - 和该座位的武器相关的载具的动画树中 UTSkelControl_TurretConstrined骨架控制器的名称的数组。用于获得到这些骨架控制器的引用。
  • TurretControllers - 和该座位的武器相关的载具的动画树中 UTSkelControl_TurretConstrined骨架控制器的名称的数组。
  • AimPoint - 缓冲在ApplyWeaponRotation中,这个向量是玩家是在世界空间中的瞄准方向。
  • AimTarget - 缓冲在ApplyWeaponRotation中,这是座位当前正在瞄准的Actor。如果没有瞄准任何东西该项可以为none。
  • PivotFireOffsetZ - 武器支点和实际开火位置的Z距离。用于校正瞄准旋转度。
  • bDisableOffsetZAdjust - 如果该项为true,则根据PivotFireOffsetZ禁用对炮塔倾斜度的调整。

载具武器复制

载具需要处理武器开火所需的所有变量的复制。每个载具需要有一组以常用前缀开始的变量,将使用这些变量来组织所需的那个武器的复制数据。 载具的第一个武器(比如: 和 驾驶员/座位 0相关的武器)没有前缀。

[prefix]WeaponRotation - 定义了世界中武器所需的物理旋转度。 [prefix]FlashLocation - 这定义了当即时射击武器开火时射击碰撞的位置。 [prefix]FlashCount - 每次射击后这个值会增加。 [prefix]FiringMode - 这项是武器当前所使用的开火模式。

另外,每个座位可以有任何数量个和其相关的SkelControl_TurretConstrained控制。 当设置或复制了[prefix]WeaponRotation值时,这些控制将会自动地更新。

FlashLocation、FlashCount和FiringMode (和seat 0相关) 继承于Pawn类。 WeaponRotation定义在UDKVehicle中。 所有的“turret(炮塔)”变量必须定义为"repnotify"。 FlashLocation、FlashCount和FiringMode仅能复制到不拥有它们的客户端上。

载具事件

载具事件系统(在继承于UDKVehicle的载具中)提供了在任何需要的情况下在载具上播放任何数量的动画、特效、音效的方法。这个系统十分灵活并且可以通过多种方式使用。

每个载具有特自己的一组事件,会针对这些事件创建动画、特效、音效,并将它们放入到载具默认属性中相应的数组中:VehicleAnims、VehicleEffects或VehicleSounds。然后,在载具的代码中,将会调用 VehicleEvent()函数,向它传入事件的名称来触发针对特定情形的事件。

VehicleEvent() 函数反过来调用以下函数,并向它们传递被触发的事件的名称:

  • PlayVehicleAnimation()
  • TriggerVehicleEffect()
  • PlayVehicleSound()

每个函数迭代相应的数组并播放(或停止)任何及所有和被触发的事件相匹配的动画、特效、声效。这个是个非常容易使用的相对简单的系统,它提供了给载具快速添加自定义视觉效果和音效细节的功能。

VehicleAnim 属性

  • AnimTag - 负责播放这个动画的载具数组的名称。
  • AnimSeqs - 这个动画要播放的动画序列数组的名称。
  • AnimRate -动画的播放速度。
  • bAnimLoopLastSeq - 如果该项为true,那么将会循环这个动画播放的最后一个动画序列。
  • AnimPlayerName - 动画树中用于播放动画的UTAnimNodeSequence播放器的名称。

VehicleEffect 属性

  • EffectStartTag - 负责播放这个特效的载具事件的名称。
  • EffectEndTag - 负责停止这个特效的载具事件的名称。
  • bRestartRunning - 如果该项为true,那么当在特效正在运行时触发了这个事件时将会重新播放该特效。
  • bHighDetailOnly - 如果该项为true,那么该特效将仅当游戏以高细节模式运行时播放这个特效。
  • EffectTemplate - 这个特效要播放的粒子系统。
  • EffectTemplate_Blue - 载具属于蓝队时为这个事件播放的粒子系统。
  • EffectSocket - 用于附加特效的载具上的插槽名称。
  • EffectRef - 播放这个特效所使用的ParticleSystemComponent 。

VehicleSound 属性

  • SoundStartTag - 负责播放这个音效的载具事件的名称。
  • SoundEndTag - 负责停止这个音效的载具事件的名称。
  • SoundTemplate - 这个音效播放的SoundCue 。
  • SoundRef - 播放这个音效所使用的AudioComponent 。

载具伤害系统

载具伤害系统(在继承于UDKVehicle的载具中)使得载具可以产生针对特定位置的伤害,并通过使用顶点变性目标显示伤害的效果。任何时候当载具受到伤害时,伤害系统找到距离碰撞位置最近的骨骼。然后使用那个骨骼在DamageMorphTargets数组中找到对应项。对这个载具造成的伤害会应用到那个伤害顶点变形目标的生命值及任何后续链接的伤害顶点变形目标上,直到伤害消失为止。当耗尽了特定伤害顶点变性目标的生命值时,将认为它已经死亡,并在这个过程中跳过仅使得链接的伤害顶点变形目标受到伤害。

这个系统处理了所有难缠的工作。你所需要做的就是在内容侧设置顶点变形目标和材质,并将向载具的默认属性的DamageMorphTargets 数组中添加元素项。

FDamageMorphTargets 属性

  • MorphNodeName - 和这个伤害顶点变形目标相对应的载具的动画树中的MorphNode 的名称。
  • MorphNode - 引用和这个伤害顶点变形目标相对应的实际的MorphNode 。当初始化载具时设置该项。
  • LinkedMorphNodeName - 链中的下一个MorphNode 的名称。如果这是链中的最后一个伤害顶点变形目标,那么则该项为‘None’。
  • LinkedMorphNodeIndex - 链中下一个伤害顶点变性目标在DamageMorphTargets数组中的索引。当初始化载具时设置该项。
  • InfluenceBone - 和这个伤害顶点变形目标相关联的骨骼的名称。
  • Health - 这个伤害顶点变形目标的当前生命值。
  • DamagePropsName - 当伤害顶点变形目标受到伤害时要调整的载具材质中的标量属性的名称。因为伤害顶点变性目标的生命值是从它的初始值到0,所以参数的值是从0到1。

不同的载具类型


SVehicle类提供的各种带轮的载具工具可以创建大量不同的载具类型。看一下虚幻竞技场3来了解以下其中一些载具的工作方式是非常值得的。这里是一些非传统的载具类型:

带轮载具

虚幻引擎3中的带轮载具是作为单独的刚体进行仿真的。光线从汽车底盘上的点向下投射来查看载具是否接触地面,并且会基于一些参数来计算接触点处的力。没有物理‘轮子’对象 - 引擎只是存储每个轮子的运动速度情况,并使用它来计算所产生的力。

悬浮载具

这些载具通过使用长的、柔软的悬架移动创建轮子,没有轮子摩擦力,允许轮子向各个方向移动。然后我们仅使用力、力矩和阻尼来控制载具的运动。

飞行载具

对于类似于直升飞机的载具来说,载具是保持竖立的,我们使用StayUprightConstraint来保持载具竖立。然后通过重载GetGravityZ()函数,您可以使得载具’悬浮盘旋‘,并可以轻松地使用力驱动它。

坦克

UE3中包含了针对这个应用的SVehicleSimTank对象。

当应用全油门时,坦克引擎将会在两个履带上分割MaxEngineToque(最大引擎力矩)。 除非正在驾驶坦克,否则这将是个均匀分割。当驾驶时,力矩将会根据载具的当前速度基于InsideTrackTorqueCurve分割。

比如。。。当向前驾驶时每个履带获得50%的总力矩。然而,如果塔克正在向左转且InsideTrackTorqueCurve是0.2时,这将会应用引擎力矩的20%给左侧履带,剩余的80%应用到右侧履带上。如果InsideTrackTorqueCurve是-0.2,它将会按照20/80分割力矩,然而内力矩将会应用在相反的方向上。EngineDamping是个阻尼力,和每个履带的速度成反比。

请记住,总力矩保存在两个履带上,所以如果您将其100%地应用给内部履带,那么将没有任何剩余力矩发送给外部履带。另外,当履带的速度不同时,任何SteerFactor为正值的履带轮将会使用TurnMaxGripReduction/TurnGripScaleRate来调整它们的横向强度。

如果bTurnInPlaceOnSteer为TRUE,那么TurnInPlaceThrottle允许您设置一个油门减少量,以便在原地转弯。

内容: 物理资源


你可以使用PhAT为载具设置碰撞,和布娃娃一样。但是,载具在它们的SkeletalMeshComponent使用bUseSingleBodyPhysics标志,它仅为组件创建一个单独的物理刚体(从根刚体),而不是为物理资源的每个部分创建一个刚体。您在PhAT中为载具设置的其他刚体不会在载具的物理仿真中起作用。不必为轮子创建关节。但物理资源中的其他刚体可以用于线性碰撞检测,所以添加额外的刚体来更加精确地阻止玩家运动是有用的,尤其是对于带动画的部分。

请参照 设置载具页面获得关于在3D包中创建载具并将其导入到引擎中的信息。

性能: 调整载具


调整载具是个需要强经验弱理论的工作。

有用的控制台命令

一个非常有用的工具是 'editactor' 控制台命令。要想使用它,需要使用 -wxwindows开关(或者使用PIE)运行游戏。然后进入到您想调整的载具中,并输入 'editactor class=[vehicle class name]',您应该看到会出现一个属性窗口,允许您在驾驶载具的过程中编辑所有的载具属性。注意那些属性(比如BoneOffset)仅在构建时使用,在运行时不能改变。

载具复制


这是一些载具复制策略,和 虚幻竞技场 中的处理一样:

物理在客户端和服务器上进行完全仿真。当客户端按下向前时,该命令将会到达服务器作为’原始‘输入。然后它变为针对载具的 ThrottleSteering 等服务器上的设置,并且这些设置及载具的当前状态(线性速度和角速度,位置及速度)会被复制给所有的客户端。这样输入和在状态就保持同步了。客户端上的载具的物理状态以三种方式校正:

  1. 如果误差非常小,则忽略。
  2. 如果误差很小并且载具在运动,则直接校正某些误差,将会修改速度将客户端的信息版本向服务器版本移动。
  3. 如果误差很大,将会把载具电传到新的位置。

这个代码在 AActor::ApplyNewRBState 中。这个数据使用结构体进行复制,以便保持所有信息同步。这个结构体是SVehicle.uc中的 VehicleState

调试及可视化这个问题的一个较好的方法是忽略来自服务器的物理校正,而是描画它们。这个代码实际在 ApplyNewRBState 函数中 - 查找位于顶部的 Handy debugging mode(手动调试模式) 注释。这样你就可以到处驾驶了,可以看到载具的客户端版本和服务器版本的偏离速度。

大部分特效都通过插值客户端的物理状态(速度、接触等)来完全地在客户端上处理。

针对其他游戏的策略

对于具有高速载具的游戏来说,比如赛车游戏,在处理这个情形时需要考虑其他策略。速度越大,可能您就更需要进行大幅度的’电传‘校正。如果的载具数量是合理的,那么您或许应该总是让服务器主管物理仿真。如果您在制作具有上百个载具的大型多人在线游戏,那么您可能需要分发该仿真。

UE3 主页 > 游戏性编程 > 载具系统技术指南

载具系统技术指南


概述


在虚幻引擎中载具可以是玩家在世界中到处行走所使用的任何物理对象。首先想到的事情就是类似于汽车、卡车这样的带轮子的车辆或者像飞机、直升机那样的能飞的载具。但是,虚幻引擎中的载具系统和刚体物理引擎在创建载具类型方面提供了巨大的灵活性。使用这个系统可以创建不仅可以创建汽车、卡车、飞机、直升机、坦克,甚至可以创建像气垫船、气垫滑板这样使用踏板另其悬浮的载具,还可以创建像马这样的生物载具,以及创建可以机械化地行走的载具。这意味着该系统不仅可以创建具有载具战斗的游戏,而且可以创建项赛马比赛游戏中那些可以骑的马。载具系统甚至可以用于创建冲浪板或滑雪板以进行仿真模拟。当然,对于某些非常特殊的载具,可能需要实现自定义功能,但是整个架构和系统已经准备好,从而允许您简单地添加特殊类型载具所需要的功能,而不必从头开始构建整个系统。

Vehicle 类


虚幻引擎中的所有载具都继承Pawn类,从中继承了大量的属性和功能。虚幻引擎中的载具的可视化组件使用一个骨架网格物体,并且可以播放动画、声效、以及在网格物体骨架上的插槽或骨骼位置处产生各种特效。

Vehicle

这是所有载具的基类。它包含了基本控制输入Steering(方向控制)、Throttle(油门)、Rise(上下移动)以及用于允许计算机玩家驾驶载具的大部分AI代码的存根。它也包含了用于进入和退出载具的代码。您可以继承该类来创建一些东西,比如固定的塔车。

+
Vehicle 属性 (点击查看)

AI

  • bTurnInPlace - 如果该项为true,那么则告诉AI这个载具可以原地转动。
  • bSeparateTurretFocus - 如果该项为true,那么则告诉AI该载具有转动炮塔式武器,该武器的瞄准方向和载具朝向相反。
  • bFollowLookDir - 如果该项为true,那么则告诉AI载具的旋转度和相机的旋转度一样。
  • bHasHandbrake - 如果该项为true,则告诉AI该载具可以手动制动。用于驾驶控制载具。
  • bScriptedRise -如果该项为true,那么则告诉AI该载具可以盘旋。当卡住或到达目的地时使用。
  • bDuckObstacles - 如果该项为true,则告诉AI检测障碍物并躲闪到其下面。
  • bAvoidReversing - 如果该项为true,则告诉AI除非绝对必须否则避免使用倒退功能。
  • bRetryPathfindingWithDriver - 如果该项为true,那么则告诉AI如果在载具中寻路失败则继续步行。

Damage(伤害)

  • DriverDamageMult - 驾驶员在载具中所导致的伤害的乘数。
  • MomentumMult - 伤害给予载具的动力的乘数。
  • CrushedDamageType - 当载具压缩某物时所使用的DamageType (伤害类型)。
  • MinCrushSpeed - 载具移动压碎某物时必须达到的最小速度。
  • ForceCrushPenetration - 无论载具速度怎样,当载具压碎某物之前所允许的最大穿过量。

Display(显示)

  • ViewPitchMin - 继承Pawn。允许载具的相机具有的最小倾斜旋转度。
  • ViewPitchMin - 继承于Pawn。允许载具的相机具有的最大倾斜旋转度。

Entry/Exit(进入/退出)

  • Driver - 引用驾驶该载具的Pawn。
  • bDriving - 如果该项为true,则载具由驾驶员。
  • ExitPositions - 一个和载具相对的位置的数组,用于当玩家退出载具时放置玩家。如果没有指定位置,那么则使用可选的自动放置系统。
  • ExitRadius - 当使用自动放置系统时放置玩家的位置到达载具位置的距离;尝试将玩家放置到载具前面、后面、左面、右面的这个距离处。
  • ExitOffset - 当玩家退出载具时放置玩家所使用的额外偏移量。
  • bDriverIsVisible - 如果该项为true ,则渲染载具的驾驶员。
  • bAttachDriver - 如果该项为true,那么当驾驶员进入载具时将会把他附加到载具上。

网格物体和动画

  • Mesh -继承于Pawn。代表载具可视化组件的SkeletalMeshComponent(骨架网格物体组件)。

Movement(运动)

  • Steering(方向控制) - -1到1之间的值代表玩家正在向左或向右驾驶载具的方向。默认情况下,这是按下A和D键的结果。
  • Throttle - 值在-1到1之间,代表玩家的前进和倒退输入。默认情况下,这是按下W和S键的结果。
  • Rise - 值在-1到1之间,代表玩家的向上和向下输入。默认情况下,这是按下空格和C键的结果。
  • bIgnoreStallZ - 如果该项为true,那么载具则继续上升到关卡的World属性中指定的StallZ值的高度之上。

+
Vehicle 函数 (点击查看)

AI

  • GetMaxRiseForce - 返回载具的最大上升力。
  • GetTargetLocation [RequestedBy] [bRequestAlternateLoc] - 当瞄准载具时返回最佳瞄准位置。
    • RequestedBy - 可选项。引用瞄准载具的Actor。
    • bRequestAlternateLoc - 可选项。如果该项为true,那么如果有多个位置则返回次要位置。在这个实现中没有使用。
  • ContinueOnFoot - 如果驾驶员是AI强制驾驶员从载具内出来,并返回驾驶员是否离开载具。当路径仅能通过步行通过时从寻路代码中调用该功能。

Collision(碰撞)

  • EncroachingOn [Other] - 当载具侵占某个特定actor或和某个特定actor重叠,且该Actor不能从路上推开时引擎会调用该函数。
    • Other - 引用载具所侵占的Actor。
  • PancakeOther [Other] - 由EncroachingOn()调用来处理大量伤害,以便压碎指定的Pawn。
    • Other - 引用要压碎的Pawn。

Damage(伤害)

  • TakeRadiusDamage [InstigatedBy] [BaseDamage] [DamageRadius] [DamageType] [Momentum] [HurtOrigin] [bFullDamage] [DamageCauser] [DamageFallowExponent] - 应用伤害给载具和驾驶员,并根据载具到达伤害的指定原点的距离缩放伤害。
    • InstigatedBy - 引用负责产生伤害的控制器。
    • BaseDamage - 存放了在原点处要应用的最大伤害量。
    • DamageRadius - 存放了从原点处开始可以产生伤害的最大距离;伤害量在原点和这个距离之间进行缩放。
    • DamageType - 存放了要产生的伤害的类型。
    • Momentum - 存放了给载具施加的动力量。
    • HurtOrigin - 存放了要应用的伤害的原点。在这个位置处产生完全伤害。
    • bFullDamage - 如果该项为true,则不会基于到达原点的距离缩放伤害量。在这个半径范围内施加完全伤害。
    • DamageCauser - 引用负责产生伤害的Actorimpart。
    • DamageFalloffExponent - 存放了伤害随着半径的衰减指数。默认值是1.0,进行线性衰减。
  • DamageRadiusDamage [DamageAmount] [DamageRadius] [EventInstigator] [DamageType] [Momentum] [HitLocation] [DamageCauser] [DamageFalloffExponent] - 决定施加给载具的伤害是否会影响到驾驶员,如果会伤害到驾驶员则在Driver(驾驶员)上调用TakeRadiusDamage() 函数。
    • DamageAmount - 存放了在原点处要应用的最大伤害量。
    • DamageRadius - 存放了从原点处开始可以施加伤害的最大距离;在原点和这个距离之间缩放伤害量。
    • EventInstigator - 引用负责施加伤害的控制器。
    • DamageType - 存放了要施加的伤害的类型。
    • Momentum - 存放了赋予玩家的动力。
    • HitLocation - 存放了要应用的伤害的原点。在这个半径范围内施加完全伤害。
    • DamageCauser - 引用负责产生伤害的Actorimpart。
    • DamageFalloffExponent - 存放了伤害随着半径的衰减指数。默认值是1.0,进行线性衰减。
  • Destroy - 当载具被破坏时由引擎调用该项。
  • Destroyed_HandleDriver - 当载具被破坏来处理玩家的清除时调用该项。
  • TakeDamage [Damage] [EventInstigator] [HitLocation] [Momentum] [DamageType] [HitInfo] [DamageCauser] - 从父类继承而来。应用伤害给载具。使用DamageType 载具缩放值来调整到来的伤害量。
    • Damage - 存放了要产生的伤害量。
    • EventInstigator - 引用负责施加伤害的控制器。
    • HitLocation - 存放了要产生伤害的位置。 * Momentum - 存放了赋予载具的动力。
    • DamageType - 存放了要施加的伤害的类型。
    • HitInfo - 存放了导致伤害的碰撞的信息。
    • DamageCauser - 引用导致伤害的Actor。
  • AdjustDriverDamage [Damage] [InstigatedBy] [HitLocation] [Momentum] [DamageType] - 调整应用给驾驶员的输入伤害量。当驾驶员受到伤害时从驾驶员的Pawn类调用该函数。
    • Damage - 存放了要产生的伤害的原始量。
    • InstigatedBy - 引用负责该伤害的控制器。
    • HitLocation - 存放了导致伤害的碰撞的位置。
    • Momentum - 存放了赋予玩家的动力。
    • DamageType - 存放了要施加的伤害的类型。
  • DriverDied [DamageType] - 当载具的驾驶员在载具内死亡时该项用于处理Driver(驾驶员)和Controller(控制器)的清除。
    • DamageType - 存放了导致玩家死亡的伤害的类型。
  • NotifyDriverTakeHit [InstigatedBy] [HitLocation] [Damage] [DamageType] [Momentum] -

Display(显示)

  • GetDefaultCameraMode [RequestedBy] - 返回当玩家在载具内时要使用的默认相机模式。
    • RequestedBy - 引用请求相机模式的控制器,一般是载具的控制器。

Entry/Exit(进入/退出)

  • CanEnterVehicle [P] - 返回给定的Pawn是否可以进入这个载具,比如,如果由空余座位、Pawn具有控制器、Pawn没有驾驶另一个载具等。
    • P - 引用尝试放入到载具中的Pawn。
  • AnyAvailableSeat - 返回载具中是否有可用座位。
  • TryToDrive [P] - 返回给定pawn是否成功地变为了载具的驾驶员。
    • P - 引用要变成驾驶员的Pawn。
  • DriverEnter [P] - 除非给定的Pawn是死的,否则将该Pawn放置为载具的驾驶员,并返回是否放置成功。这里驾驶员的控制器变为了载具的控制器。
    • P - 引用要进入到载具的Pawn。
  • AttachDriver [P] - 强制地将驾驶员附加到载具上,并且如果bDriverIsVisible 为false则隐藏驾驶员。在Pawn类中由驾驶员在StartDriving()中调用。仅当bAttachDriver为true时执行。在所有客户端上调用。
    • P - 引用要附加的驾驶员。
  • DetachDriver [P] - 从载具中分离当前的驾驶员的函数存根。在Pawn类中由驾驶员在StopDriving()中调用。在所有客户端上调用。
  • GetExitRotation [C] - 返回驾驶员在退出载具时放置驾驶员所使用的旋转度。
    • C - 引用驾驶员的控制器。
  • DriverLeave [bForceLeave] - 当驾驶员项退出载具是从PlayerController 中调用该项。使驾驶员脱离载具,将驾驶员放置到世界中,并返正在由控制器处理的驾驶员。
    • bForceLeave - 如果该项为true,则强制让驾驶员从载具中出来,即使没有找到纺织驾驶员的合适位置也要让其出来。将驾驶员放置到载具的GetTargetLocation()位置处。
  • DriverLeft - 清除Driver(驾驶员)并设置bDriving为false。
  • PlaceExitingDriver [ExitingDriver] - 当玩家退出载具时尝试找到合适的位置来放置玩家,并返回是否放置成功。
    • ExitingDriver - 可选项。引用退出载具的Actor。如果没有指定该项则使用Current Driver(当前的驾驶员)。
  • FindAutoExit [ExitingDriver] - 尝试在载具的前、后、右侧、左侧查找退出位置,并返回查找是否成功。
    • ExitingDriver - 引用退出载具的驾驶员。
  • TryExitPos [ExitingDriver] [ExitPos] [bMustFindGround] - 测试由FindAutoExit()生成的每个单独的退出位置并返回是否可以将驾驶员放到那个位置处。
    • ExitingDriver - 引用退出载具的驾驶员。
    • ExitPos - 存放要测试的退出位置。
    • bMustFindGround - 如果该项为true,查找地面的跟踪必须碰到某物才算测试成功。
  • GetEntryLocation - 返回载具的入口位置。默认是载具的位置。

Movement(运动)

  • SetInputs [InForward] [InSrafe] [InUp] - 提供一个接口,供手动地设置载具的Rise、Steering和Throttle的值。
    • InForward - 存放了载具的新的Throttle值。
    • InStrafe -存放了载具的新的Steering 值。
    • InUp - 存放了载具的新Rise 值。
  • SetDriving [b] - 设置载具的驾驶状态bDriving。
    • b - 存放载具的新的驾驶状态。
  • DrivingStatusChanged - 当驾驶动作改变时调用该项,允许您执行任何必要的动作。默认是将Rise、 Steering和Throttle的值清零。
  • ZeroMovementVariables - 将Rise、Steering和Throttle的值清零。

SVehicle

SVehicle 类向载具系统引入了基于物理的刚体运动。它包含了支持具有车轮的载具的所有参数,并使用一个通用的仿真对象来创建不同类型的载具: 带轮子、可以飞行、可以悬浮、有踏板等的载具。

+
SVehicle属性 (点击查看)

Damage(伤害)

  • RadialImpulseScaling - 存放了由HurtRadius()函数产生的伤害施加给载具的冲力的缩放量。

Display(显示)

  • BaseOffset - 相机位置的基本向量偏移量。
  • CamDist - 沿着相机的局部X-轴从基础位置开始偏移相机的距离。
  • DriverViewPitch - 存放了用于LookToSteer的驾驶员的倾斜度。
  • DriverViewYaw - 存放了用于LookToSteer的驾驶员的偏转量。

Movement(运动)

  • SimObj - 处理了大部分载具仿真的SVehicleSimBase 对象。关更多信息,请参照SVehicleSimBase部分。
  • Wheels - SVehicleWheel 对象的数组,存放了每个轮子的参数(对于带有轮子的载具来说)。
  • COMOffset - 载具的质心位置,以局部空间坐标系为准。
  • InertiaTensorMultiplier - 这项用于缩放载具的惯性张量。该项影响载具围绕每个周旋转的难易程度,它是质量的角度等价物。
  • MaxSpeed - 允许载具运行的最大速度。
  • MaxAngularVelocity - 允许载具获得的最大角速度。
  • bUseSuspensionAxis - 如果该项为TRUE,那么和地面基础的轮子将总是让它的法线沿着悬架轴指回。如果该项为FALSE,那么车轮接触将使用它碰到的地面的表面法线。
  • HeavySuspensionShiftPercentage - 当调用 SuspensionHeavyShift() 函数时允许Suspension (悬架)移动的最大距离。

SVehicle也支持‘直立约束’。这是个弹力约束,当载具在到处运行时它用于保持载具直立,这对于某些盘旋的悬浮载具是有用的。

  • bStayUpright - 使用这种保持直立的世界约束。
  • StayUprightRollResistAngle - 载具抵制滚动的角度。
  • StayUprightPitchResistAngle - 载具抵制倾斜的角度。
  • StayUprightStiffness - 超过限定角度的直立弹簧的硬度。
  • StayUprightDamping - 超过限定角度的直立弹簧的阻尼。

如果载具翻转了,SVehicle支持通过使用以下设置将载具再次翻转回来。

  • bCanFlip - 如果载具能被玩家直立起来则该项为True。
  • UprightLiftStrength - 缩放在直立载具过程中应用到载具的举力。
  • UprightTorqueStrength - 缩放在直立载具过程中所应用到载具上的力矩。
  • UprightTime - 应用直立 力/力矩 的时间,以秒为单位。

Outputs(输出)

在SVehicle类中有很多‘output(输出)’参数,您可以在代码的其他地方使用这些输出。

  • bVehicleOnGround - 如果 任何 SVehicleWheel目前正在接触地面(忽略和底盘的接触等)则该项为true。
  • TimeOffGround - bVehicleOnGround设置为false的时间量。
  • bVehicleOnWater - 如果 任何 SVehicleWheel目前正在接触水则该项为true。
  • bIsInverted - 如果载具几乎上下颠倒则设置该项为True。
  • bChassisTouchingGround - 如果载具的地盘和地面之间有任何接触则该项为True。
  • bWasChassisTouchingGroundLastTick - 如果载具的地盘和地面的最后更新有任何接触则该项为True。

Sounds(声效)

  • EngineSound - 引擎运行的环境声效的AudioCompnent(音频组件)。音调根据RPMs进行调制。
  • SquealSound - 轮子振鸣声的AudioComponent (音频组件)。音量基于振鸣声的量进行调制。
  • CollisionSound - 当载具和其他物体发生碰撞时播放的SoundCue(音效)。
  • EnterVehicleSound - 当驾驶员进入载具时播放的SoundCue(音效)。
  • ExitVehicleSound - 当驾驶员退出载具时播放的SoundCue(音效)。
  • CollisionIntervalSeconds - 再次播放CollisionSound(碰撞声效)之前碰撞之间需要间隔的时间量,以秒为单位。
  • SquealThreshold - 滑动速度降低于多少时不会听到轮子振鸣声。
  • SquealLatThreshold - 侧向滑动速度低于多少时不会听到轮子振鸣声。
  • LatAngleVolumeMult - 侧向滑动振鸣声相对于直向滑动振鸣声的音量级别乘数。
  • EngineStartOffsetSecs - 引擎启动声效和引擎空转声效之间延迟的时间,以秒为单位。
  • EngineStopOffsetSecs - 引擎关闭声效和引擎空转声效减慢之间的时间,以秒为单位。

+
SVehicle 属性 (点击查看)

Display(显示)

  • CalcCamera [fDeltaTime] [out_CamLoc] [out_CamRot] [out_FOV] - 继承于Pawn。计算这个载具中玩家的相机的视口。
    • fDeltaTime - 自从上一次更新过去的时间量。
    • out_CamLoc - 存放当前的相机位置并输出新的相机位置。
    • out_CamRot - 存放当前相机的旋转度并输出新的相机旋转度。
    • out_FOV - 存放当前的视角并输出新的视角。

Entry/Exit(进入/退出)

  • TurnOff - 继承于Pawn。关闭声效、动画、物理等。

Movement(运动)

  • AddForce [Force] - 使用指定向量应用一个常量力。
    • Force - 一个向量,代表要应用的力的方向和强度。
  • AddImpulse [Impulse] - 使用指定向量应用一个冲力。
    • Impulse - 一个向量,代表要应用的冲力的方向和强度。
  • AddTorque [Torque] - 使用指定向量应用力矩(旋转力的方向)。
    • Torque - 一个向量,代表要应用的力矩的方向和强度。
  • AddVelocity [NewVelocity] [DamageType] [HitInfo] - 继承于Pawn。给载具添加一个指定速度。这里覆盖Pawn的版本是必要的,因为这里使用了刚体物理。
  • IsSleeping - 返回控制载具的物理的物理仿真是否是休眠状态。
  • HasWheelsOnGround - 返回载具的任何轮子是否当前正在接触地面。
  • SuspensionHeavyShift [Delta] - 当载具的悬架发生了大量移动时调用该项。
    • Delta - 存放了移动量。
  • PostTeleport [OutTeleporter] - 当载具已经被电传到更新位置等时调用该项。
    • OutTeleporter - 引用目标位置的teleporter (电传器)。

Collision(碰撞)

  • SetWheelCollision [WheelNum] [bCollision] - 打开或关闭载具指定轮子的碰撞。
    • WheelNum - 要针对其修改碰撞设置的Wheels数组中轮子的索引。
    • bCollision - 如果该项为true,则在轮子上启用碰撞。否则,禁用碰撞。
  • RigidBodyCollision [HitComponent] [OtherComponent] [RigidCollisionData] [ContactIndex] - 当引擎的刚体和另一个对象碰撞时调用该项。播放 CollisionSound 声效。
    • HitComponent - 引用发生碰撞的载具的组件。
    • OtherComponent - 引用和载具组件发生碰撞的另一个对象的组件。
    • RigidCollisionData - 存放关于碰撞的数据。
    • ContactIndex - 存放碰撞接触点的索引。

网格物体和动画

  • PostInitAnimtree [SkelComp] - 当初始完动画树后由引擎调用该项。如果载具有轮子则获得并设置到载具的动画树中的SkelControlWheel控制器的引用。
    • SkelComp - 引用初始化了其动画树的SkeletalMeshComponent(骨架网格物体组件) 。

物理

  • InitVehicleRagdoll [RagdollMesh] [RagdollPhysAsset] [ActorMove] [bClearAnimtree] - 将使用单独刚体作为物理的载具转换为使用完全的、有关节的、类似于布娃娃的骨架作为物理的载具。
    • RagdollMesh - 包含完整骨架的新的骨架网格物体。
    • RagdollPhysAsset - 新骨架网格物体的物理资源。
    • ActorMove - 用于在变换过程中平移载具的向量。可以用于避免布娃娃网格物体插入到地面中。
    • bClearAnimtree -如果该项为true,则清除到载具的当前动画树的引用。

Sounds(声效)

  • StopVehicleSounds - 从TurnOff()中调用该函数。停止播放引擎声效和振鸣声的音频组件。
  • StartEngineSound - 开始播放引擎声效音频组件。
  • StartEngineSoundTimed - 启动一个计时器,在EngineStartOffsetSecs秒过后开始播放引擎声效音频组件。
  • StopEngineSound - 停止播放引擎声效音频组件。
  • StopEngineSoundTimed - 启动用一个计时器,在EngineStartOffsetSecs秒过后开始播放引擎声效音频组件。
  • VehiclePlayEnterSound -播放EnterVehicleSound声效并调用StartEngineSoundTimed()函数。
  • VehiclePlayExitSound - 播放ExitVehicleSound并调用StopEngineSoundTimed()。

UDKVehicleBase

UDKVehicleBase类继承于SVehicle,添加了对多座位载具的支持,并且可以携带游戏对象,比如vCTF游戏中的旗帜。

+
UDKVehicleBase 属性 (点击查看)

Entry/Exit(进入/退出)

  • bShouldEject - 如果该项为true,那么当驾驶员退出载具时驾驶员将会被弹出。如果需要弹出当前驾驶员则设置该项。

+
UDKVehicleBase 函数 (点击查看)

AI

  • NeedToTurn [Targ] - 继承于Pawn。返回AI是否需要转身来面向某个特定位置或者超某个特定位置射击。
    • Targ - 存放了要 朝向/向其开火 的位置。

Entry/Exit(进入/退出)

  • SwitchWeapons [NewGroup] - 由SwitchWeapon() 可执行函数中的UTPlayerController 调用来切换玩家的当前座位位置(默认使用键盘上的数字键操作)。
    • NewGroup - 存放了要切换到的 组/座位。作为索引是NewGroup - 1。
  • ServerChangeSeat [RequestedSeat] - 在服务器上调用。一个函数存根,用于在所有客户端上同步座位改变信息。子类需要重载这个类。
    • RequestedSeat - 存放了要切换到的座位索引。
  • AdjacentSeat [Direction] [C] - 在客户端上调用。要求换到载具中相邻的座位上。
    • Direction - 存放了要移动的方向。-1 指前一个座位。1 指下一个座位。
    • C - 引用改变座位的玩家的控制器。
  • ServerAdjacentSeat [Direction] [C] - 在服务器上调用。一个函数存根,用于将玩家移动到邻接座位上。子类需要重载这个类。
    • Direction - 存放了要移动的方向。-1 指前一个座位。1 指下一个座位。
    • C - 引用改变座位的玩家的控制器。
  • EjectDriver - 以高速将玩家从载具中弹出。由DriverLeft()函数调用。

GamePlay(游戏性)

  • HoldGameObject [GameObj] - 由引擎调用的函数存根,用于将GameObject附加到载具上。子类需要重载这个类。
    • GameObj - 引用要附加到载具上的GameObject 。

UDKVehicle

UDKVehicle类添加了对载具武器的基本支持,同时开始引入了灵活的系统,以便播放不同的动画、粒子特效及声效。它也可以使用顶点变形目标来显示针对特定位置的损坏。

关于所添加的某些子系统的更多信息,请参照以下部分:

+
UDKVehicle 属性 (点击查看)

AI

  • ObjectiveGetOutDist - 当AI控制载具时,有一个需要除非的目标但是不能通过载具本身进行触发,那么AI将尝试从载具中出来这么远的距离。
  • bUseAlternatePaths - 如果该项为true,那么AI将考虑使用它的队伍的可替换路径到达目标。如果载具需要绕路的地方将会非常麻烦(很慢),否则如果载具足够强大而不必绕路,那么应该设置该项为false。

Damage(伤害)

  • BurnOutMaterialInstances - 当载具死亡或者变为燃烧的金属废壳时,将会使用这个材质实例和相关数据来替换网格物体的正常材质。
  • FireDamageThreshold - Health / MaxHealth的比率, 当达到这个值将会导致载具着火并开始受到火力的持续伤害。
  • FireDamagePerSec - 当着火后每秒钟所产生的伤害。
  • AccruedFireDamage - 到目前为止所造成的火力伤害。
  • UpsideDownDamagePerSec - 当载具上下颠倒及没人占领时每秒所受到的伤害量。
  • OccupiedUpsideDownDamagePerSec - 当载具上下颠倒并有人占领时每秒所受到的伤害量。
  • WaterDamage - 当载具被淹没时每秒所受到的伤害量。
  • bTakeWaterDamageWhileDriving - 如果该项为true,那么当驾驶载具时将会受到水力伤害。
  • AccumulatedWaterDamage - 自从上一次调用 TakeWaterDamage() 来应用伤害后所产生的水力伤害量。
  • DestroyOnPenetrationThreshold - 在销毁载具之前所允许的最大穿透量。
  • DestroyOnPenetrationDuration - 在销毁载具之前允许超过DestroyOnPenetrationThreshold的最大穿透时间量。
  • KillerController -引用负责销毁载具的控制器。
  • MinRunOverSpeed - 载具撞上另一个玩家并产生伤害的所需的最小运行速度。

Display(显示)

  • TeamBeaconMaxDist - 当超出该最大距离将显示团队灯塔。
  • bShowLocked - 如果该项为true,那么将会在HUD上针对这个载具描画 "No Entry(没有入口)" 标识。
  • bTeamLocked - 如果该项为true,那么仅在同一团队中的玩家可以进入载具。
  • ShowLockedMaxDist - 从载具距离相机最大距离为多远时显示锁定标识符。

* Effects(特效)

  • VehicleEffects - VehicleEffect数据结构体数组,包含了载具使用的各种粒子特效的信息。
  • WheelParticleEffects - 针对材质的粒子特效数组,应用于所有设置bUseMaterialSpecificEffects 为true的附加UDKVehicleWheels上。
  • MaxWheelEffectDistSq - 当车轮距离载具最大距离为多远时仍然播放声效和粒子特效。
  • GroundEffectIndices - VehicleEffects数组的索引的数组,指出了用作为地面特效的特效,或者指出了当载具在距离某个特定距离内时所显示的特效。
  • MaxGroundEffectDist - 载具距离地面最大距离为多远时仍然显示地面特效。
  • GroundEffectDistParamName - 控制特效强度的地面特效粒子系统中的参数的名称。该项将会被设置为0.0到1.0之间的值,该值是CurrentGroundDist / MaxGroundEffectDist的结果。
  • WaterGroundEffect - 当载具在水上时水面特效所使用的粒子系统。
  • WaterEffectType - 代表水的材质类型的名称。如果当前的地面接触材质类型和该名称相匹配,那么则切换到水面特效。
  • ContrailEffectIndices - 到VehicleEffects数组的索引的数组,指出了要飞行云的特效。
  • ContrailColorParamName - 在飞行云粒子系统中用于设置颜色的参数的名称。传入到这个参数的值是依赖于载具速度的。
  • HoverboardDust - 在悬滑板下播放的特效的ParticleSystemComponent (粒子系统组件)。

Entry/Exit(进入/退出)

  • bEjectKilledBodies - 如果该项为true,那么当载具的驾驶员死亡时它将会被弹出或者被作为布娃娃。否则,将立即销毁它。
  • bEjectPassengersWhenFlipped - 如果该项为true,那么如果载具翻了将会弹出包括驾驶员在内的所有乘客。
  • Seats - VehicleSeats数组,包含了用于为载具的玩家构建各种座位 和/或 提供各种武器的信息。请参照载具座位和武器部分获得更多信息。
  • bAllowedExit - 如果该项为true,那么则允许驾驶员离开载具。

Gameplay(游戏性)

  • Team - 这个载具当前所处的团队。

网格物体和动画

  • VehicleAnims - VehicleAnim数组,包含了关于当发生某些事件时在载具上播放的各种动画的信息。请参照载具动画部分获得更多信息。
  • DrivingAnim - 当驾驶员可见及正在驾驶时要在Driver(驾驶员)上播放的动画的名称。
  • DamageParamScaleLevels - 将伤害材质参数名称映射到缩放因数的数组。这个参数值通过获得当前伤害顶点变形目标的生命值比率(CurrentHealth / DefaultHealth)来设置。这允许缩放0.0到1.0的值,以便使得它们适合材质中参数的应用。
  • DamageSkelControls - 载具的动画树中的伤害骨架控制器数组。
  • DamageMorphTargets - 用于控制伤害系统的伤害顶点变性目标结构体的数组。
  • DamageMaterialInstance - 到从载具的材质中动态地创建的材质实例的引用,该材质实例应用到载具上,允许访问伤害参数。

Movement(运动)

  • bNoZDampingInAir - 如果该项为true,那么当载具在空中时载具速度的Z-分量将不会应用阻尼。
  • bNoZDamping - 如果该项为true,那么当载具在地面上时载具速度的Z-分量将不会应用阻尼。
  • bIsDisabled - 如果该项为true,那么将会禁用载具。
  • bJostleWhileDriving - 如果该项为true,那么将会给载具应用个随机冲力来模拟真实的悬停。通常用于空中载具。
  • bFloatWhenDriven - 如果该项为true,那么载具将使用重力 Z-值 -1.0来模拟浮动。用于飞行的载具。
  • CustomGravityScaling - 针对载具的重力Z-值的乘数,允许自定义单独载具上的重力。
  • bDisableRepulsorsAtMaxFallSpeed - 如果该项为 true,当载具的负Z速度大于Driver(驾驶员)的MaxFallSpeed 值,将禁用载具的repulsor(反重力器)。

Sounds(声效)

  • TireAudioComp - 用于播放轮胎声效的AudioComponent。
  • TireSoundList - MaterialSoundEffects(材质声效)数组,当轮胎使用不同类型的材质时播放不同的声效。
  • CurrentTireMaterial - 存放了轮胎当前的材质类型。
  • ScrapeSound - 当载具的躯体刮擦到某个对象时使用这个AudioComponent来播放刮擦声。
  • VehicleSounds - VehicleSound数据结构体数组,包含了针对各种事件要播放的SoundCue。
  • LargeChunkImpactSound - 当载具受到力度大于20000的力影响时要播放的声效。
  • MediumChunkImpactSound - 当载具受到力度大于4000的力影响时要播放的声效。
  • SmallChunkImpactSound - 当载具受到力度大于1000的力影响时要播放的声效。

Weapons(武器)

  • bHomingTarget - 如果该项为true,那么这载具可以锁定自导式武器。
  • WeaponRotation - 载具的主要武器的当前旋转度。

+
UDKVehicle 函数 (点击查看)

AI

  • JumpOutCheck - 当载具向它的目的地下降时调用该函数存根,允许机器人有机会跳出载具。子类需要重载这个类。

Collision(碰撞)

  • OnTouchForcedDirVolume [Vol] - 通知载具它已经碰到一个ForcedDirVolume。在这个函数中返回false将会导致载具忽略该体积。
    • Vol - 引用所接触的ForcedDirvolume 。

Damage(伤害)

  • GetRanOverDamageType - 返回当使用这个载具撞倒某人时所使用的伤害类型。
  • LockOnWarning [IncomingMissile] - 警告载具的司机有个自导式武器正在来临。
    • IncomingMissile - 引用锁定到载具上的射弹。
  • ReceivedHealthChange - 当客户端接收到载具的生命值的改变时由引擎调用该函数存根。子类需要重载这个类。
  • CheckAutoDestruct [InstigatorTeam] [CheckRadius] - 返回载具是否应该自动销毁,也就是,如果它足够低接近敌人或目标的时候。
    • InstigatorTeam - 启动自动销毁的玩家的TeamInfo(团队信息)。
    • CheckRadius - 载具距离某物多近时才进行自动销毁。
  • SelfDestruct [ImpactedActor] - 当载具应该自动销毁时引擎所调用的函数存根。子类需要重载这个类。
    • ImpactedActor - 引用由自动销毁导致受到完全伤害的Actor。
  • RBPenetrationDestroy - 当发生大量穿透时销毁载具。
  • TakeWaterDamage - 当载具受到水力伤害时在每次更新中引擎会调用该函数存根。子类需要重载这个类。
  • TakeFireDamage - 当载具受到火力伤害时引擎会调用该函数存根。子类需要重载这个类。

Display(显示)

  • NativePostRenderFor [PC] [Canvas] [CameraPosition] [CameraDir] - 允许载具描画HUD覆盖层。一般描画锁定图标。
    • PC - 引用本地玩家控制器。
    • Canvas - 引用当前画布以进行描画。
    • CameraPosition - 存放了玩家相机的当前位置。
    • CameraDir - 存放了玩家相机正面向的当前方向。
  • SetHUDLocation [NewHUDLocation] - 设置在HUD上描画载具图标的位置。
    • NewHUDLocation - 存放描画图标的位置(向量的X 和 Y分量)。

* Effects(特效)

  • PlayTakeHitEffects - 当载具受到撞击时由引擎调用该函数存根播放碰撞特效。子类需要重载这个类。
  • UpdateHoverboardDustEffect [DustHeight] - 引擎调用该函数存根来更新悬滑板灰尘特效。子类需要重载这个类。
    • DustHeight - 存放了悬滑板在地面上方的高度。

Gameplay(游戏性)

  • GetTeamNum - 返回载具的团队编号。
  • InUseableRange [PC] [Dist] - 返回载具是否在将要使用的范围内。
    • PC - 引用尝试使用这个载具的玩家控制器。
    • Dist - 存放了玩家距离载具的距离。

网格物体和动画

  • InitDamageSkel - 使用载具动画树种的伤害骨架控制器来填充 DamageSkelControls 数组。
  • UpdateDamageMaterial - 当伤害系统更新生命值时更新应用到载具上的任何材质。
  • ApplyMorphDamage [HitLocation] [Damage] [Momentum] - 应用碰撞伤害给伤害系统来修改顶点变形目标。
    • HitLocation - 存放了碰撞发生的位置。
    • Damage - 存放了所产生的伤害量。
    • Momentum - 存放了伤害所施加的动力。
  • MorphTargetDestroyed [MorphNodeIndex] - 当一个伤害节点被销毁时由引擎调用这个函数存根(由于ApplyMorphDamage的结果)。
    • MorphNodeIndex - 存放了被销毁的节点的DamageMorphTargets数组中的索引。

物理

  • PostInitRigidBody [PrimComp] - 当刚体仿真初始化完成时由引擎调用该函数存根,允许载具执行任何必要的物理初始化。子类需要重载这个类。
    • PrimComp - 引用为其初始化刚体物理的图元组件。

Weapons(武器)

  • SeatWeaponRotation [SeatIndex] [NewRot] [bReadValue] - 获得或设置特定座位的武器旋转度。
    • SeatIndex - 存放座位的索引。
    • NewRot - 可选项。为座位的武器旋转度设置的新的旋转度值。
    • bReadValue - 如果该项为true,则返回座位的武器旋转度。否则,设置座位的武器旋转度为NewRot。
  • SeatFlashLocation [SeatIndex] [NewLoc] [bReadValue] - 获得或设置特定座位的射击闪光位置。
    • SeatIndex - 存放座位的索引。
    • NewLoc - 可选项。为座位的射击闪光位置设置的新的位置值。
    • bReadValue - 如果该项为true,则返回座位的射击闪光位置。否则,设置座位的射击闪光位置为NewLoc。
  • SeatFlashCount [SeatIndex] [NewCount] [bReadValue] - 获得或设置指定座位的射击闪光数量。
    • SeatIndex - 存放座位的索引。
    • NewCount - 可选项。为座位的闪光位置设置的新的射击闪光数量。
    • bReadValue - 如果该项为true,则返回座位的射击闪光数量。否则,设置座位的射击闪光数量为NewCount。
  • SeatFiringMode [SeatIndex] [NewFireMode] [bReadValue] - 获得或设置置顶座位的开火模式。
    • SeatIndex - 存放座位的索引。
    • NewFireMode - 可选项。为座位的开火模式设置的新开火模式。
    • bReadValue - 如果该项为true,则返回座位的开火模式。否则,设置座位的开火模式为NewFireMode。
  • ForceWeaponRotation [SeatIndex] [NewRotation] - 强制设置指定座位的武器旋转度为新的旋转度。通常当产生载具时由载具工厂使用。
    • SeatIndex - 存放座位的索引。
    • NewRotation - 设置座位的新的武器旋转度的值。
  • GetSeatPivotPoint [SeatIndex] -返回特定座位的支点。
    • SeatIndex - 存放座位的索引。
  • GetBarrelIndex [SeatIndex] - 返回特定座位当前正在使用的枪管的索引,或者已经全部射完。
    • SeatIndex - 存放座位的索引。

UTVehicle

UTVehicle类实现了载具的大部分游戏性功能并真正实现了载具事件系统的大部分功能以便播放动画、特效及声效。这个类也包含了大量的针对游戏机平台功能以便控制载具。

+
UTVehicle 属性 (点击查看)

AI

  • bKeyVehicle - 如果该项为true,那么认为这个载具对AI来说更加重要。同时,在迷你地图上显示了载具。
  • AIPurpose - 指出了AI应该针对哪类任务使用这个载具。
    • AIP_Offense - 该载具应该仅用于攻击或进攻行为。
    • AIP_Defense - 该载具应该仅用于防御行为。
    • AIP_Any - 该载具可以用于任何目的。
  • bShouldLeaveForCombat - 如果该项为true,那么当AI遇到敌人时它们将离开这个载具。
  • MaxDesireability - 决定了AI对这个载具的需要程度。
  • HornAIRadius - 距离载具的距离,当在这个距离之内时AI将会通过尝试进入载具中的任何可用座位对喇叭做出反应。
  • Reservation - 引用将要进入载具的AI;防止多个AI敌人进入到同一个载具内。

Camera(相机)

  • bShouldAutoCenterViewPitch - 如果该项为true,那么当玩家在载具内时载具将会在玩家视图内自动居中。
  • SeatCameraScale - 针对座位的相机偏移量的乘数。
  • bRotateCameraUnderVehicle - 如果该项为true,那么将允许相机在载具下旋转,从而潜在地模糊玩家的视图。
  • bNoZSmoothing - 如果该项为true,那么延迟的相机将会平滑它的Z-位置,从而产生颠簸的效果。
  • bLimitCameraZLookingUp -如果该项为true,那么当向上查看时相机将总是位于载具的上方,从而避免当飞行载具再向上运行时出现剪辑现象。
  • bNoFollowJumpZ - 如果该项为true,那么当自居”跳跃“时将不会改变相机的Z-位置,从而产生更加具有动态效果的跳动。
  • CameraSmoothingFactor - 平滑延迟的相机所使用的平滑比例。较高的值将会导致较短的平滑次数。
  • DefaultFOV - 载具中乘客使用的默认视角。
  • CameraLag - 延迟相机的时间量。
  • LookForwardDist - 当向下查看载具的前面地方时将相机向前移动的距离。
  • MinCameraDistSq - 除非bCameraNeverHidesVehicle为true,否则该项指出了相机距离载具的距离的开平方值为多少时开始隐藏载具。
  • bCameraNeverHidesVehicle - 如果该项为true,那么无论相机距离载具多么近都永远不会隐藏载具。
  • bStopDeathCamera - 如果该项为true,那么则阻止深度相机使用死亡对象上保存的旧的相机位置。

Damage(伤害)

  • bValidLinkTarget - 如果该项为true,那么该载具可以通过Link Gun进行治愈。
  • LinkHealthMult - 如果该项大于0,那么Link Gun对该载具所施加的治愈量是这个值乘以Link Gun伤害量的结果。
  • LinkedToCount - 当前连接到该载具的Link Gun的数量。
  • RanOverDamageType - 该载具撞到的玩家导致的伤害的伤害类型。
  • VehicleDrowningDamageType - 当载具沉没到水中受到的伤害所使用的伤害类型。
  • ClientHealth - 伤害系统中顶点变形目标的客户端侧的伤害量。当接收到该值时,可以使用它来调整所复制的Health值。
  • ExplosionDamageType - 由于载具爆炸所导致的伤害所使用的伤害类型。
  • ExplosionDamage - 载具爆炸所导致的伤害量。
  • ExplosionRadius - 载具爆炸导致的伤害所处的半径。
  • ExplosionMomentum - 载具爆炸所施加的冲力量。
  • ExplosionInAirAngVel - 当载具在空中爆炸时给载具应用的旋转量。
  • CollisionDamageMult -当载具和其他刚体发生碰撞时所导致的伤害的乘数。
  • bReduceFallingCollisionDamage - 如果该项为true,那么当载具和它下面的刚体发生碰撞时将会降低碰撞伤害。

Display(显示)

  • bHasWeaponBar - 如果该项为true,那么该载具的武器条将会描画在HUD上。
  • bDrawHealthOnHUD - 如果该项为true,那么除了将玩家的生命值显示到HUD上外载具的生命值也将会显示到HUD上。
  • bDriverCastsShadow - 如果该项为true,那么玩家的网格物体应该总是投射阴影。
  • bDropDetailWhenDriving - 如果该项为true,那么除非游戏当前正处于超高级细节模式中,否则当本地玩家驾驶该载具时将会导致载具的细节质量下降。
  • LightEnvironment - 该载具为动态阴影使用的DynamicLightEnvironment(动态光照环境)。
  • TeamBeaconPlayerInfoMaxDist - 玩家信息中将会显示到达相机的最大距离。
  • HUDExtent - 如果决定瞄准十字准线是否在载具上面的缩放因数。
  • MapSize - 在迷你地图上描画该载具的图标的比例。
  • IconCoords - 该载具的图标的图标贴图中的坐标。
  • FlipToolTipIconCoords - 载具的翻转工具提示信息图标的图标贴图中的坐标。
  • EnterToolTipIconCoords - 载具的进入工具提示信息图标的图标贴图中的坐标。
  • DropFlagIconCoords - 这个载具的下降标志图标的图标贴图中的坐标。
  • DropOrbIconCoords - 该载具的下降球图标的图标贴图中的坐标。
  • bPostRenderTraceSucceeded - 如果该项为true,那么说明描画后期处理HUD图标的最后的线性检测成功。
  • TeamBeaconOffset - 显示信息所使用的距离载具位置的偏移量,比如‘锁定’图标。
  • PassengerTeamBeaconOffset - 显示乘客图标所使用的距离载具位置的偏移量。
  • HUDIcons - 包含了该载具要在HUD上描画的图标的贴图。

* Effects(特效)

  • ExplosionLightClass - 爆炸效果所使用的光源类。
  • MaxExplosionLightDistance - 创建爆炸光时爆炸可以距离相机的最大距离。
  • bInitializedVehicleEffects - 如果该项为true,那么则已经附加了载具特效。
  • DeathExplosion - 引用爆炸毁灭时所产生的Emitter(发射器),以便当发生燃烧殆尽时可以禁用它。
  • TimeTilSecondaryVehicleExplosion - 初始载具爆炸之后等待多长时间才播放第二次爆炸(假设由于某些其他因素还没有播放该爆炸)。
  • DamageSmokeThreshold - 载具开始播放烟雾特效的生命值比(Health / HealthMax)。
  • MaxImpactEffectDistance - 当距离相机距离最大为多少时碰撞冲力产生特效。
  • MaxFireEffectDistance - 当距离相机的最大距离为多少时将显示载具的火力特效。
  • ExplosionTemplate - 当载具爆炸时要显示的ParticleSystem(粒子系统)。
  • BigExplosionTemplate - 根据本地玩家距离该载具爆炸的距离来播放爆炸特效时所使用的ParticleSystems和最小距离数组。
  • SecondaryExplosion - 针对载具的第二次爆炸播放的ParticleSystem(粒子系统)。 在初始爆炸之后播放或者当初始爆炸之后载具下降并和地面产生碰撞时播放。
  • BigExplosionSocket - 附加到爆炸的插槽的名称。如果该项为‘None’,那么将不会附加大爆炸。
  • BurnOutTime - 将载具烧尽所需的时间量。
  • BurnTimeParameterName - 控制燃烧特效所使用的材质参数的名称。
  • BurnOutMaterial - 为燃烧殆尽网格物体所使用的针对特定团队的材质的数组。
  • DeadVehicleLifeSpan - 载具燃烧殆尽之前应该过去的时间量。
  • DelayedBurnoutCount - 已经显示的燃烧殆尽效果的次数。
  • bHasTurretExplosion - 如果该项为true,那么当载具死亡时将会播放炮塔爆炸序列。
  • TurretScaleControlname - 用于将炮塔缩放为0所使用的炮塔控制器的名称。
  • TurretSocketname - 当炮塔爆炸时产生爆炸特效的插槽的名称。
  • DistanceTurretExplosionTemplate - 基于玩家距离爆炸的本地距离播放不同的炮塔爆炸效果所使用的ParticleSystems(粒子系统)和最小距离数组。
  • SpawnInTemplate - 当载具在世界中生成时要播放的针对特定团队的粒子系统数组。
  • SpawnMaterialLists - 当载具在世界中生成时他所使用的针对特定团队的材质的数组。
  • SpawnMaterialParameterName - 产生材质中所使用的材质参数的名称。
  • SpawnMaterialParameterCurve - 用于控制生成材质参数的值的曲线信息。
  • SpawnInTime - 完成产生特效所需的时间量。
  • bPlayingSpawnEffect - 如果该项为true,则正在生成特效。
  • DisabledTemplate - 当载具变为禁用状态时所播放的粒子系统。
  • DisabledEffectComponent - 播放禁用的特效所使用的ParticleSystemComponent (粒子系统组件)。

Entry/Exit(进入/退出)

  • bEnteringUnlocks - 如果该项为true,那么当玩家进入载具时载具将会解锁。
  • bHasCustomEntryRadius - 如果该项为true,那么载具应该使用专用的入口半径规则(定义在InCustomEntryRadius()函数中)来决定玩家是否可以进入。
  • bMustBeUpright - 如果该项为true,那么为了能进入载具它必须是竖立的。
  • bHasBeenDriven - 如果该项为true,那么说明这个载具自从生成后已经驾驶了一段时间。
  • bFindGroundExit - 如果该项为true,那么离开载具的乘客的退出位置必须在固体地面附近。
  • bRequestedEntryWithFlag - 如果该项为true,那么玩家尝试握着旗帜进入到不允许旗帜的载具中。
  • PassengerPRI - 引用乘客炮塔中玩家的 PlayerReplicationInfo (比如,座位 1).

Gameplay(游戏性)

  • bDriverHoldsFlag - 如果该项为true,那么载具的驾驶员将具有旗帜,如果正携带旗帜则将旗帜附加到载具上。
  • bCanCarryFlag - 如果该项为true,则允许玩家携带旗帜进入到该载具。
  • NoPassengerObjective - 引用一个目标,当该目标是AI的当前目标时,它们将不会尝试进入该载具。
  • bOverrideAVRiLLocks - 如果该项为true,该载具可以覆盖AVRiL火箭的瞄准目标锁定。
  • RespawnTime - 当该载具被销毁后重新生成该载具所需要的时间量。
  • InitialSpawnDelay - 在第一次生成该载具之前游戏必须已经开始的时间量。
  • NextVehicle - 引用载具链表中的下一个载具。链表中的第一个载具由UTgame类的VehicleList属性引用。
  • ParentFactory - 引用生成该载具的UTVehicleFactory 。
  • VehiclePositionString - 本地化。用于显示 [VehicleName]信息中存放的文本的字符串。在本地化文件中设置。
  • VehicleNameString - 本地化。. 存放载具可读名称的字符串。在本地化文件中设置。
  • TeamMaterials - 载具所使用的针对特定团队的材质的数组。
  • SpawnRadius - 决定了载具产生点周围的安全局域的半径。这个区域必须在Pans的外面,以便生成载具。
  • FlagOffset - 当将旗帜附加到载具上时放置旗帜时所使用的距离旗帜骨骼的偏移量。
  • FlagRotation - 当将旗帜附加到载具上时旋转骨骼所使用的距离旗帜骨骼的偏移量。
  • FlagBone - 载具骨架上用于附加旗帜的骨骼的名称。

网格物体和动画

  • VehiclePieceClass - 用于生成爆炸的载具碎片的类。
  • DeathExplosionShake - 在该载具爆炸附近的玩家相机上播放的CameraAnim(相机动画)。
  • InnerExplosionShakeRadius - 相机抖动可以具有完全强度时相机距离爆炸的最大距离。强度从这个距离开始到OuterExplosionShakeRadius之间进行衰减。
  • OuterExplosionShakeRadius - 爆炸相机抖动强度达到0时的距离。
  • TurretOffset - 生成破毁的炮塔时距离炮塔插槽的偏移量。
  • DestroyedTurret - 引用破毁的炮塔以播放死亡特效。
  • DestroyedTurretTemplate - 当炮塔销毁时要产生的静态网格物体。
  • TurretExplosiveForce - 应用给炮塔爆炸的力的强度。
  • ReferenceMovementMesh - 载具座位的运动特效(比如,Cicada中移动的云)所使用的静态网格物体。

Movement(运动)

  • bStickDeflectionThrottle - 如果该项为true,那么当使用游戏机控制器时则使用摇杆偏斜量(摇杆移动量)来决定油门量。
  • DeflectionThrottleReverseThresh - 当使用摇杆倾斜来控制油门时,这个值是在载具进入倒退状态时摇杆在Y-轴上必须拉回的量。
  • bLookSteerOnNormalControls - 如果该项为true,那么当使用‘Normal(正常)’载具控制设置时将会使用'look to steer(面向驾驶)'控制。
  • bLookSteerOnSimpleControls - 如果该项为true,那么当使用‘Simple(简单)’载具控制设置时将会使用'look to steer(面向驾驶)'控制。
  • bUsingLookSteer -如果该项为true,则载具当前正在使用'look to steer(面向驾驶)' 控制。
  • LeftStickDeadZone - 为了使得载具转向,左侧摇杆必须移动的量;从而使得静止驾驶更加容易。
  • LookSteerSensitivity - 决定了当使用”look to steer(面向驾驶)“时‘looking(查看)’、‘facing(面向)’及驾驶角度之间的关系。
  • LookSteerDamping - 当使用‘look to steer’控制时应用到载具的加速度的阻尼以减少它对驾驶的影响。
  • LookSteerDeadZone - 当 'look to steer'控制时为了使得载具转向摇杆必须移动的量。
  • ConsoleSteerScale - 该乘数可以增加控制器中心区域的驾驶敏感度。

物理

  • DrivingPhysicalMaterial - 当驾驶载具时载具所使用的物理材质。
  • DefaultPhysicalMaterial - 当没有驾驶载具时载具所使用的物理材质。

Sounds(声效)

  • VehicleLockedSound - 当载具锁着而玩家尝试进入该载具时要播放的SoundCue (音效)。
  • LinkedToAudio - 当玩家使用Link Gun连接到该载具时播放音效所使用的AudioComponent (音频组件)。
  • LinkedToCue - 当玩家使用Link Gun连接到该载具时要播放SoundCue (音效)。
  • LinkedToEndSound - 当道这个载具的连接断开时要播放的SoundCue(音效)。
  • HornSounds - 用作为该载具的喇叭的SoundCue数组。
  • LockedOnSound - 当某些东西(比如自导式射弹)锁定到该载具上时要播放的SoundCue。
  • RanOverSound - 当载具撞到某人时要播放的SoundCue(声效)。
  • StolenAnnouncementIndex - UTVehicle类中的MessageAnnouncements(消息通知)数组中的索引,当有”抢劫“发生时针对该载具播放该索引所指的通知。
  • StolenSound - 当有人盗取载具时播放的SoundCue(声效)。
  • ExplosionSound - 当载具爆炸时播放的SoundCue(声效)。
  • SpawnInSound - 当在世界中生成载具时所播放的SoundCue (声效)。
  • SpawnOutSound - 当载具燃烧时所播放的SoundCue (声效)。
  • BoostPadSound - 当载具通过加速垫上时所播放的SoundCue (声效)。

+
UTVehicle函数 (点击查看)

AI

  • SetKeyVehicle - 设置该载具为重要载具。
  • HasOccupiedTurret - 返回是否所有乘客座位都被占用。
  • TooCloseToAttack [Other] - 返回对于AI来说给定的Actor是否太近以至于不能攻击。
    • Other - 引用要检测的Actor。
  • BotDesireability [S] [TeamIndex] [Objective] - 返回对AI来说该载具的渴求程度或有用程度。
    • S - 引用渴求该载具的AI。
    • TeamIndex - AI所在的团队。
    • Objective - 引用AI的目标。
  • SetReservation [C] - 设置给定AI预留载具。
    • C - 引用预留载具的AI。
  • ShouldLeaveForCombat [B] - 返回当AI遇到敌人时AI是否应该离开载具。
    • [B] - 引用AI控制器。

Camera(相机)

  • ProcessViewRotation [DeltaTime] [out_ViewRotation] [out_DeltaRot] - 给载具提供一个机会来为相机修改这个架构的视图旋转改变。
    • DeltaTime - 自从上一次更新所过去的时间量。
    • out_ViewRotation - 存放了当前的视图旋转度,并输出更新的视图旋转度。
    • out_DeltaRot - 存放了旋转度中的当前改变并在旋转度中输出更新的改变。
  • GetCameraFocus [SeatIndex] - 返回给定座位的相机聚焦位置,不考虑任何相机延迟。
    • SeatIndex - 获取其相机聚焦位置的座位的索引。
  • GetCameraStart [SeatIndex] - 返回考虑了相机延迟的给定座位的相机聚焦位置。
    • SeatIndex - 获取其延迟相机聚焦位置的座位索引。
  • VehicleCalcCamera [DeltaTime] [SeatIndex] [out_CamLoc] [out_CamRot] [CamStart] [bPivotOnly] - 计算给定座位的相机位置和旋转度。从 CalcCamera() 中调用。
    • DeltaTime - 自从上一次更新过去的时间。
    • SeatIndex - 为其计算相机位置及旋转度的座位的索引。
    • out_CamLoc - 输出参数。输出相机位置。
    • out_CamRot - 输出参数。输出相机旋转度。
    • CamStart -输出参数。输出添加了延迟的相机聚焦位置。
    • bPivotOnly - 可选项。

Collision(碰撞)

  • StopsProjectile [P] - 返回该载具是否应该可以“接触”给定射弹。
    • P - 引用要检测的射弹。
  • DisableCollision -

Damage(伤害)

  • GetRanOverDamage - 返回当载具撞到玩家时为其施加伤害所使用的伤害类型。
  • RanInto [Other] - 给可以从道路上移开的挡路Actors应用的伤害。
    • Other - 引用挡路的Actor。
  • BlowupVehicle - 当载具死亡导致载具爆炸时调用该项。
  • GetDisplayedHealth - 返回载具的生命值以便在HUD上描画。
  • HealDamage [Amount] [Healer] [DamageType] - 继承于Pawn。治愈载具,更新正在运行的伤害系统。
    • Amount - 要补充的生命值量。
    • Healer - 引用负责治愈载具的控制器。
    • DamageType - 治愈所使用的伤害类型。
  • GetHealth [SeatIndex] - 返回载具的当前生命值。
  • GetCollisionDamageModifier [ContactInfos] - 返回给定碰撞使用的伤害乘数。考虑是否应该降低下降伤害。
    • ContactInfos - 关于碰撞的信息。仅使用数组中的第一项。
  • InitializeMorphs - 设置到MorphNodes(顶点变形节点)的引用并在伤害系统中连接DamageMorphTargets(伤害顶点变形目标)的索引。
  • ReceivedHealthChange - 当载具的生命值发生改变时在客户端调用该项。更新伤害系统,给顶点变形目标应用伤害或者治愈顶点变形目标。
  • ApplyMorphHeal [Amount] - 给伤害系统顶点变形目标应用治愈。由于伤害建模是在客户端侧完成的,治愈处理是在服务器端完成的,所以我们知道哪个特定的节点是用于治愈的,所以治愈处理最终会应用到所有顶点变形目标上。
    • Amount - 载具接收的治愈量。
  • ApplyRandomMorphDamage [Amount] - 当由于远程客户端上的载具生命值发生改变而导致不能确定伤害的特定位置时将伤害随机地应用给顶点变形目标。
    • Amount - 给载具应用的伤害量。

Display(显示)

  • UpdateShadowSettings [bWantShadow] - 启用或禁用载具的阴影投射功能。
    • bWantShadow - 如果该项为true,则启用阴影。否则,禁用它们。
  • DisplayWeaponBar [canvas] [HUD] - 由HUD调用的函数存根,它允许载具描画它自己的武器条。如果他们想在屏幕上显示武器条,比如他们的武器需要付费,那么需要在子类中重载该项。
    • Canvas - 引用当前画布以进行描画。
    • HUD - 引用HUD。
  • DrawKillIcon [Canvas] [ScreenX] [ScreenY] [HUDScaleX] [HUDScaleY] - 当执行一次杀死动作时在HUD上描画该载具的图标。
    • Canvas - 引用当前画布以进行描画。
    • ScreenX - 存放用于描画图标的水平位置。
    • ScreenY - 存放用于描画图标的垂直位置。
    • HUDScaleX - 存放HUD的水平比例大小 (相对于1024)。
    • HUDScaleY - 存放HUD的垂直比例大小 (相对于768)。
  • RenderMapIcon [MP] [Canvas] [PlayerOwner] [FinalColor] - 在迷你地图上描画载具。从UTMapInfo中调用。
    • MP - 引用用于描画地图的地图信息。
    • Canvas - 引用当前画布以进行描画。
    • PlayerOwner - 引用本地玩家控制器。
    • FinalColor - 存放描画载具地图图标的颜色。
  • PostRenderFor [PC] [Canvas] [CameraPosition] [CameraDir] - 继承于Actor。NativePostRenderFor 的脚本版本,允许pawns给它们本身渲染HUD覆盖层。
    • PC - 引用玩家的控制器。
    • Canvas - 引用当前画布以进行描画。
    • CameraPosition - 当前的相机位置。
    • CameraDir - 相机的当前朝向。
  • PostRenderPassengerBeacons [PC] [Canvas] [TeamColor] [TextColor] [Weap] [InPassengerPRI] [InPassengerTeamBeaconOffset] - 在HUD上描画载具的乘客信息。
    • PC - 引用玩家的控制器。
    • Canvas - 引用当前画布以进行描画。
    • TeamColor - 当描画乘客信息图标时所使用的颜色。
    • TextColor - 当描画乘客信息文本时所使用的颜色。
    • Weap - 引用乘客正在使用的武器。
    • InPassengerPRI - 引用乘客的PlayerReplicationInfo。
    • InPassengerTeamBeaconOffset - 描画乘客信息时距离载具位置的偏移量。
  • TurnOffShadows - 调用UpdateShadowSettings(False) 来禁用载具的所有阴影。
  • DisplayHUD [HUD] [Canvas] [HudPOS] [SeatIndex] - 描画所有载具相关的HUD细节。从HUD中调用。
    • HUD - 引用HUD。
    • Canvas - 引用当前画布以进行描画。
    • HudPOS - 尚未使用。
    • SeatIndex - 可选项。座位的索引。

* Effects(特效)

  • PlaySpawnEffect - 播放和生成载具相关的所有特效。当载具工厂生成载具时由载具工厂调用该项。
  • StopSpawnEffect - 停止和载具生成相关的所有特效。
  • CreateVehicleEffect [EffectIndex] - 为给定特效创建ParticleSystemComponent,并将相关的粒子系统分配给它。
    • EffectIndex - 要创建的特效在VehicleEffects数组中的索引。
  • InitializeEffects -触发'BeginPlay' 载具特效并设置bInitializedVehicleEffects为true。
  • SetVehicleEffectParams [TriggerName] [PSC] - 设置和给定事件名称相关的任何粒子参数。
    • TriggerName - 和该特效相关的事件的名称。
    • PSC - 引用特效的ParticleSystemComponent(粒子系统组件)。
  • TriggerVehicleEffect [EventTag] - 播放和给定事件相关的所有载具特效。
    • EventTag - 正在触发的事件的名称。
  • TeamChanged_VehicleEffects - 更新载具的特效以便和载具所在的团队相匹配。
  • StartLinkedEffect -设置当Link Gun连接到载具上时要播放的所有特效。
  • StopLinkedEffect - 关闭所有和连接到载具上的Link Gun相关的所有特效。
  • PlayTakeHitEffects - 当载具受到冲撞时播放碰撞特效,并更新伤害系统。
  • CauseMuzzleFlashLight [SeatIndex] - 打开给定座位的武器的喷嘴火焰光。
    • SeatIndex - 要为其打开喷嘴火焰的座位的索引。
  • VehicleWeaponFireEffects [HitLocation] [SeatIndex] - 通过触发和武器的FireTriggerTags相匹配的载具事件来播放给定座位的武器开火特效。
    • HitLocation - 开火特效的位置。
    • SeatIndex - 要为其播放特效的座位的索引。
  • VehicleWeaponImpactEffects [HitLocation] [SeatIndex] - 播放从给定座位开火武器的碰撞点发生的任何特效。
    • HitLocation - 碰撞的位置。
    • SeatIndex - 进行武器开火并造成碰撞撞击的座位的索引。
  • SpawnImpactEmitter [HitLocation] [HitNormal] [ImpactEffect] [SeatIndex] - 根据所射击碰撞到的表面类型生成适当的特效。
    • HitLocation - 碰撞的位置。
    • HitNormal - 设计碰撞处的表面法线。
    • ImpactEffect - 要产生的针对特定材质类型的特效。
    • SeatIndex - 进行武器开火并负责产生射击碰撞的座位的索引。
  • DisableDamageSmoke - 当载具几乎要燃烧殆尽时通过触发 'NoDamageSmoke'事件来禁用 烟雾 和/或 火焰效果。
  • StartBurnOut - 在死亡废弃的载具上启动燃烧殆尽特效。
  • SetBurnOut - 设置燃烧殆尽特效并启动计时器来启动该特效。
  • ShouldSpawnExplosionLight [HitLocation] [HitNormal] - 返回是否应该给予爆炸到达本地玩家的距离来生成爆炸光。
    • HitLocation - 尚未使用。
    • HitNormal - 尚未使用。
  • TurretExplosion - 设置并执行炮塔爆炸,隐藏现有的炮塔并产生销毁的炮塔。
  • CheckDamageSmoke - 根据载具生命值触发 'DamageSmoke' 或'NoDamageSmoke' 事件。
  • SpawnGibVehicle [SpawnLocation] [SpawnRotation] [TheMesh] [HitLocation] [bSpinGib] [ImpulseDirection] [PS_OnBreak] [PS_Trail] - 由载具的动画树中的任何伤害骨架控制器调用该项,从而在当弹簧断裂或者载具废弃断裂时生成特定的载具碎片。
    • SpawnLocation - 产生部件部分的位置。
    • SpawnRotation - 产生部件的旋转度。
    • TheMesh - 生成的部件的静态网格物体。
    • HitLocation - 碰撞的位置。
    • bSpinGib - 如果该项为true,则赋予生成的部件一个随机的角速度。
    • ImpulseDirection - 应用给生成的部件的冲力。
    • PS_OnBreak - 当该部件断裂脱离时播放的粒子系统。
    • PS_Trail - 用作为脱离部分的尾迹的粒子系统。
  • SetMovementEffect [SeatIndex] [bSetActive] [UTP] - 创建或销毁指定座位的运动特效。运动特性允许使用静态网格物体来创建一些运动效果,比如Cicada中飘过的云的效果。
    • SeatIndex - 要为其创建运动特效的座位的索引。
    • bSetActive - 如果该项为true,则创建该特效。否则,则销毁该特效。
    • UTP - 引用座位中的Pawn。用于决定该特效是否是针对本地玩家的。如果不是,则不创建任何特效。
  • ApplyWeaponEffects [OverlayFlags] [SeatIndex] - 给指定作为设置并附加武器特效。
    • OverlayFlags - 用于查找该座位的特效的标志。
    • SeatIndex - 座位的索引。

Entry/Exit(进入/退出)

  • EjectSeat [SeatIdx] - 从载具的给定作为上弹出 玩家/AI。
    • SeatIndex - 弹出乘客的座位的索引。
  • ExitRotation - 返回用于决定有效退出位置的旋转度。默认为载具的旋转度。
  • DisableVehicle - 禁用载具,赶出所有乘客,并播放和禁用该载具相关的任何特效。如果有人在载具中则返回true。
  • EnableVehicle -启用载具并停止和禁用载具相关的任何特效。
  • GetSeatIndexFromPrefix [Prefix] - 返回和给定变量前缀相关的座位索引。
    • Prefix - 为其查找前缀的座位的索引。
  • SeatAvailable [SeatIndex] - 返回指定的作为是否可用或则是否已被占用。
    • SeatIndex - 要检查的座位的索引。
  • AnySeatAvailable - 返回载具中是否有任何可用座位。
  • GetSeatIndexForController [ControllerToMove] - 返回给定控制器正在占用的座位的索引,如果控制器没有占用载具中的任何作为则返回-1。
    • ControllerToMove - 引用要检查的控制器。
  • GetControllerForSeatIndex [SeatIndex] - 返回占用给定座位的控制器,如果没有占用任何作为则返回None。
    • SeatIndex - 为其获取控制器的座位的索引。
  • HasPriority [First] [Second] - 返回第一个控制器是否比第二个控制器有优先权。用于改变作为及决定如果目标座位被占用时一个玩家是否可以冲撞另一个玩家以占用座位。默认情况下,优先权赋予人类控制的玩家。
    • First - 引用要检查的控制器以获得优先权。
    • Second - 引用要检查的相对的控制器。
  • ChangeSeat [ControllerToMove] [RequestedSeat] - 尝试移动给定玩家到新的座位。如果新的座位是空的或者如果要移动的玩家的优先权高于占用座位的玩家则移动成功。
    • ControllerToMove - 引用要移动的玩家的控制器。
    • RequestedSeat - 要将玩家移动到的座位的索引。
  • InCustomEntryRadius [P] - 当bHasCustomEntryRadius为true时调用该项,并返回给定Pawn是否在自定义半径内。默认情况将总是返回false。使用自定义半径的载具应该重载这个函数。
    • P - 引用要检查的Pawn。
  • KickOutBot - 迭代在载具中的座位,并强制从载具中找到的第一个AI乘客给人类玩家腾出空间。
  • VehicleLocked [P] - 当Pawn尝试进入载具而载具正在锁着时调用该项。播放载具锁着的音效并向玩家显示信息。
    • P - 引用尝试进入到载具的Pawn。
  • ShouldShowUseable [PC] [Dist] - 返回给定玩家是否可以进入到载具。 * PC - 引用要检查的玩家的玩家控制器。 * Dist - 要检查的玩家距离载具的距离。
  • NumPassengers - 返回当前占用载具的乘客的数量,包括驾驶员。
  • GetFirstAvailableSeat - 返回第一个可用的乘客座位,比如seat0,如果没有可用座位则返回-1。
  • PassengerEnter [P] [SeatIndex] - 当新的乘客(也就是,不是驾驶员)进入到载具时调用,从而处理乘客所携带的任何旗帜并将乘客放置到给定座位上。
    • P - 引用进入载具的Pawn。
    • SeatIndex - 引用放置乘客的座位的索引。
  • PassengerLeave [SeatIndex] - 当乘客离开载具时调用该项。
    • SeatIndex - 要从中移除乘客的座位的索引。
  • Occupied - 返回当前载具中的任何作为是否被占用。
  • OpenPositionFor [P] - 返回这是否是针对给定Pawn的可用座位。
    • P - 引用要检查的Pawn。
  • InitializeSeats - 设置载具中每个座位的武器。
  • SitDriver [UTP] [SeatIndex] - 将给定Pawn放置到特定座位中,并将它附加到相关骨骼上。
    • UTP - 引用要放置到座位中的Pawn。
    • SeatIndex - 用于放置pawn的座位的索引。
  • OnExitVehicle [Action] - 接收一个Exit Vehicle(退出载具) Kismet动作,强制所有乘客退出载具。
    • Action - 引用激活的UTSeqAct_ExitVehicle动作。
  • SetSeatStoragePawn [SeatIndex] [PawnToSit] - 当将特定pawn放置到给定座位上时或将特定Pawn从给定座位上删除时更新SeatMask(座位蒙板) 。
    • SeatIndex - 用于放置pawn或者从中删除pawn的座位的索引。
    • PawnToSit - 引用要放置到座位中的Pawn,或如果要删除给定座位中的乘客可以设置它为 None。

Events(事件)

  • VehicleEvent [EventTag] - 提供了在载具上触发事件以便对任何情形作出反应的接口。请参照载具事件部分获得更多信息。
    • EventTag - 要触发的事件的名称。

Gameplay(游戏性)

  • SetTeamNum [T] - 设置载具所属的团队。
    • T - 将载具更改为的团队的编号。
  • TeamChanged - 当载具改变团队来更新材质及特效以便和新的团队相匹配时调用该项。
  • IncomingMissle [P] - 通知AI有一个正在瞄准射击载具的射弹来临。
    • P - 引用瞄准射击载具的射弹。
  • ShootMissile [P] - 使载具向指定的射弹开火。
    • P - 引用要对其开火的射弹。
  • SendLockOnMessage [Switch] -由LockOnWarning() 函数调用,以便将该警告传递给载具中的所有座位。
    • Switch - 要显示的消息的索引。
  • HandleEnteringFlag [EnteringPRI] - 根据载具是否允许携带旗帜来附加进入到载具中的玩家携带的旗帜,或强制玩家丢掉旗帜。
    • EnteringPRI - 引用进入载具的玩家的 PRI。
  • AttachFlag [FlagActor] [NewDriver] - 附加指定的旗帜给载具,或者如果指定了FlagBone则附加到该旗帜骨骼上。
    • FlagActor - 引用要附加的旗帜。
    • NewDriver - 引用携带旗帜的Pawn。
  • GetHumanReadableName - 返回易读的载具名称,或者是VehicleNameString或者是类名 。

网格物体和动画

  • ReattachMesh - 分离或附加网格物体组件。当设置已经更新时使用该项。
  • PlayVehicleAnimation [EventTag] - 播放和给定事件相关的任何动画。
    • EventTag - 正在触发的事件的名称。
  • OnAnimEnd [SeqNode] [PlayedTime] [ExcessTime] - 继承于Actor。当动画结束时由引擎调用。在载具上调用‘Idle’事件来讲载具置回到空闲状态。
    • SeqNode - 播放动画的AnimNodeSequence。
    • PlayedTime - 动画播放的持续时间。
    • ExcessTime - 超出动画结束的重叠时间量。

Movement(运动)

  • UpdateLookSteerStatus - 根据当前的控制机制更新bUsingLookSteer 的值。

物理

  • OnDriverPhysicsAssetChanged [UTP] -该函数存根允许载具在物理资源发生改变时在玩家上执行自定义屋里设置。
    • UTP - 引用驾驶员的pawn。

Sounds(声效)

  • PlayVehicleSound [SoundTag] -播放 和/或 停止和给定事件相关的任何声效。
    • SoundTag - 被触发的事件的名称。
  • EntryAnnouncement [C] - 当某人进入载具时播放任何必要的声音或通知。
    • C - 禁用进入到载具的 玩家/AI 的控制器。
  • PlayHorn - 播放喇叭声效来告诉附近的任何AI尝试进入到载具中。
  • StopVehicleSounds - 停止播放所有载具声效。

Weapons(武器)

  • WeaponRotationChanged [SeatIndex] - 当给定座位的武器旋转值发生改变时在客户端调用该项,以便更新客户端上的炮塔的旋转度。
    • SeatIndex - 其旋转度值发生改变的座位的索引。
  • CheckTurretPitchLimit [NeededPitch] [SeatIndex] - 检查给定的倾斜度是否受到炮塔控制器的限制,也就是,炮塔不能朝那个方向开火,并返回是否限制旋转度。
    • NeededPitch - 超期望方向开火所需的倾斜度。
    • SeatIndex -要执行开火动作的座位的索引。
  • GetHomingTarget [Seeker] [InstigatedBy] - 返回尝试锁定到这个载具上的Actor射弹。
    • Seeker -引用瞄准载具的射弹。
    • InstigatedBy - 引用负责开火发射射弹的控制器。
  • IntializeTurrets - 初始化载具中所有座位的炮塔骨架控制器。
  • SetFiringMode [Weap] [FiringModeNum] - 继承于 Pawn。将驾驶员武器的开火模式设置为给定的开火模式。
    • Weap - 引用驾驶员的武器。
    • FiringModeNum - 武器的新的开火模式。
  • ClearFlashCount [Who] -继承于Pawn。通过VehicleAdjustFlashCount()清除驾驶员的武器的所有开火模式的闪光次数。
    • Who - 引用驾驶员的武器。
  • IncrementFlashCount [Who] [FireModeNum] - 继承于Pawn. 通过 VehicleAdjustFlashCount()增加驾驶员的武器的特定开火模式的闪光次数。
    • Who - 引用驾驶员的武器。
    • FireModeNum - 要增加其闪光次数的开火模式。
  • SetFlashLocation [Who] [FireModeNum] [NewLoc] -继承于Pawn。通过VehicleAdjustFlashLocation()设置驾驶员武器的涉及碰撞位置,以便将它复制到播放开火特效的所有客户端。
    • Who - 引用驾驶员的武器。
    • FireModeNum - 负责产生射击碰撞的开火模式。
    • NewLoc - 碰撞的位置。
  • ClearFlashLocation [Who] - 通过VehicleAdjustFlashLocation()清除驾驶员武器的闪光位置,并停止武器开火特效。
    • Who - 引用驾驶员的武器。
  • GetBarrelLocationAndRotation [Seatindex] [SocketLocation] [SocketRotation] - 输出给定座位的武器发射的当前炮筒的插槽的 位置 和/或 旋转度。
    • SeatIndex - 获取其位置和旋转度的座位的索引。
    • SocketLocation - 输出炮筒的位置。
    • SocketRotation - 可选项。输出炮筒的旋转度。
  • GetEffectLocation [SeatIndex] - 获得给定座位的武器的炮筒位置。
    • SeatIndex - 获得其炮筒位置的座位的索引。
  • GetPhysicalFireStartLoc [ForWeapon] - 通过GetEffectLocation()函数获得驾驶员武器的炮筒的位置。
    • ForWeapon - 引用驾驶员的武器。
  • GetWeaponAim [VWeapon] - 返回代表给定武器瞄准方向的旋转度。
    • VWeapon - 引用要获得其瞄准位置的武器。
  • WeaponFired [InWeapon] [bViaReplcation] [HitLocation] - 将载具驾驶员的武器开火函数调用传递给VehicleWeaponFired()函数。
    • InWeapon - 引用驾驶员的武器。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
    • HitLocation - 播放开火发射特效的位置。
  • VehicleWeaponFired [bViaReplication] [HitLocation] [SeatIndex] - 触发给定座位的武器的任何武器开火特效。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
    • HitLocation - 开火特效的位置。
    • SeatIndex - 进行武器开火的座位的索引。
  • WeaponStoppedFiring [InWeapon] [bViaReplication] - 将载具驾驶员的武器停火函数调用传递给VehicleWeaponStoppedFiring() 函数。
    • InWeapon - 引用驾驶员的武器。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
  • VehicleWeaponStoppedFiring [bViaReplication] [SeatIndex] - 停止给定座位的武器的任何开火特效。
    • bViaReplication - 如果该项为true,则从远程客户端复制该信息。
    • SeatIndex - 武器停火的座位的索引。
  • FindWeaponHitNormal [HitLocation] [HitNormal] [End] [Start] [HitInfo] - 通过使用从给定起点和终点的跟踪输出碰撞的位置、发现及信息。
    • HitLocation - 输出跟踪碰撞的位置。
    • HitNormal - 输出跟踪碰撞位置处的表面法线。
    • End - 跟踪的终点。
    • Start - 跟踪的起点。
    • HitInfo - 输出跟踪的碰撞信息。
  • VehicleAdjustFlashCount [SeatIndex] [FireModeNum] [bClear] - 修改或清除特定座位的武器的闪光次数。
    • SeatIndex - 要为其调整闪光次数的座位的索引。
    • FireModeNum - 要调增其闪光次数的开火模式。
    • bClear - 可选项。如果该项为true,则清除闪光次数。否则,增加闪光次数。
  • VehicleAdjustFlashLocation [SeatIndex] [FireModeNum] [NewLocation] [bClear] -设置或清除特定座位的武器的闪光位置。
    • SeatIndex - 要为其调整闪光位置的座位的索引。
    • FireModeNum - 要设置其闪光位置的开火模式。
    • NewLocation - 闪光位置的新位置。
    • bClear - 可选项。如果该项为true,那么则清除闪光位置。否则,将闪光位置设置为新的位置。
  • SetShieldActive [SeatIndex] [bActive] - 启用/禁用 具有盾牌射击开火模式的字句的 盾牌。具有盾牌的子类需要重载这个类。
    • SeatIndex - 激活盾牌的座位的索引。
    • bActive - 如果该项为true,则激活盾牌。否则,禁用盾牌。

SVehicleSimBase

载具的大部分仿真工作都是在SVehicleSimBase对象中处理的。它被分离出来作为一个单独的对象,以便您可以为您的所有载具创建针对特定游戏的继承于SVehicle的基类,但是仍然可以针对不同载具类型重复使用代码。

  • WheelSuspensionStiffness - 控制车轮的悬架弹簧的硬度。这个值没有特定的范围,但是我们一般使用20.0 到 500.0之间的值。
  • WheelSuspensionDamping - 控制轮子的悬架弹簧的阻尼。 这个值越大,在悬架上获得震荡就越小。同样,这个值没有特定的范围,但是我们一般使用1.0 到 75.0之间的值。
  • WheelSuspensionBias - 应用到轮子悬架平衡位置处的偏移量。
  • WheelInertia - 轮子的质量。由PhysX使用,用于决定轮子力矩可以达到的轮子速度。说明了轮子的重量及转动轮子的难度。
  • bWheelSpeedOverride - 如果该项为true,那么可以直接指定这个轮子的速度,而不必应用力矩,并且物理会相应地自动更新轮子速度。这项由SVehicleSimTank对象使用,它在轮子上调用SetAxleSpeed 。
  • bClampedFrictionModel -如果该项为true,那么摩擦力模型区间限定轮子应用的摩擦力。应该会更加真实。

轮子模型

虚幻引擎3载具系统利用了类似于Pacejka的轮子模型(您可以使用Google找到这种类型的模型)。轮子模型细分为横向(侧向)和纵向(滚动方向)。每一个方向都有一个关于车轮和地面间的滑动及所生成的力的大小的曲线。曲线如下所示:

pacejka_curve.jpg

对于横向来说,Slip Angle(滑移角)作为输入;对于纵向来说,使用Slip Ratio(滑移系数)作为输入。您指定这些曲线的方式是通过给出图表中显示的两个点的坐标,被称为 `Extremum(极值)' 和`Asymptote(渐近线)'。Extremum(极值)是最大力的点,而Asymptote(渐近线)点给出了发生无限滑动时的输出值。每个点的切线看做是平的,在它们之间适当有个三次样条给出了曲线的最终形状。每个曲线您可以使用的属性定义为:

  • Wheel..ExtremumSlip - Extremum点的输入Slip值。
  • Wheel..ExtremumValue - Extremum(极值)点的输出值。
  • Wheel..AsymptoteSlip - Asymptote点的输入Slip值。
  • Wheel..AsymptoteValue - Asymptote点的输出值。

当轮子和地面之间有较大的相对速度时,之前的轮子仿真版本将会大大地增加轮子力。这意味着落地跳跃和稳定地滑动是很难实现的。不久后,引入了 'clamped friction mode(区间限定摩擦模式)',从而帮助修复了这个问题。 要想使用这个模型,需要在SVehicleSimBase中将'bClampedFrictionModel'选项设置为TRUE。注意,在现有载具上这样做将要求重新调整上面描述的轮子参数。 SVehicleSimBase类使用默认轮子函数值,这些值对于一般的带轮载具来说是个很好的入手点。

SVehicleWheel 属性

有几个SVehicleWheel 上的值是通过仿真代码每次更新设置的,然后这些值会被传递给物理。

  • Steer - 轮子的旋转角度。0代表径直向前,负角度代表向右转。以度数为单位。
  • MotorTorque - 应该应用到这个轮子上的发动机转矩。可以是负值,这样将是轮子反向转。
  • BrakeTorque - 应用给轮子的刹车力矩量,以便阻止旋转。应该总是正值。
  • ChassisTorque - 从这个轮子发向应用给地盘的力矩量,以便当加速等时轮子上仰。

仿真代码使用轮子的很多其它参数来决定上面的值应该是多少。这些值通常不会改变。

  • bPoweredWheel - 是否应该给这个轮子应用动力。
  • bHandbrakeWheel - 当应用时‘手动刹车’是否降低对轮子的控制。
  • SteerFactor - 这个轮子应该对驾驶转动做出响应的程度。如果该值为0,那么当驾驶转动时轮子将不转。如果该值为1.0,那么当驾驶转动时轮子向右转。如果设置为-1.0则会导致轮子向相反的方向转动,这在4-轮驾驶配置中是有用的。
  • LongSlipFactor - 定义在SVehicleSimBase中的在纵向上基于每个轮子缩放轮子力大小的函数。
  • LatSlipFactor - 定义在SVehicleSimBase中的在横向上基于每个轮子缩放轮子力大小的函数。
  • SkelControlName - 应该基于这个轮子更新的SkelControlWheel的名称。关于更多的信息,请参照设置载具页面。
  • BoneName - 用于放置轮子的骨架网格物体中骨骼的名称。
  • BoneOffset - 在和BoneName指定的骨骼偏移量为多少的地方放置轮子。
  • WheelRadius - 轮子的半径。
  • SuspensionTravel - 在轮子达到‘硬性’停止之前允许它在垂直方向上运动的程度。
  • SuspensionSpeed - 为了避免图形轮子滚动的太快(比如当上台阶时),您可以指定轮子每秒可以运行的虚幻单位的最大数量。
  • WheelParticleSystem - 可选的粒子系统,用于生成这个轮子的烟雾特效。每帧更新时在这个粒子系统上设置‘WheelSlip’浮点参数,它可以用于修改产生速率等。
  • Side - 用于坦克载具,指出这个轮子是否构成载具的左侧或右侧‘轮胎面’的一部分。

SVehicleWheel同时提供了一些‘输出’参数,这些参数在每帧都会更新。

  • bWheelOnGround - 这个特定的轮子当前是否在地面上。
  • SpinVel - 这个轮子的当前角速度,以每秒中移动的弧度为单位。
  • LongSlipRatio - 该轮子的当前纵向滑移比率。
  • LatSlipAngle - 该轮子的当前横向滑移角。
  • ContactNormal - 轮子和地面之间的接触点法线。
  • LongDirection - 纵向轮子方向向量,在世界空间中。
  • LatDirection - 横向轮子方向向量,在世界空间中。
  • ContactForce - 最后一帧这个轮子所应用的力的大小。
  • LongImpulse - 最后一帧在纵向上应用的冲力的大小。
  • LatImpulse - 最后一帧在横向上应用的冲力的大小。
  • SuspensionPosition - 轮子在它的悬架上的当前垂直位移。
  • CurrentRotation - 轮子的当前旋转度,以度数为单位。

物理所做的线性检测是悬架移动加上轮子半径。

载具座位和武器

载具系统(从UDKVehicle类开始)允许载具具有多个座位和武器。这意味着载具可以有一个控制载具运动的驾驶员及很多主要武器,同时可以有很多乘客,它们也可以控制各自的一组武器。这不仅允许武器作战,同时使得制作传送器成为可能,比如制作运输船、人员输送车。

每个载具至少定义一个座位,供驾驶员用。每个载具座位通过在载具的默认属性中的Seats数组内添加一个VehicleSeat来进行定义。VehicleSeat结构体包含了定义座位所需的所有属性,包括如何为座位上玩家放置相机、座位上的玩家的武器使用哪个武器类等。

默认情况下,当玩家进入载具时,他们将会被放置到第一个可用座位上。如果载具是空的,那么显然将会把该玩家放置为驾驶员。载具中的乘客,包括驾驶员,可以通过使用通常用于切换武器的数字按键在任何时候切换到载具中的其他任何可用座位。

VehicleSeat 属性

Damage(伤害)

  • DriverDamageMult - 应用给这个座位上的乘客的伤害的乘数。

Display(显示)

  • CameraTag - 用作为相机基座的骨骼或插槽名称。
  • CameraBaseOffset - 距离基座位置(CameraTag中的骨骼/插槽)的偏移量,用于决定基本的相机位置。
  • CameraSafeOffset - 距离载具位置的偏移量,用于决定安全跟踪的起始点。
  • CameraOffset - 将相机从座位处拉回的距离。
  • CameraEyeHeight - WeaponPawn的俯视高度。
  • ViewPitchMin - 座位的 相机/武器 倾斜时允许具有的最小旋转度。如果设置为0.0f,则会使用的ViewPitchMin 。
  • ViewPitchMax - 座位的 相机/武器 倾斜时允许具有的最大旋转度。如果设置为0.0f,则会使用的ViewPitchMax 。
  • SeatIconPos - 用于在HUD上描画座位图标的位置。

* Effects(特效)

  • WeaponEffects - 如果激活了武器奖励特效(UDamage等),该项是武器奖励特效的位置和组件引用的数组。
  • MuzzleFlashLightClass - 喷口火焰使用的光源的类。
  • MuzzleFlashLight - 引用喷口火焰使用的光源。
  • ImpactFlashLightClass - 这个作为的武器产生的射击碰撞时所使用的光源的类。
  • SeatMovementEffect - 当载具在运动时播放的特效 (VehicleMovementEffect)。

一般

  • StoragePawn - 引用坐在座位中的Pawn。
  • SeatPawn - 如果给作为分配了武器,该项引用该座位的的WeaponPawn 。
  • bSeatVisible -如果该项为true,则会渲染占用这个座位的Pawn。
  • SeatBone - 用作为占用这个座位的Pawn的锚点的骨骼名称。
  • SeatOffset - 距离SeatBone的偏移量,以便放置占用这个座位的Pawn。
  • SeatRotation - 距离SeatBone的旋转度的旋转度偏移量,以便旋转占用这个座位的Pawn。
  • SeatSocket - 看上去没有使用过。

Sounds(声效)

  • SeatMotionAudio - 当座位发生运动时用于播放生效的AudioComponent ,比如当 座位/武器 旋转时。

* Weapon(武器)*

  • GunClass - 这个作为所使用的武器的类。如果座位没有武器,该项可以为空。
  • Gun - 引用该座位的武器。
  • GunSocket - 作为特效和生成射弹的定位点所使用的插槽的名称数组。
  • GunPivotPoints - 作为 旋转/瞄准 武器的支点的骨骼的名称数组。
  • BarrelIndex - 存放了武器的当前激活的炮筒。
  • TurretVariablePrefix - 用作为该座位的WeaponRotation、FlashLocation、FlashCount和FiringMode属性的前缀的名称。应该为除了Seat[0]之外的所有座位设置该项。请参照载具武器复制部分 获得更多信息。
  • TurretControls - 和该座位的武器相关的载具的动画树中 UTSkelControl_TurretConstrined骨架控制器的名称的数组。用于获得到这些骨架控制器的引用。
  • TurretControllers - 和该座位的武器相关的载具的动画树中 UTSkelControl_TurretConstrined骨架控制器的名称的数组。
  • AimPoint - 缓冲在ApplyWeaponRotation中,这个向量是玩家是在世界空间中的瞄准方向。
  • AimTarget - 缓冲在ApplyWeaponRotation中,这是座位当前正在瞄准的Actor。如果没有瞄准任何东西该项可以为none。
  • PivotFireOffsetZ - 武器支点和实际开火位置的Z距离。用于校正瞄准旋转度。
  • bDisableOffsetZAdjust - 如果该项为true,则根据PivotFireOffsetZ禁用对炮塔倾斜度的调整。

载具武器复制

载具需要处理武器开火所需的所有变量的复制。每个载具需要有一组以常用前缀开始的变量,将使用这些变量来组织所需的那个武器的复制数据。 载具的第一个武器(比如: 和 驾驶员/座位 0相关的武器)没有前缀。

[prefix]WeaponRotation - 定义了世界中武器所需的物理旋转度。 [prefix]FlashLocation - 这定义了当即时射击武器开火时射击碰撞的位置。 [prefix]FlashCount - 每次射击后这个值会增加。 [prefix]FiringMode - 这项是武器当前所使用的开火模式。

另外,每个座位可以有任何数量个和其相关的SkelControl_TurretConstrained控制。 当设置或复制了[prefix]WeaponRotation值时,这些控制将会自动地更新。

FlashLocation、FlashCount和FiringMode (和seat 0相关) 继承于Pawn类。 WeaponRotation定义在UDKVehicle中。 所有的“turret(炮塔)”变量必须定义为"repnotify"。 FlashLocation、FlashCount和FiringMode仅能复制到不拥有它们的客户端上。

载具事件

载具事件系统(在继承于UDKVehicle的载具中)提供了在任何需要的情况下在载具上播放任何数量的动画、特效、音效的方法。这个系统十分灵活并且可以通过多种方式使用。

每个载具有特自己的一组事件,会针对这些事件创建动画、特效、音效,并将它们放入到载具默认属性中相应的数组中:VehicleAnims、VehicleEffects或VehicleSounds。然后,在载具的代码中,将会调用 VehicleEvent()函数,向它传入事件的名称来触发针对特定情形的事件。

VehicleEvent() 函数反过来调用以下函数,并向它们传递被触发的事件的名称:

  • PlayVehicleAnimation()
  • TriggerVehicleEffect()
  • PlayVehicleSound()

每个函数迭代相应的数组并播放(或停止)任何及所有和被触发的事件相匹配的动画、特效、声效。这个是个非常容易使用的相对简单的系统,它提供了给载具快速添加自定义视觉效果和音效细节的功能。

VehicleAnim 属性

  • AnimTag - 负责播放这个动画的载具数组的名称。
  • AnimSeqs - 这个动画要播放的动画序列数组的名称。
  • AnimRate -动画的播放速度。
  • bAnimLoopLastSeq - 如果该项为true,那么将会循环这个动画播放的最后一个动画序列。
  • AnimPlayerName - 动画树中用于播放动画的UTAnimNodeSequence播放器的名称。

VehicleEffect 属性

  • EffectStartTag - 负责播放这个特效的载具事件的名称。
  • EffectEndTag - 负责停止这个特效的载具事件的名称。
  • bRestartRunning - 如果该项为true,那么当在特效正在运行时触发了这个事件时将会重新播放该特效。
  • bHighDetailOnly - 如果该项为true,那么该特效将仅当游戏以高细节模式运行时播放这个特效。
  • EffectTemplate - 这个特效要播放的粒子系统。
  • EffectTemplate_Blue - 载具属于蓝队时为这个事件播放的粒子系统。
  • EffectSocket - 用于附加特效的载具上的插槽名称。
  • EffectRef - 播放这个特效所使用的ParticleSystemComponent 。

VehicleSound 属性

  • SoundStartTag - 负责播放这个音效的载具事件的名称。
  • SoundEndTag - 负责停止这个音效的载具事件的名称。
  • SoundTemplate - 这个音效播放的SoundCue 。
  • SoundRef - 播放这个音效所使用的AudioComponent 。

载具伤害系统

载具伤害系统(在继承于UDKVehicle的载具中)使得载具可以产生针对特定位置的伤害,并通过使用顶点变性目标显示伤害的效果。任何时候当载具受到伤害时,伤害系统找到距离碰撞位置最近的骨骼。然后使用那个骨骼在DamageMorphTargets数组中找到对应项。对这个载具造成的伤害会应用到那个伤害顶点变形目标的生命值及任何后续链接的伤害顶点变形目标上,直到伤害消失为止。当耗尽了特定伤害顶点变性目标的生命值时,将认为它已经死亡,并在这个过程中跳过仅使得链接的伤害顶点变形目标受到伤害。

这个系统处理了所有难缠的工作。你所需要做的就是在内容侧设置顶点变形目标和材质,并将向载具的默认属性的DamageMorphTargets 数组中添加元素项。

FDamageMorphTargets 属性

  • MorphNodeName - 和这个伤害顶点变形目标相对应的载具的动画树中的MorphNode 的名称。
  • MorphNode - 引用和这个伤害顶点变形目标相对应的实际的MorphNode 。当初始化载具时设置该项。
  • LinkedMorphNodeName - 链中的下一个MorphNode 的名称。如果这是链中的最后一个伤害顶点变形目标,那么则该项为‘None’。
  • LinkedMorphNodeIndex - 链中下一个伤害顶点变性目标在DamageMorphTargets数组中的索引。当初始化载具时设置该项。
  • InfluenceBone - 和这个伤害顶点变形目标相关联的骨骼的名称。
  • Health - 这个伤害顶点变形目标的当前生命值。
  • DamagePropsName - 当伤害顶点变形目标受到伤害时要调整的载具材质中的标量属性的名称。因为伤害顶点变性目标的生命值是从它的初始值到0,所以参数的值是从0到1。

不同的载具类型


SVehicle类提供的各种带轮的载具工具可以创建大量不同的载具类型。看一下虚幻竞技场3来了解以下其中一些载具的工作方式是非常值得的。这里是一些非传统的载具类型:

带轮载具

虚幻引擎3中的带轮载具是作为单独的刚体进行仿真的。光线从汽车底盘上的点向下投射来查看载具是否接触地面,并且会基于一些参数来计算接触点处的力。没有物理‘轮子’对象 - 引擎只是存储每个轮子的运动速度情况,并使用它来计算所产生的力。

悬浮载具

这些载具通过使用长的、柔软的悬架移动创建轮子,没有轮子摩擦力,允许轮子向各个方向移动。然后我们仅使用力、力矩和阻尼来控制载具的运动。

飞行载具

对于类似于直升飞机的载具来说,载具是保持竖立的,我们使用StayUprightConstraint来保持载具竖立。然后通过重载GetGravityZ()函数,您可以使得载具’悬浮盘旋‘,并可以轻松地使用力驱动它。

坦克

UE3中包含了针对这个应用的SVehicleSimTank对象。

当应用全油门时,坦克引擎将会在两个履带上分割MaxEngineToque(最大引擎力矩)。 除非正在驾驶坦克,否则这将是个均匀分割。当驾驶时,力矩将会根据载具的当前速度基于InsideTrackTorqueCurve分割。

比如。。。当向前驾驶时每个履带获得50%的总力矩。然而,如果塔克正在向左转且InsideTrackTorqueCurve是0.2时,这将会应用引擎力矩的20%给左侧履带,剩余的80%应用到右侧履带上。如果InsideTrackTorqueCurve是-0.2,它将会按照20/80分割力矩,然而内力矩将会应用在相反的方向上。EngineDamping是个阻尼力,和每个履带的速度成反比。

请记住,总力矩保存在两个履带上,所以如果您将其100%地应用给内部履带,那么将没有任何剩余力矩发送给外部履带。另外,当履带的速度不同时,任何SteerFactor为正值的履带轮将会使用TurnMaxGripReduction/TurnGripScaleRate来调整它们的横向强度。

如果bTurnInPlaceOnSteer为TRUE,那么TurnInPlaceThrottle允许您设置一个油门减少量,以便在原地转弯。

内容: 物理资源


你可以使用PhAT为载具设置碰撞,和布娃娃一样。但是,载具在它们的SkeletalMeshComponent使用bUseSingleBodyPhysics标志,它仅为组件创建一个单独的物理刚体(从根刚体),而不是为物理资源的每个部分创建一个刚体。您在PhAT中为载具设置的其他刚体不会在载具的物理仿真中起作用。不必为轮子创建关节。但物理资源中的其他刚体可以用于线性碰撞检测,所以添加额外的刚体来更加精确地阻止玩家运动是有用的,尤其是对于带动画的部分。

请参照 设置载具页面获得关于在3D包中创建载具并将其导入到引擎中的信息。

性能: 调整载具


调整载具是个需要强经验弱理论的工作。

有用的控制台命令

一个非常有用的工具是 'editactor' 控制台命令。要想使用它,需要使用 -wxwindows开关(或者使用PIE)运行游戏。然后进入到您想调整的载具中,并输入 'editactor class=[vehicle class name]',您应该看到会出现一个属性窗口,允许您在驾驶载具的过程中编辑所有的载具属性。注意那些属性(比如BoneOffset)仅在构建时使用,在运行时不能改变。

载具复制


这是一些载具复制策略,和 虚幻竞技场 中的处理一样:

物理在客户端和服务器上进行完全仿真。当客户端按下向前时,该命令将会到达服务器作为’原始‘输入。然后它变为针对载具的 ThrottleSteering 等服务器上的设置,并且这些设置及载具的当前状态(线性速度和角速度,位置及速度)会被复制给所有的客户端。这样输入和在状态就保持同步了。客户端上的载具的物理状态以三种方式校正:

  1. 如果误差非常小,则忽略。
  2. 如果误差很小并且载具在运动,则直接校正某些误差,将会修改速度将客户端的信息版本向服务器版本移动。
  3. 如果误差很大,将会把载具电传到新的位置。

这个代码在 AActor::ApplyNewRBState 中。这个数据使用结构体进行复制,以便保持所有信息同步。这个结构体是SVehicle.uc中的 VehicleState

调试及可视化这个问题的一个较好的方法是忽略来自服务器的物理校正,而是描画它们。这个代码实际在 ApplyNewRBState 函数中 - 查找位于顶部的 Handy debugging mode(手动调试模式) 注释。这样你就可以到处驾驶了,可以看到载具的客户端版本和服务器版本的偏离速度。

大部分特效都通过插值客户端的物理状态(速度、接触等)来完全地在客户端上处理。

针对其他游戏的策略

对于具有高速载具的游戏来说,比如赛车游戏,在处理这个情形时需要考虑其他策略。速度越大,可能您就更需要进行大幅度的’电传‘校正。如果的载具数量是合理的,那么您或许应该总是让服务器主管物理仿真。如果您在制作具有上百个载具的大型多人在线游戏,那么您可能需要分发该仿真。