《Cocos Creator游戏实战》背包英雄中的背包功能实现原理

在线体验地址

https://la-vie-est-belle.github.io/backpack/

Cocos Store 购买地址:
https://store.cocos.com/app/detail/6665

运行效果

运行效果

开发环境

  • 编辑器版本:3.8.3
  • 开发语言:TypeScript

实现思路

首先来看下我们在层级管理器中创建了哪些节点。
创建的节点

1. Backpack节点是一个布局节点,上面挂有Layout组件,布局类型是Grid。我们给他加了9个grid item精灵子节点,于是就出现了一个9宫格背包。
布局类型9宫格背包

2. Backpack Cover节点是一个空节点,它永远跟Backpack节点一样大,且位置相同。武器在放入背包时,其实是添加到这个节点上的。

武器节点是添加到Backpack Cover节点上的

3. Weapon Layout节点就是最初展示各个武器的节点。
Weapon Layout

4. 当武器被拖入背包时,背包中的对应位置的网格需要显示成不一样的颜色。这点功能可以通过getBoudingBoxToWorld()math.intersection()函数实现。前者获取当前节点所在的矩形区域,后者可以计算两个矩形区域的相交区域。

注:因为武器节点weaponItem在Weapon Layout节点中,而网格节点grid Item是在Backpack节点下,所以为了判断两个矩形区域是否相交,必须在世界坐标下进行判断。如果两种节点在同一父节点下,那么使用getBoudingBox()即可。

网格变色

5. 当某个武器放在另一个武器上时,原武器会重新返回Weapon Layout节点,同样这个替换功能是通过math.intersection()函数来实现的,如果新放置的武器和原武器有相交,则将原武器放回。
武器替换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

la_vie_est_belle

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值