Cocos Creator 3.8 中实现割绳子游戏物理效果

ece06da7112db30846049fcfeae1b5a7.gif

游戏录屏

引言

近日,笔者在某个砍树游戏的广告中看到一个非常有趣的割绳子小游戏,据说这个砍树游戏也是用Cocos引擎开发的,出于好奇,研究了下如何在Cocos  Creator 3.8 中简单地实现一下割绳子游戏效果。

其实割绳子游戏在2010年的时候就已经非常地火爆,它的火爆离不开它的简单易上手、趣味性以及交互性强。

言归正传,今天给大家介绍一下如何用Cocos游戏引擎实现割绳子游戏效果

本文涉及的源码可前往【阅读原文】获取

1. 实现割绳子游戏的关键是什么?

主要包括以下几个方面:

  1. 物理系统的应用:Cocos Creator 3.8提供了强大的物理系统,可以利用物理引擎来模拟绳子的运动、碰撞等行为。通过设置绳子的刚体属性、应用关节等方式,可以实现绳子的刚体模拟和物理效果。

  2. 触摸事件的处理:割绳子游戏主要通过玩家的触摸操作来切割绳子,因此需要对触摸事件进行处理。

  3. 关节连接的管理:游戏中的绳子通常由多个刚体组成,并通过关节连接起来。在Cocos Creator中,可以利用距离关节(DistanceJoint2D)或其他类型的关节来连接绳子的各个部分,并根据需要进行管理和控制。

2. DistanceJoint2D组件的应用

DistanceJoint2D组件即距离关节组件,作为Cocos游戏开发中常用的2D关节组件。

笔者认为,该组件最为真实地模拟了现实中没有弹性的绳子效果。

距离关节(Distance Joint) 会将关节两端的刚体约束在一个最大范围内。超出该范围时,刚体的运动会互相影响。

2d3febccc2fffd9b59e0f489c94ca97b.gif
Cocos Creator 3.8 使用手册中的距离关节

低于该范围则不会互相影响。

f5a663389ee420ee2adb959e85459d67.gif
Cocos Creator 3.8 使用手册中的距离关节

3. 割绳子游戏效果的Cocos实例

1.资源准备

首先我们先去美术妹子那里借来一段绳子和一个简单的图钉。

然后再借用一下前面一期的文章《你知道怎么控制老虎机的中奖概率吗》中的资源。

58490b00d6d2b8ea50ae0b84977d56e3.png

2.拼UI

由于在初始化的时候需要根据两个物体的距离生成不同长度的绳子,因此我们需要先把绳子的SpriteType改成TILED。然后做成Prefab备用。

14b653d25c2df5d538896db2a0d126a1.gif

然后简单地拼一下UI,主要包括两部分,一部分是固定的钉子,另外一部分是一些可移动的悬挂的物品。绳子部分我们通过代码动态生成。

08a14bc540c4de7f86a91c44a68659e0.png

钉子需要修改Rigidbody2D组件的Type属性为Static使其静止固定。

f05d283fc1c9b94e852116973db41869.png

3.写代码

首先创建一个RopeDistanceJoint2D组件,继承我们的核心组件DistanceJoint2D,用于拓展功能动态生成我们的绳子。

3fa5350a936213ccf2c4f51c6d6f4f07.png

然后在动态生成绳子后,给绳子添加一个Rope绳子组件,初始化一下,监听节点位置变化,用于根据实际情况更新绳子的位置和角度以及长度。

97461e444412a8c9dd5ec422909f5080.png

根据实际的物理效果,不断更新绳子的位置和角度以及长度。

a915ebd4bb440153590e871bdca7b78e.png

最后提供一个cut接口,用于手指滑动切割销毁绳子,记得在onDestroy中取消事件的监听和对RopeDistanceJoint2D组件的销毁。

3878f6af47b71bb8dfff0edc9d5dd621.png

割绳子效果我们通过CutTheRope组件去实现。主要包括两部分,一部分是监听我们的触摸事件,另一部分是通过Graphics组建绘制我们的切割线。

84c3ac1b1f043175c8de74230f530920.png

其中检测划线与绳子相交的核心方法是通过PhysicsSystem2D.instance.raycast找出被切割的绳子,这样我们就可以通过给定的接口对绳子进行切割。

00b1fcd59d8c0ded8b1148e642556270.png

最后给我们的物品添加RopeDistanceJoint2D组件即可大功告成,可以根据具体情况添加多个连接不同的物品。

e228c63fc15860cf26f63f8604b76d94.png

4.注意事项

  • 所有物品都需要添加2D物理世界的核心组件Rigidbody2D2D刚体。

  • DistanceJoint2D组件连接的物体必须带有Rigidbody2D组件。

  • 需要给物体配置Linear Damping线性速度衰减系统,否者物体会永动。

  • 需要勾选DistanceJoint2D组件的Collide Connected,才能使连接的物品之间发生碰撞。

5.效果演示

绳子连接及切割效果。

01d0f3ebbb8929f1afaa92752a0aa4d7.png

动态效果图。

63f9f6a738cce61a5dc3317402de8445.gif

结语

以上是在 Cocos Creator 3.8 中实现割绳子游戏效果的所有内容。希望能够对大家有所帮助。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《填色之旅》《方块掌机经典》《贪吃蛇掌机经典》《重力迷宫球》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值