[Cocos Creator 3.5赛车游戏]第6节 使用和控制刚体组件

在前面的章节中,您已经学会了如何使用自定义脚本来控制汽车节点,这一章您将学会为汽车节点引入刚体系统。官方文档对刚体的解释是:“刚体是组成物理世界的基本对象,可以将刚体想象成一个您不能看到(绘制)也不能摸到(碰撞)的且不能变形的物体”。翻译过来就是,如果一个节点有了刚体属性,那么这个节点就有了物理方面的特性,例如:质量、速度、阻力、速度等等。这一章您将会理解和使用物理系统中的刚体组件,并且实现一个效果:“游戏开始2s后的第一帧后的汽车持续受到前方2N的力而改变运动状态”。(章节源码、答疑和交流移步 https://t.zsxq.com/5JQPx

1.为汽车节点节点填加刚体:

在层级管理器中鼠标左键点击CarSprite节点,在右侧的层级管理器中点击“添加组件”按钮,展开Physics2D分组,选择其中的RigidBody2D。最终效果如下:

如果您疑问为何是给CarSprite节点添加刚体而不是给Car节点添加刚体,这说明您是飞机上挂暖瓶,但是也请先把刚体暂时挂载到CarSprite中,感谢您的配合。

2.设置刚体属性

如您所见,属性检查器中的RigidBody2D组件下有多个可以设置的属性值,各个属性值如下,这里,我直接引用了官方的文档说明:

AlllowSleep表示刚体是否自动休眠,这里先都设置为不允许,对于这个参数的定义,在后面性能优化篇有可能会讲到。这里我们只会用到Type和GravityScale,其他的属性除了AllowSleep不打钩以外都取默认值。Type的可选值有如下几个:

所以您大概可以猜到,对于汽车节点这种需要运动的节点我们要选择它的刚体类型为Dynamic类型。至于GravityScale,因为我们要做的是俯视视角的2D游戏,所以是不用考虑重力的,因此,GravityScale设置为0,所以,最终刚体组件的属性设置如下:

3.将刚体组件作为变量添加到自定义脚本CarControl中

我们已经将刚体组件添加到汽车节点中了,现在需要在我们的CarControl代码中来获得这个刚体来开展后续的操作。在代码中,我们可以采用类似注入的方式来将刚体作为成员变量加入到脚本中

首先,双击CarControl脚本来让VS Code打开并编辑它,在CarControl脚本中声明被注入的变量:

其中carRigidBody就是指向刚体的变量,它的类型为RigidBody2D,@property({type: RigidBody2D})作为注解,用来告诉Cocos Creator这个变量需要由开发者进行手动指定。所以为了手动指定carRigidBody变量指向哪个组件,现在您需要切换回Cocos Creator窗口,鼠标左键点击Car节点,您会发现Car节点所挂载的CarControl脚本有一个需要您选择的同名字段:

现在,请您点击这个同名属性的右边的选择按钮:

在您点击后将会出现所有可选项,因为这个字段我们在代码中声明的它应是RigidBody2D也就是刚体类型,所以可选项将会把本项目里所有挂载有刚体组件的节点列出来,现在我们这个项目中只有CarSprite这一个节点挂载了刚体,所以,您应该也只能选择CarSprite,在您选择完成后,效果如下:

4.使用刚体来控制小车的运动状态

现在您已经理解了和使用了物理系统中的刚体组件,还差实现一个效果:“游戏开始2s后的第一帧后的汽车持续受到前方2N的力而改变运动状态”。我们分析一下应该如何实现这个效果,update(dt: number)放啊的dt参数是表示当前帧距离前一帧的时间,所以我们只需要在每次update方法中检查下之前已经累计的dt是否超过了2s并且是否已经施加过力了,如果满足了累计时间超过2s,则给刚体施加一下前方2N的力。

所以,我们分为两个部分来实现以上过程,首先是检查当前时间是否已经在运行后超过了2s:

然后是第二部分,也就是超过2s的情况下就施加一个前方2N的力给刚体。Cocos 中给刚体的质心施加力的方法是applyForceToCenter(force: math.Vec2, wake: boolean),其中:force参数表示要施加的力,由Vec2类型来指定x轴方向和y轴方向的分力各是多少,由于我们要施加的力是正前方2N,所以显然x取0,y取2;wake参数表示是否唤醒刚体,和前面的刚体都默认设置永不休眠一样,在这里我们先让这个参数为true。所以综上,加入第二部分逻辑后代码如下:

5.运行并验证

现在,确保已经保存您的代码并切换回Cocos Creator中,确保改动也保存后点击运行按钮,在浏览器中观察效果:

以上就是本章的全部内容,现在您已经可以使用并初步控制刚体了,接下来您将会学到如何接收来自玩家的控制来控制刚体的多种运动方式。

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

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值