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

COCOS

共 2241字,需浏览 5分钟

 · 2024-04-12

05b02590701cf90b7a46fb364192ec88.webp游戏录屏

引言

近日,笔者在某个砍树游戏的广告中看到一个非常有趣的割绳子小游戏,据说这个砍树游戏也是用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) 会将关节两端的刚体约束在一个最大范围内。超出该范围时,刚体的运动会互相影响。

690d96feba5ce6177e000d4ccf3fd5cd.webpCocos Creator 3.8 使用手册中的距离关节

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

62b58ca3e7bc04bc29ac645b0074f782.webpCocos Creator 3.8 使用手册中的距离关节

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

1.资源准备

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

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

a2be099c381e0ecbdefb5009fbd9fae2.webp

2.拼UI

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

493a0d25dfe875b1e02260cc3d68147b.webp

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

a19f8795ae23d41c37199e9f37fe9817.webp

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

46e292bf744aa2fafef848fa4248a7c5.webp

3.写代码

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

d9a1e1a3fc457bcb88311979b704bd7a.webp

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

b609a2bcc1dc340d3ec5bdb2b25df7bf.webp

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

adf5db02210325fb00dc41ff5a3d4b02.webp

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

7a85fd0f2d0ad6e0bad3dd65e0806d70.webp

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

65faf42b95a4ce7271abd4c4e7540f49.webp

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

0169f7b695422ed706ce9bddbc000130.webp

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

e43c9df639bead9c84a5a4f1d9802768.webp

4.注意事项

  • 所有物品都需要添加2D物理世界的核心组件Rigidbody2D2D刚体。
  • DistanceJoint2D组件连接的物体必须带有Rigidbody2D组件。
  • 需要给物体配置Linear Damping线性速度衰减系统,否者物体会永动。
  • 需要勾选DistanceJoint2D组件的Collide Connected,才能使连接的物品之间发生碰撞。

5.效果演示

绳子连接及切割效果。

9063309acdbe19becbfdd2733f1e2f4d.webp

动态效果图。

959902b87ee60195d969263d445a6ee5.webp

结语

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

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


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

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

浏览 4
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报