欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 《Cocos Creator游戏实战》背包英雄中的背包功能实现原理

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

2024/11/19 16:40:49 来源:https://blog.csdn.net/La_vie_est_belle/article/details/141438105  浏览:    关键词:《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()函数来实现的,如果新放置的武器和原武器有相交,则将原武器放回。
武器替换

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com