【基于Cocos Creator实现的赛车游戏】9.实现汽车节点的控制逻辑

 在上一节的课程中,您已经实现了通过触控给刚体施加里的方式来对汽车节点进行简单的控制。在这一章节中,我们将会实现实现一套完美的控制小车运动的逻辑。不过在这之前,您需要理解一些基本概念。

一、基本概念

1. 节点的旋转角度:

节点的旋转角度是angle参数,如果这个参数大于0则向左旋转,小于0则向右旋转。你可以在start方法中指定下节点的angle数值来看下旋转的效果:

您可能已经猜到了,我们可以通过设置angle的数值来实现转弯的效果。但是angle是不带有圆周率值的,所以在参与sin或者cos计算时,需要用misc.degreesToRadians

方法来将angle值转化为相对于圆周率的值。

二、实现

现在您已经明白了上面的基本概念,现在我们要实现对汽车节点的精确控制。大概效果是用户点击屏幕任意位置,小车都将会调转方向至触控点所在的方位并运动过去。现在请看下面的步骤来一步一步实现:

1. 给刚体添加阻力:

在上一节结束后,您会发现小车在施加的情况下会越来越快,在不受力的情况下保持静止或者匀速直线运动而难以控制,根据基本物理知识您一定可以猜到是因为刚体没有收到类似摩擦力的阻力。所以我们要让刚体时刻都有与触控方向施加的力大小相同但方向相反的阻力。那么如何为刚体添加阻力?您只需要在Car节点的属性检查器中找到刚体组件,将Linear Damping(线性方向的阻力)属性的值设定为您想要的阻力值即可,效果如下:

当然记得将node节点的UITransform的宽度和高度设置为和CarSprite的宽度和高度一致,因为后面还会挂载碰撞体,node的大小影响碰撞体的大小,碰撞体的大小会影响其他物理属性,所以就先让刚体所在的node节点的大小与CarSprite的大小统一,设置完成后效果如下:

2. 实现左转/右转的判断:

对于转向,在收到用户点击时,我们可以先获得触控点的世界坐标,再获取到汽车节点(汽车的根节点Car及其所有子节点都在随着Car上面的刚体组件运动)的世界坐标。假设现在汽车还未发生过旋转,也就是说汽车节点的angle值为0,车头此时指向正前方,此时如果以汽车节点所在的点为原点做个坐标系,则效果如下:

您可以非常直观的看到,只要我们求出来触控点此时相对于以汽车节点位置的坐标,然后对这个相对坐标来判断他的x大于0即为向右,x小于0即为向左。

但是这是在车头面向正前方的情况,当车头有一定旋转角度时,就相当于坐标轴旋转了一定角度,所以在汽车节点angle不为0的时候,相对坐标还要加一层坐标轴旋转后的计算。通过百度找到了一篇写求坐标点绕原点旋转后新坐标的值的博客(求在平面直角坐标系中,一个点绕坐标原点旋转一定角度后点的坐标_一点绕另一点旋转一定角度的坐标_IT集装箱的博客-CSDN博客),但是我们现在的情况是坐标点不变而坐标系旋转,但是也不难,点旋转了x角度就相当于坐标系旋转了-x度,反之亦然,所以只需要把上面博客公式中的x换为-x就可以了,sin(-x)=-sin(x),cos(-x)=cos(x)。所以综上,touchInput中判断向左还是向右的代码逻辑为:

3. 实现向前/向后的判断:

有了上一个对左转右转的判断,我相信您已经知道该怎么判断向前还是向后了。判断向左还是向右是判断相对位置的x值,同理,判断向前还是向后只需要判断相对位置的y值就可以了。具体代码如下:

4. 将touchInput的方向控制系统引入到CarControl中:

没啥说的,请您直接看代码:

5. 测试一下控制系统:

VS Code和Cocos Creator中保存好,然后运行一下,在浏览器界面中点击屏幕来模拟触控,查看输出是否正确:

屏幕上面是我点击右前方的输出。注意,如果您的电脑是Mac,请不要轻点触控板而是将触控板按下去。

以上就是本章节的全部内容,到现在为止您已经学会了实现汽车节点的方向控制逻辑。下一个章节我们将会实现汽车的运动逻辑。

 章节源码、答疑和交流移步 https://t.zsxq.com/5JQPx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cocos Creator是一款集成化游戏开发工具,它可以帮助开发者快速构建游戏Cocos Creator框架文档就是为这个工具而设计的,它详细介绍了框架的各个方面: 1.游戏组件: Cocos Creator游戏组件是构成游戏逻辑的基本单位,如:精灵,动画,音效,等等。框架文档详细介绍了这些游戏组件的实现方式和使用方法。 2.游戏场景: 场景是游戏中不可或缺的一部分,游戏场景的绘制、布局、切换等功能在Cocos Creator中的实现方式和使用方法也被框架文档详细介绍了。 3.游戏节点管理: Cocos Creator中管理游戏节点的方式是通过层次结构进行管理,框架文档详细介绍了如何使用节点管理器来组织游戏节点。 4.贴图管理: 游戏中的图片资源在Cocos Creator中管理方式与其他游戏开发工具略有不同,框架文档详细介绍了如何使用贴图管理器来管理游戏中的图片资源,以及如何使用它们。 5.数据存储: 在游戏开发过程中,需要存储很多游戏数据,Cocos Creator提供了一套数据存储方案,框架文档详细介绍了如何使用数据存储器来存储、读取数据。 总之,框架文档为开发者提供了一个非常完整的Cocos Creator游戏开发体验,帮助开发者更好、更快地完成游戏开发工作。 ### 回答2: Cocoscreator是一款广泛使用的游戏开发工具,它支持多种平台,包括Web、iOS、Android等。针对这款工具,设计游戏框架文档是非常必要的。 游戏框架文档是对游戏开发中使用到的各种类、接口、函数等进行的系统化整理和说明,旨在帮助开发人员更加快速、高效地完成游戏的开发。针对cocoscreator,要编写的游戏框架文档必须包括以下内容: 1.场景和节点 这是cocoscreator的核心组成部分,开发人员应该了解和掌握它们的使用方法。文档可以详细介绍场景、节点的作用、属性和接口等,以及它们在开发过程中的使用场景和注意事项。 2.资源管理 在游戏开发中,资源管理是非常重要的,它关系到游戏的加载速度和性能。因此,游戏框架文档应该对资源加载、复用、释放等方面进行详细说明。 3.事件处理 事件处理是cocoscreator的另一大特色,文档中应该详细说明事件的相关接口和使用方法,包括监听事件、派发事件等。 4.动画和动作 cocoscreator提供了丰富的动画和动作接口,可以制作出生动、有趣的游戏效果。文档中应该详细介绍动画和动作的使用方法和属性等。 5.游戏逻辑和交互 游戏逻辑和交互是游戏的核心部分,文档应该对游戏逻辑和交互流程进行详细说明,以及说明与其他模块的关联和调用方式。 综上所述,设计cocoscreator游戏框架文档对游戏开发至关重要,只有编写出清晰、详尽的文档,才能帮助开发人员快速完成游戏开发,提高开发效率和游戏质量。 ### 回答3: Cocoscreator是一款非常强大的游戏开发引擎,它使用的是JavaScript语言进行编写。设计一款优秀的游戏框架,是成功开发一款游戏的重要因素之一。 Cocoscreator游戏框架文档包含以下几个方面的内容: 1.场景管理器 场景管理器是整个游戏框架中的核心部分,它主要负责游戏场景的管理。在这里可以创建新的场景、进入到不同的场景,以及场景之间的传递和切换。 2.游戏控制游戏控制器主要负责控制游戏逻辑,包括游戏运行时的场景、角色、道具等元素的控制和管理。它可以控制游戏的开始、暂停、继续、结束等操作。 3.角色控制器 角色控制器负责游戏中所有角色的控制和管理。它可以控制角色的移动、攻击、受伤、死亡以及角色之间的互动。 4.界面管理器 界面管理器主要负责游戏中所有界面的管理。界面是游戏中很重要的组成部分,它可以控制游戏的暂停、结束、返回主菜单等操作。 5.音效管理器 音效管理器负责游戏中所有音效的管理。在游戏中添加适当的音效可以增强游戏的娱乐性和吸引力,让游戏更加生动和有趣。 这些功能的协同工作,共同构成了一款成功的游戏框架。通过Cocoscreator游戏框架文档,我们可以更加系统和高效地进行游戏开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值