[经验分享] OpenHarmony-Unity游戏开发实例分享:“基于OpenHarmony—团结引擎的应用开发赛”获奖作品Road Rage介绍及源码 原创

深开鸿-孙炼 显示全部楼层 发表于 2024-6-21 11:17:39

前言

近期,OpenHarmony 社区举办了“基于OpenHarmony—团结引擎的应用开发赛”,东南大学的李光伟同学在深开鸿实习期间,由王石指导,以《Road Rage》作品参赛,获得高校游戏组二等奖。此次开发的游戏,也作为OpenHarmony游戏场景的测试应用,将代码开源提交到集成测试孵化仓 ostest_integration_test

介绍

本示例主要模拟移动端 3D 游戏场景,使用 Unity 游戏引擎开发,是一个第三人称视角的驾驶类游戏。本示例应用使用到了 OpenHarmony 设备的触屏、加速度传感器、网络、声音以及震动等能力,以此测试设备的性能以及上述功能是否正常。

效果预览

  • 场景变化

    image.png

  • 体感操控

    image.png

  • 联机游戏

    image.png

工程目录

项目分为两个目录:UnityProjectOHProject

  • UnityProject:Unity 项目目录,包含了游戏的所有资源、脚本等,用于开发游戏的逻辑和场景,具体目录结构如下: <pre class="code-fence" md-src-pos="1416..1838"><div class="code-fence-highlighter-copy-button" data-fence-content="Um9hZC1SYWdlL0Fzc2V0cy8KfC0tLUFuaW1hdGlvbnMgICAgICAjIOWKqOeUu++8iOmdouadv+WIh+aNouOAgemBk+WFt+aXi+i9rOOAgeeOqeWutui9pui+hui/kOWKqOetie+8iQp8LS0tQXVkaW9zICAgICAgICAgICMg6Z+z6aKR77yI6K+t6Z+z44CB6L2m6L6G5byV5pOO44CB56Kw5pKe44CB54K55Ye7562J77yJCnwtLS1NYXRlcmlhbHMgICAgICAgIyDmqKHlnovmnZDotKjvvIjovabovobjgIHpgZPot6/jgIHmma/op4LjgIHpgZPlhbfnrYnotKjvvIkKfC0tLU1vZGVscyAgICAgICAgICAjIOaooeWei+i1hOa6kO+8iOi9pui6q+OAgei9pui9ruOAgemBk+i3r+OAgeaZr+inguOAgemBk+WFt+etie+8iQp8LS0tUHJlZmFicyAgICAgICAgICMg6aKE5Yi25L2T77yI6L2m6L6G44CB6YGT6Lev44CB6YGT5YW3562J77yJCnwtLS1TY2VuZXMgICAgICAgICAgIyDmuLjmiI/lnLrmma/vvIjku4XmnInkuIDkuKrkuLvlnLrmma/vvIkKfC0tLVNjcmlwdHMgICAgICAgICAjIEMjIOiEmuacrO+8iOi9pui+huaOp+WItuOAgeWMuuWdl+WSjOi9pua1geeUn+aIkOOAgeWIhuaVsOiuoeeul+OAgeWtmOaho+ivu+aho+OAgVVJ5Lqk5LqS562J77yJCnwtLS1TcHJpdGVzICAgICAgICAgIyBVSSDlm77lvaLotYTmupAKXC0tLVRleHR1cmVzICAgICAgICAjIOe6ueeQhui1hOa6kO+8iOi9pui+huOAgemBk+i3r+OAgeWkqeepuuebkuetie+8iQ=="><img class="code-fence-highlighter-copy-button-icon"/></div><code class="language-text" md-src-pos="1416..1838"><span md-src-pos="1416..1424"></span><span md-src-pos="1424..1442">Road-Rage/Assets/</span> <span md-src-pos="1442..1486">|---Animations # 动画(面板切换、道具旋转、玩家车辆运动等)</span> <span md-src-pos="1486..1527">|---Audios # 音频(语音、车辆引擎、碰撞、点击等)</span> <span md-src-pos="1527..1569">|---Materials # 模型材质(车辆、道路、景观、道具等质)</span> <span md-src-pos="1569..1613">|---Models # 模型资源(车身、车轮、道路、景观、道具等)</span> <span md-src-pos="1613..1650">|---Prefabs # 预制体(车辆、道路、道具等)</span> <span md-src-pos="1650..1686">|---Scenes # 游戏场景(仅有一个主场景)</span> <span md-src-pos="1686..1744">|---Scripts # C# 脚本(车辆控制、区块和车流生成、分数计算、存档读档、UI交互等)</span> <span md-src-pos="1744..1774">|---Sprites # UI 图形资源</span> <span md-src-pos="1774..1813">---Textures # 纹理资源(车辆、道路、天空盒等)</span> <span md-src-pos="1813..1814"></span><span md-src-pos="1833..1838"></span></code></pre>
  • OHProject:从 Unity Editor 中导出的 OpenHarmony 项目,用于构建、调试和运行游戏。

示例详细介绍

操控方式

游戏针对移动端设备提供了 触屏加速度传感器 两种方式来控制车辆的运动。 在主菜单左下方的设置按钮中可以选择是否开启加速度传感器控制。

  • 当关闭加速度传感器时,车辆的左右移动是通过触摸屏幕左侧的方向按钮控制,加减速是通过触摸屏幕右侧的刹车、油门按钮控制;

  • 当开启加速度传感器时,玩家可以通过倾斜设备来控制车辆的左右移动,方向按钮将被隐藏,不再生效。 加减速的控制不变,仍通过触摸屏幕右侧的刹车、油门按钮控制。

    image.png

游戏模式

游戏分为 单人模式局域网联机的多人模式

  • 在单人模式下,游戏当前设计为两关,有车流量、玩家车辆速度和目标里程的区别;

  • 在多人模式下,游戏场景不变,只设有一关,目标里程数介于单人模式的两关之间。 但玩家的碰撞、拾取金币行为将会对对手造成影响。

    image.png

游戏玩法与创意

游戏启动后,进入游戏主界面,下方从左到右有以下按钮:设置车辆选择多人游戏(在发现其他玩家后出现)和 单人游戏

  • 设置界面:可以调整是否开启游戏声音、设备震动和加速度传感器控制。

    image.png

  • 车辆选择:游戏提供了多辆车供玩家切换,除初始车辆外,需要通过金币解锁。

    image.png

  • 单人游戏:点击后进入游戏场景,屏幕上方显示游戏已进行的时间,右侧为行驶进度、车损程度、当前金币数,左侧为已行驶的里程数。屏幕下方为车辆的控制按钮:左右方向按钮和油门、刹车按钮。

    image.png

  • 游戏开始,玩家所控制的车辆逐渐加速,道路上有行驶速度较慢的NPC车辆,与其发生碰撞后玩家车辆受损(右上方血条减少),当前行驶速度和最大速度会相应减少。

    当发生碰撞时,为玩家车辆添加了夸张的变形动画和多种语音提示,以增加游戏的趣味性。

    image.png

  • 当玩家拾取到金币时,玩家车辆可以恢复一定的血量。

    当碰撞次数达到一定值后(血条变为空),玩家车辆会发生爆炸,游戏结束。

    image.png

  • 单人游戏分为两关,目标里程数不同,当玩家行驶到目标里程数且未发生爆炸时,游戏胜利,可以前往下一关。

    image.png

  • 多人游戏多人游戏按钮默认是隐藏的,在发现局域网内有其他玩家后显示。

    游戏在场景加载完成后,将会自动在局域网内寻找玩家,屏幕上方的状态信息显示 正在寻找对手; 当发现其他玩家时将会显示 已找到对手多人游戏按钮将会显示在主界面上 单人游戏按钮左侧。

    image.png

  • 点击 多人游戏按钮后,已匹配到的对手将会同时开始游戏。

    image.png

  • 基本玩法与单人游戏相同,玩家在各自的场景中进行游戏,但玩家的碰撞、拾取金币行为将会对对手造成影响。

    当玩家车辆碰撞,对手会收到提示,对手车辆得到加速增益;

    而当玩家拾取到金币时,恢复车辆血量,对手金币会相应减少,且对手车辆减速。

    image.png

  • 语音提示:游戏在行驶中、发生碰撞、拾取金币、车辆爆炸等情况下,均有不同的语音提示,比如“加速”、“冲刺”、“滚”、“怎么这么菜”等,增添游戏的诙谐感。

  • 关卡设计:游戏设计了两个关卡,在第一关中,玩家车辆行驶速度较慢,车流量有限,玩家可以较轻松地躲避其他车辆,拾取金币,给玩家提供了熟悉游戏操作、熟悉场景的机会; 而当玩家通过第一关,开始第二关的游戏时,车流量增大,车辆行驶速度加快,玩家将需要谨慎控制行驶速度,以避免碰撞。

    image.png

总结

随着OpenHarmony生态越来越成熟,开发者通过团结引擎等开发游戏的越来越方便,通过此例分享,为更多开发者实现自己的创意提供参考。

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部