编程
Fundamentals
Setting Up Development Environment
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes

Cars(汽车)

由于City Traffic(城市交通)系统是在Game Framework(游戏框架)的基础上建立的,因此每一种车辆都是一个分配有节点引用的实体(entity)。 车辆的基类被命名为"Car"。 并且每辆car的变种都应保存为单独的.node文件。

Car(汽车)的设置

ObjectMeshStatic应是car的节点引用的根节点。

警告
不要在Editor中更改car的朝向。 应该使用合适的朝向来导入mesh(网格)。

对象应具有带所需形状的BodyRigid型body。 而且,连接器(joint)也要分配给该BodyRigid。

使用ObjectMeshStatic节点创建的Car

Car的几何体的另一个重要元素就是可复制car的包围盒的表面。 该表面被用来通过相交射线检测car。 其相交掩码应为0x00000100

对于汽车的专用信号灯(转向灯,前车灯,停车灯),您需要为它们设置特殊的"signal_surface"属性并指定Signal Type(信号类型)参数。 该参数的值可以是:turn_leftturn_rightstopreverseheadlightdipped_light

注意
您也可以添加自定义类型的信号灯以及它们的逻辑。

专用信号灯的逻辑很简单:如果某个信号灯被打开,那它的表面也就被启用和禁用了。

Wheels(车轮)的设置

系统会自动为每个wheel创建JointWheel对象并将其与car的BodyRigid绑定。 为此,您需要执行如下操作:

  • 将车轮放置到正确的位置上。
  • 确保这些车轮成为car的ObjectMeshStatic的子节点。
  • 为这些车轮创建不带形状的BodyRigid型body。
  • 为该body分配"car_wheel"属性。
警告
不要在Editor中更改wheel的朝向。 应该使用合适的朝向来导入mesh(网格)。

Car的车轮(Wheel)

"car_wheel"属性拥有3个开关参数:

  • Steering(转弯) - 用于方向盘。
  • Driving(行车) - 用于汽车车轮。
  • Hand-brake(手刹) - 用于按下手刹就会被锁住的车轮。

物理设置和动力学设置

质量和重心可在car的节点中调节。

其它的物理参数和动力学参数可在您car类的Fields(字段)标签页内调节,该类从Car类继承而来:

  • Gear Ratio(传动比) - 指car的变速箱转数与车轮转数的比值。
  • Gear Ratio Reverse(倒档传动比) - 指倒档传动比。
  • Gear Ratio One(传动比1) - 指1档变速器传动比。
  • Gear Ratio Two(传动比2) - 指2档变速器传动比。
  • Gear Ratio Three(传动比3) - 指3档变速器传动比。
  • Gear Ratio Four(传动比4) - 指4档变速器传动比。
  • Gear Ratio Five(传动比5) - 指5档变速器传动比。
  • Gear Ratio Six(传动比6) - 指6档变速器传动比。
  • Gear Ratio Seven(传动比7) - 指7档变速器传动比。
    注意
    所有的传动比变量都取自真实车辆。 您可在所需car的规范中查找该参数。 例如,参阅福特福克斯的变速器传动比
  • Final Drive(主传动) - 指引擎转数与变速箱转数的比值。
  • Number Gears(齿轮数) - 指变速箱中的齿轮数。
  • Drive Efficiency(传动效率) - 指主动齿轮的效率(例如,假如该参数被设置为0.7 (70%),那效率损失就是30%)。
  • Max Steer Speed(最大转向速度) - 指最大车轮旋转速度,按度/秒计算。
  • Min Steer Speed(最小转向速度) - 指最小车轮旋转速度,按度/秒计算。
  • Max Rpm(最大转数) - 指每分钟最大转数。
  • Min Rpm(最大转数) - 指每分钟最小转数。
  • Max Torque(最大扭矩) - 指车轮的最大扭矩。 该参数由simulated_car_mass (kg) * real_car_torque (Nm) / 实际汽车的质量(kg)计算所得。
  • Max Angular Damping(最大角阻尼) - 指按下刹车时的最大车轮角阻力。
  • Min Angular Damping(最小角阻尼) - 指车轮的恒定角阻力。
  • Hand Brake Angular Damping(手刹角阻尼) - 指按下手刹时的车轮角阻力。
  • Max Steer Angle(最大转向角) - 指车轮旋转的最大角。
  • Suspension Spring(悬挂弹簧) - 指悬架刚度。
  • Suspension Damping(悬架阻尼) - 指线性悬架阻尼系数。
  • Suspension Limit From(悬挂上限) - 指悬挂的上限。
  • Suspension Limit To(悬挂下限) - 指悬挂的下限。
  • Wheel Threshold(车轮门限值) - 指车轮门限值。
  • Wheel Tangent Friction(车轮切线摩擦) - 指轮胎的线性磨损。
  • Wheel Tangent Angle(车轮切线角) - 指用来指定可获得多快的线性力的系数。
  • Wheel Binormal Friction(车轮副法线摩擦) - 指轮胎的侧向磨损。
  • Wheel Binormal Angle(车轮副法线角) - 指用来指定可获得多快的侧向力的系数。
  • Gear Shifting Schedule(换挡方案) - 指存放XML文件的路径,该文件包含了自动变速箱的规则。 对变速器的每一档而言,"油门"/"速度"坐标系中都用2条曲线表示升降转换。

换挡规则的设置举例:

源代码 (XML)
<?xml version="1.0" encoding="utf-8"?>
<lines>
    <up>
        <line> <!-- 从1档升 -->
            <point throttle="0" speed="16"/>
            <point throttle="25" speed="16"/>
            <point throttle="90" speed="48"/>
            <point throttle="100" speed="48"/>
        </line>
        <line> <!-- 从2档升 -->
            <point throttle="0" speed="48"/>
            <point throttle="35" speed="48"/>
            <point throttle="90" speed="90"/>
            <point throttle="100" speed="90"/>
        </line>
        <line> <!-- 从3档升 -->
            <point throttle="0" speed="80"/>
            <point throttle="35" speed="80"/>
            <point throttle="90" speed="140"/>
            <point throttle="100" speed="140"/>
        </line>
    </up>
    
    <down>
        <line> <!-- 从2档降 -->
            <point throttle="0" speed="8"/>
            <point throttle="50" speed="8"/>
            <point throttle="90" speed="46"/>
            <point throttle="100" speed="46"/>
        </line>
        <line> <!-- 从3档降 -->
            <point throttle="0" speed="32"/>
            <point throttle="50" speed="32"/>
            <point throttle="90" speed="80"/>
            <point throttle="100" speed="80"/>
        </line>
        <line> <!-- 从4档降 -->
            <point throttle="0" speed="56"/>
            <point throttle="50" speed="56"/>
            <point throttle="90" speed="128"/>
            <point throttle="100" speed="128"/>
        </line>
    </down>
</lines>

执行结果为:

换挡方案

Colors(颜色)的设置

要想使虚拟世界中的汽车多样化,您就可以使用不同的颜色和材质。 对于材质的设置,有一套基于Unigine属性的特殊内置系统可供其使用。

要想设置材质,您就需要为每一种类型的汽车都创建一种从"car_colors"属性继承来的属性。

注意
请注意,对每一种类型的汽车而言,您都需要为其创建节点引用。

"car_colors"属性拥有2个参数:

  • Material - 指材质的名称
  • Surface - 指材质将被分配其上的表面的数量

"car_colors"属性需要在您car的实体的Color Base Property(颜色基本属性)字段中指定。

颜色设置

该属性的所有子属性代表的就是所列出的car的可能颜色。 要想指定所有的表面以及它们的材质,您就需要创建从某个列表元素继承来的辅助子属性:

属性列表

在car创建时,颜色将被随机选取。 而属性则会检查其所有的子属性,并会将材质分配给所需表面。

最新更新: 2017-07-03