virtools汽车游戏示例.docx
- 文档编号:6938708
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:14
- 大小:1.96MB
virtools汽车游戏示例.docx
《virtools汽车游戏示例.docx》由会员分享,可在线阅读,更多相关《virtools汽车游戏示例.docx(14页珍藏版)》请在冰豆网上搜索。
virtools汽车游戏示例
实验步骤
选择Resources/OpenDataResource,选择virtools实验/,这样便可以加载本实验的素材数据库了。
场景的建立
载入VTdemorsc/3DEntities/QuadPatch01对象,调整其位置、方向和大小,然后按下SetICForSelected设定其初始值,此时LevelManager窗口里的QuadPatch01对象的IC处会显示X也就是已经设定其初始值了。
同时对象相应的Materials、Textures和Meshes(用于描述对象的表面材质与几何形状)也被载入。
为场景加入光源,点击左侧工具栏的CreateLight工具创建一个光源,命名为MainLight,并调整其位置及参数。
此时对象QuadPatch01是“虚”的,如果把带有物理属性的物体放在上面,会透过“地面”“掉下去”,所以接下来为其加入真实的“地面”效果。
在LevelManager的3DObjects中右键点击QuadPatch01,选择CreateScript,创建QuadPatch01的脚本QuadPatch01Script,双击打开,向其中加入模块BuildingBlocks/Physics/Creation/Physicalize,将其in端与start连接。
双击模块为其设置参数,其中选中Fixed,使QuadPatch01对象在运行时是固定的,不受重力等影响,否则就会在运行时从场景中“掉下去”,选中EnableCollision允许其它对象与之碰撞,这样就相当于为后面加入的汽车、跳板对象设置了一个地面。
将CollisionGroup命名为Floor,表示QuadPatch01对象所属的碰撞组的名字为Floor,属于同一个平碰撞组的对象之间不会发生碰撞。
其它参数如摩擦力、弹力、重量等可以使用默认值。
接下来向场景中加入一块结冰的地面,载入VTdemorsc/3DEntities/Box01对象,并为其创建一个脚本Box01Script,加入一个Physicalize模块与Start连接。
双击设置其参数,由于结冰的地面比较滑,所以将摩擦力改为,其余设置与QuadPatch01Script相同。
加入汽车模型
载入VTdemorsc/3DEntities/carbody对象,以及左前轮VTdemorsc/3DEntities/wheel_FL、右前轮VTdemorsc/3DEntities/wheel_FR、左后轮VTdemorsc/3DEntities/wheel_BL、右后轮VTdemorsc/3DEntities/wheel_BR。
注意四个轮子和车子主体的三色轴线要分别朝向同一方向,轮子的名字可以改变,但必须要包括FL、FR、BL、BR四组字母,因为后面脚本中要加入的操纵汽车的模块PhysicsCar需要据此来获得车轮对象。
接下来选择菜单Editors中的HierarchyManager,将四个轮子对
象拖至carbody对象,这样四个轮子对象便成为车体对象的Children对象,与车体对象成为一个整体(注意每次修改HierarchyManager后,要右键点击修改的对象,选择SetInitialConditionsonHierarchy来保存修改)。
为车子加入主视角摄像机,在左侧面板中点击CreateCamera,创建一个新摄像机并命名为InsideCamera,将其Perspective参数设为24mm,移动到车头的上方,在HierarchyManager将InsideCamera拖至carbody,这样InsideCamera将固定在车头上。
下面我们让汽车动起来。
为对象carbody创建脚本carbodyScript,为了操控车子加入模块BuildingBlocks/Controller/Keyboard/SwitchonKey,将模块On端与Start链接,点击鼠标右键选择Construct->AddBehaviorOutput0加入一个输出端,多次点击直到模块具有6个输出端。
双击模块设置参数如图
,分别用于控制车子前进、后退、左转、右转、刹车、加速。
接着向脚本中加入模块BuildingBlocks/Physics/Special/PhysicsCar,将其On端与Start相连,双击打开设置参数,其中BODYParameters为车身参数数组,WHEEL-SUSPENSIONParameters为车轮参数数组,ENGINE-STEERINGParameters为引擎参数数组。
下面我们载入已经设定好的参数数组VTdemorsc/3DEntities/BODYParameters、VTdemorsc/3DEntities/WHEEL-SUSPENSIONParameters、VTdemorsc/3DEntities/ENGINE-STEERINGParameters,可以在LevelManager中的Arrays找到。
将PhysicsCar中的相应参数设置好后,我们的车子就具备了各项物理属性。
然后将模块SwitchonKey的输出端与模块PhysicsCar相应的输入端链接。
由此车子已经可以在场景中“驰骋”了。
下面为车子加入一个跟随的第三视角,新建一个摄影机命名为FollowCamera,将其Perspective设为Custom,FieldofView设为50,并将其放置在车子的后上方。
建立脚本FollowCameraScript,拖入模块BuildingBlocks/Cameras/Montage/SetAsActiveCamera和BuildingBlocks/3DTransformations/Constraint/LookAt,将SetAsActiveCamera模块的In端与Start链接,使得运行时初始的默认摄像机为FollowCamera。
将SetAsActiveCamera模块的Out端与LookAt模块的In端链接,LookAt模块的参数Referential设为carbody,从而将FollowCamera的拍摄目标设为车身。
为了使摄像机随着拍摄目标的移动而旋转,将LookAt模块的Out端与In端链接,形成循环。
此时摄像机只能旋转,为了使其始终与车子保持一定距离跟随车子移动,载入模块BuildingBlocks/3DTransformations/Constraint/KeepAtConstantDistance,双击设置参数,Position中的Y设为8,使得摄像机镜头距水平面的竖直距离为8,Referential值设为carbody,与车子保持的距离Distance设为15。
接下来为了使视角能够在FollowCamera与InsideCamera之间进行切换拖入两个BuildingBlocks/Cameras/Montage/SetAsActiveCamera模块和两个BuildingBlocks/Controller/Keyboard/KeyEvent模块,如图连接起来,将两个KeyEvent模块的KeyWaited参数设为Enter,第一个SetAsActiveCamera模块的Target参数设为InsideCamera,第二个SetAsActiveCamera模块的Target参数设为FollowCamera。
由此运行时,按下Enter键,视角将在InsideCamera和FollowCamera间切换。
加入跳板模型
载入VTdemorsc/3DEntities/Planche1对象作为跳板的底板,载入VTdemorsc/3DEntities/Planche2作为跳板的斜面,载入弹簧对象VTdemorsc/3DEntities/Spring。
按上文提到的方法在HierarchyManager中将Planche1和Spring设置为Planche2的Children。
为Planche2创建教本Planche2Script,拖入两个模块BuildingBlocks/Physics/Creation/
Physicalize分别用于设置斜面和底板的物理属性,拖入模块BuildingBlocks/Physics/
Creation/SetPhysicsHinge链接斜面和底板的一端,拖入模块BuildingBlocks/Physics/
Creation/Spring设置弹簧的物理属性。
设置第一个Physicalize模块的参数,在碰撞组的名字处输入Planche。
设置第二个Physicalize模块的参数,在模块上点击右键,选择AddTargetParameter,然后左键双击设置参数,将Target设为Planche1,碰撞组为Planche。
设置模块SetPhysicsHinge的参数,将Object2设为Planche1,将JointReferential设为Planche2。
设置模块BuildingBlocks/Physics/Creation/Spring参数如图。
加入吊桥模型
载入VTdemorsc/3DEntities/Bridge_Jump对象,为其创建一个脚本Bridge_JumpScript,并拖入一个Physicalize模块,参数如图设置。
在LevelManager的树型文件目录中右键点击Bridge_Jump对象,选择复制,粘贴后会在目录中出现一个名为的对象,改名为Bridge_Jump2,在场景中将其拖放到Bridge_Jump对面的适当位置。
载入VTdemorsc/3DEntities/Bridge_Board对象,并将其在场景中拖放到与Bridge_Jump对象连接的位置。
创建脚本Bridge_BoardScript,拖入一个Physicalize模块,设置该桥板的物理属性,参数如图设置,
再拖入一个SetPhysicsHinge模块与之连接,参数设置如图,使得Bridge_Board与Bridge_Jump链接起来。
复制Bridge_Board并命名为Bridge_Board2,在场景中拖放到如图位置,与Bridge_Board连接起来。
修改其SetPhysicsHinge模块的参数如图,由此两个桥板被链接起来。
按照此方法创建8块桥板Bridge_Board~Bridge_Board7并链接起来。
最后为了将桥墩Bridge_Jump2与Bridge_Board7链接起来,在Bridge_Jump2的教本中加入一个SetPhysicsHinge模块,参数如图设置。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- virtools 汽车 游戏 示例