Cocos Creator 3.8 中实现割绳子游戏物理效果
共 2241字,需浏览 5分钟
· 2024-04-12
![05b02590701cf90b7a46fb364192ec88.webp](https://filescdn.proginn.com/43f070add887befbc44d87101e48cbd3/05b02590701cf90b7a46fb364192ec88.webp)
引言
近日,笔者在某个砍树游戏的广告中看到一个非常有趣的割绳子小游戏,据说这个砍树游戏也是用Cocos引擎开发的,出于好奇,研究了下如何在Cocos Creator 3.8 中简单地实现一下割绳子游戏效果。
其实割绳子游戏在2010年的时候就已经非常地火爆,它的火爆离不开它的简单易上手、趣味性以及交互性强。
言归正传,今天给大家介绍一下如何用Cocos游戏引擎实现割绳子游戏效果。
本文涉及的源码可前往 【阅读原文】获取 。
1. 实现割绳子游戏的关键是什么?
主要包括以下几个方面:
-
物理系统的应用:Cocos Creator 3.8提供了强大的物理系统,可以利用物理引擎来模拟绳子的运动、碰撞等行为。通过设置绳子的刚体属性、应用关节等方式,可以实现绳子的刚体模拟和物理效果。
-
触摸事件的处理:割绳子游戏主要通过玩家的触摸操作来切割绳子,因此需要对触摸事件进行处理。
-
关节连接的管理:游戏中的绳子通常由多个刚体组成,并通过关节连接起来。在Cocos Creator中,可以利用距离关节(DistanceJoint2D)或其他类型的关节来连接绳子的各个部分,并根据需要进行管理和控制。
2. DistanceJoint2D组件的应用
DistanceJoint2D组件即距离关节组件,作为Cocos游戏开发中常用的2D关节组件。
笔者认为,该组件最为真实地模拟了现实中没有弹性的绳子效果。
距离关节(Distance Joint) 会将关节两端的刚体约束在一个最大范围内。超出该范围时,刚体的运动会互相影响。
![690d96feba5ce6177e000d4ccf3fd5cd.webp](https://filescdn.proginn.com/17126796765f45e8e5b02d9b8496af0a/690d96feba5ce6177e000d4ccf3fd5cd.webp)
低于该范围则不会互相影响。
![62b58ca3e7bc04bc29ac645b0074f782.webp](https://filescdn.proginn.com/06ad745ad821ba4c0f4d4a3e95aa24fc/62b58ca3e7bc04bc29ac645b0074f782.webp)
3. 割绳子游戏效果的Cocos实例
1.资源准备
首先我们先去美术妹子那里借来一段绳子和一个简单的图钉。
然后再借用一下前面一期的文章《你知道怎么控制老虎机的中奖概率吗》中的资源。
![a2be099c381e0ecbdefb5009fbd9fae2.webp](https://filescdn.proginn.com/e27fa26c832f47cf033501be25293af4/a2be099c381e0ecbdefb5009fbd9fae2.webp)
2.拼UI
由于在初始化的时候需要根据两个物体的距离生成不同长度的绳子,因此我们需要先把绳子的 Sprite
的 Type
改成 TILED
。然后做成 Prefab
备用。
![493a0d25dfe875b1e02260cc3d68147b.webp](https://filescdn.proginn.com/3e6cb2c19e3a426e76f95934b54dd97c/493a0d25dfe875b1e02260cc3d68147b.webp)
然后简单地拼一下UI,主要包括两部分,一部分是固定的钉子,另外一部分是一些可移动的悬挂的物品。绳子部分我们通过代码动态生成。
![a19f8795ae23d41c37199e9f37fe9817.webp](https://filescdn.proginn.com/9aedffd28b5ce3086b3f4a60e98776cf/a19f8795ae23d41c37199e9f37fe9817.webp)
钉子需要修改 Rigidbody2D
组件的 Type
属性为 Static
使其静止固定。
![46e292bf744aa2fafef848fa4248a7c5.webp](https://filescdn.proginn.com/d691b23a2e7dc0755d4756e429e0b97b/46e292bf744aa2fafef848fa4248a7c5.webp)
3.写代码
首先创建一个 RopeDistanceJoint2D
组件,继承我们的核心组件 DistanceJoint2D
,用于拓展功能动态生成我们的绳子。
![d9a1e1a3fc457bcb88311979b704bd7a.webp](https://filescdn.proginn.com/61a2ee08086202ba841655a0a2b9825e/d9a1e1a3fc457bcb88311979b704bd7a.webp)
然后在动态生成绳子后,给绳子添加一个 Rope
绳子组件,初始化一下,监听节点位置变化,用于根据实际情况更新绳子的位置和角度以及长度。
![b609a2bcc1dc340d3ec5bdb2b25df7bf.webp](https://filescdn.proginn.com/c678994773ebdaf637c91757ee6831ab/b609a2bcc1dc340d3ec5bdb2b25df7bf.webp)
根据实际的物理效果,不断更新绳子的位置和角度以及长度。
![adf5db02210325fb00dc41ff5a3d4b02.webp](https://filescdn.proginn.com/f94785d614323fe39be494703d0af238/adf5db02210325fb00dc41ff5a3d4b02.webp)
最后提供一个 cut
接口,用于手指滑动切割销毁绳子,记得在 onDestroy
中取消事件的监听和对 RopeDistanceJoint2D
组件的销毁。
![7a85fd0f2d0ad6e0bad3dd65e0806d70.webp](https://filescdn.proginn.com/a358c3451d2cdb5263124ce2f1b3e346/7a85fd0f2d0ad6e0bad3dd65e0806d70.webp)
割绳子效果我们通过 CutTheRope
组件去实现。主要包括两部分,一部分是监听我们的触摸事件,另一部分是通过 Graphics
组建绘制我们的切割线。
![65faf42b95a4ce7271abd4c4e7540f49.webp](https://filescdn.proginn.com/6df596d1d76ce650084d91d903a2cdc9/65faf42b95a4ce7271abd4c4e7540f49.webp)
其中检测划线与绳子相交的核心方法是通过 PhysicsSystem2D.instance.raycast
找出被切割的绳子,这样我们就可以通过给定的接口对绳子进行切割。
![0169f7b695422ed706ce9bddbc000130.webp](https://filescdn.proginn.com/3ec99451d69ffe2868c77442ba4875fc/0169f7b695422ed706ce9bddbc000130.webp)
最后给我们的物品添加 RopeDistanceJoint2D
组件即可大功告成,可以根据具体情况添加多个连接不同的物品。
![e43c9df639bead9c84a5a4f1d9802768.webp](https://filescdn.proginn.com/15b4d92b4f7f0932ad5c62e098a4e762/e43c9df639bead9c84a5a4f1d9802768.webp)
4.注意事项
- 所有物品都需要添加2D物理世界的核心组件Rigidbody2D即2D刚体。
- DistanceJoint2D组件连接的物体必须带有Rigidbody2D组件。
- 需要给物体配置Linear Damping线性速度衰减系统,否者物体会永动。
- 需要勾选DistanceJoint2D组件的Collide Connected,才能使连接的物品之间发生碰撞。
5.效果演示
绳子连接及切割效果。
![9063309acdbe19becbfdd2733f1e2f4d.webp](https://filescdn.proginn.com/0973652fa814d2fc762f220742cf4ae4/9063309acdbe19becbfdd2733f1e2f4d.webp)
动态效果图。
![959902b87ee60195d969263d445a6ee5.webp](https://filescdn.proginn.com/150023047c2fd679823eb3148935223f/959902b87ee60195d969263d445a6ee5.webp)
结语
以上是在 Cocos Creator 3.8 中实现割绳子游戏效果的所有内容。希望能够对大家有所帮助。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《 填色之旅 》《 方块掌机经典 》《 贪吃蛇掌机经典 》《 重力迷宫球 》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!