This page has been translated automatically.
Programming
Fundamentials
Setting Up Development Environment
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Bounds-Related Classes
Containers
Controls-Related Classes
Core Library
Engine-Related Classes
GUI-Related Classes
Node-Related Classes
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes
Utility Classes
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

将Cars(汽车)导入City Traffic(城市交通)系统

本教程旨在帮助您将您自己的汽车导入City Traffic(城市交通)系统。

要求

  • 这里假设您已经有了一个汽车的3D模型,以及准备要导出的车轮。
  • 这里假设已经安装了City Traffic(城市交通)系统。

导出选项

这部分包含了在您将自己的模型从3D设计软件中导出时应该遵守的一些重要准则。 汽车的网格和车轮要分别导出。

要想将您的mesh导入到City Traffic系统,须借助指定参数先对其导出:

  1. 您的汽车应具有检测盒表面。 该表面被用来通过相交射线检测该汽车。

  2. 汽车的朝向应为+Y。 这意味着汽车的前方应有正的Y方向。

    警告
    【不】推荐在Unigine Editor内更改mesh的朝向。 您需要在3D设计软件中设置mesh,之后将其导出!

在导出车轮时您应考虑如下情况:

  1. 您需要导出直立的车轮。

  2. 您应该从3D设计软件导出2个车轮(左和右),或者为左右两边只导出1个具有不同表面的车轮;这样做的原因是,在Unigine Editor中是严格禁止旋转车轮的。
注意
要想了解如何从3D设计软件导出模型,就请您参阅适用3ds Max的Unigine插件适用Maya的Unigine插件章节中的相应部分。

添加实体(Entity)

这部分介绍了如何将由3D设计软件导出的汽车添加给City Traffic系统。

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

要想创建新实体,须执行如下操作:

  1. 从SDK Browser中启动Driving editor。

  2. 通过点击Plugins(插件) -> Game Framework(游戏框架)打开Game Framework插件窗口。
  3. 在打开的窗口中选择Car实体,然后点击New Entity(新建实体)按钮来创建从Car基类继承来的新的car实体。

  4. 点击Create(创建)按钮为您的car创建实体。
  5. 选择创建的实体并点击Edit logic(编辑逻辑)按钮。

  6. 在打开的文件中添加如下代码:
    源代码
    void onInit() {
    	// 在此放置您的init代码
    }
    		
    void onShutdown() {
    	// 在此放置您的shutdown代码
    }
    		
    void onUpdate() {
    	// 在此放置您的update代码
    }
    	
    void onRender() {
    	// 在此放置您的render代码
    }
    		
    void onFlush() {
    	// 在此放置您的flush代码
    }

导入Car

待创建完实体之后,您就需要将该car添加给City Traffic系统。 要想导入car,须执行如下操作:

  1. 将car作为ObjectMeshStatic节点添加给City Traffic系统。
  2. 打开Nodes(节点)面板,选择您刚刚添加的car的节点。 切换至它的Surfaces(表面)标签页。

  3. 选择检测盒的表面更改如下参数:

    1. 除了Intersection(相交)Enabled(启用),取消选中所有的复选框。 应只有Intersection(相交)Enabled(启用)复选框是启用的。
    2. Intersection(相交)掩码更改为00000100
    3. Viewport(视窗)掩码更改为00000002
    4. 设置box_detection材质。
  4. 将其它表面都取消选中Intersection(相交)Collision(碰撞)复选框。
  5. 为节点添加Rigid型body,并在Shape-based mass parameters(基于形状的质量参数)复选框未勾选的情况下将其勾选。

  6. 为节点添加Box形状,并指定该形状的大小和位置。 您之所以应该指定形状的边界靠近汽车车体的mesh的边界,是因为虚拟世界的物理(Physics)会对添加的形状有影响。
    正确的形状大小及其位置
    不正确的形状大小及其位置
  7. 更改如下Shape(形状)参数:

    1. Mass(质量)参数更改为4
    2. Friction(摩擦力)参数更改为1
    3. Restitution(复原)参数更改为0
    警告
    【不】更改Shape(形状)位置的X值!
  8. 取消选中Body(实体)标签页内的Shape-based mass parameters(基于形状的质量参数)复选框。
注意
我们推荐将汽车质量设置为4kg左右,将Z轴的质心设为0.75左右。

导入车轮(Wheels)

待添加完car之后,您就应该将车轮添加给它:

  1. 将车轮作为ObjectMeshStatic节点添加给City Traffic系统。
  2. 确保车轮成为car的子节点。
  3. 将车轮设置给car。 车轮应处于汽车悬架的最大高度位置(就像汽车被千斤顶顶起时那样)。

    正确的车轮位置
    不正确的车轮位置
  4. 将车轮的每个表面都取消选中Intersection(相交)Collision(碰撞)复选框。
  5. 为节点添加Rigid型body,并在Shape-based mass parameters(基于形状的质量参数)复选框被勾选的情况下将其取消选中。
  6. car_wheel属性分配给车轮并点击Edit property(编辑属性)按钮。

  7. 为车轮设置必要参数。

    注意
    默认情况下,我们将前轮用于steering(转弯)driving(行车),后轮用于hand brake(手刹)
  8. 将其它车轮添加给car。 为每个添加的车轮都执行先前的步骤。
    警告
    【不要】在Unigine Editor中旋转车轮! 对于左右两个车轮,您应该使用2种不同的车轮网格(meshes),或者使用具有右表面和左表面的1个车轮的mesh!
    注意
    如果您想克隆车轮节点,还请不要忘记为其设置属性参数。

将NodeReference(节点引用)添加给实体(Entity)

待创建完带有车轮的car节点之后,您就应该为已被创建的实体创建节点引用。 为此,您需按如下步骤操作:

  1. 选中您的car节点并点击Make a NodeReference(创建节点引用)按钮。

  2. 在打开的对话框窗口中选择要保存节点的文件夹,并指定节点文件的名称。

待NodeReference(节点引用)文件被创建之后,您就应该将其分配给实体。 为此,需按如下步骤操作:

  1. 通过点击Plugins(插件) -> Game Framework(游戏框架)打开Game Framework插件窗口。
  2. 选择您的实体并点击Select node file(选择节点文件)按钮。

  3. 在打开的对话框窗口中选择已保存的节点文件。
    注意
    待NodeReference(节点引用)文件被创建之后,您就可以从虚拟世界移除car节点了。

现在,您拥有的是分配有节点的实体。 要想将该实体添加给虚拟世界,只需将其拖拽(从Game Framework插件窗口)进Editor即可。

如果您将car实体添加给了虚拟世界,但之后不知如何处理它(例如,car的车轮是位于地面之上的),这时您就应该为添加的节点设置参数。 为此,可打开Nodes(节点)窗口,选择添加的实体的节点并选择Entity Fields(实体字段)标签页。

在这里,您能找到大量可帮您调节您汽车行为的参数。 例如:

  • 如果您想控制自己的car,就应该为Player(玩家)设置Driver Type(驾驶员类型)参数,同时设置Camera Target(摄像机目标点)复选框。
    警告
    只有一个实体能启用Camera Target(摄像机目标点)复选框!
  • 如果car的车轮是位于地面之上的,那还要设置Wheel Radius(车轮半径)参数。
注意
参阅Cars(汽车)章节可了解您能为实体应用什么样的物理设置和动力学设置。
最新更新: 2017-07-03
Build: ()