摘要

习惯了方格形状的二维数组摆放模式后对《泡泡龙》这类参差不齐的摆法束手无策?别怕!免费教程、开源源码全部到位!

正文

效果

数据结构

/*** 泡泡数据对象*/
export interface bubbleData {node: cc.Node,color: number,isLinked: boolean,isVisited: boolean
}

用二维数组表示,在json文件中提前配置好

{"lv1": [[2,2,2,3,3,3,4,4,4],[2,2,0,3,3,0,4,4],[0,2,0,0,3,0,0,4,0],[0,1,1,1,1,1,1,0],[0,0,1,1,0,1,1,0,0],[0,0,1,0,0,1,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],// 其他关卡省略......
}

坐标转化

一个转化工具类

public static readonly SCREEN_W: number = 720;
public static readonly SCREEN_H: number = 1280;
public static readonly BUBBLE_R: number = 40;
/** Y 方向偏差为 40 倍根号 3 */
public static readonly BUBBLE_Y: number = 40 * Math.sqrt(3);/** 传入二维数组行列,返回泡泡对应位置坐标 */
public static convertRowColToPos (row: number, col: number): cc.Vec2 {// 奇数行前方少一个半径宽let posX: number = this.BUBBLE_R * ((row % 2) + 1) + col * this.BUBBLE_R * 2;let posY: number = this.SCREEN_H - (this.BUBBLE_R + row * this.BUBBLE_Y);return cc.v2(posX, posY);
}/** 传入泡泡对应位置坐标,返回二维数组行列 */
public static convertPosToRowCol (posX: number, posY: number): cc.Vec2 {let row: number = Math.round((this.SCREEN_H - posY - this.BUBBLE_R) / this.BUBBLE_Y);let col: number = Math.round((posX - this.BUBBLE_R * ((row % 2) + 1)) / (this.BUBBLE_R * 2));return cc.v2(row, col);
}

优化碰撞

大多数情况下,乘法是慢于加法的,所以分段检测,x y 两方向都符合要求后再做乘法。

let offsetY = Math.abs(n.y - this.shootBubble.node.y);
if (offsetY > Util.BUBBLE_R * 2) continue;
let offsetX = Math.abs(n.x - this.shootBubble.node.x);
if (offsetX > Util.BUBBLE_R * 2) continue;
let dis = offsetX * offsetX + offsetY * offsetY;
if (dis > Util.BUBBLE_R * 2 * Util.BUBBLE_R * 2) continue;
// 在范围内,触发碰撞,停止射击移动
this.isShooting = false;
// ......

视频地址

录了教程放在了 Bilibili 视频站。
跳转链接:
https://space.bilibili.com/128813294
O(∩_∩)O~~
记得点赞哦!

结语

开源地址:
https://github.com/KuoKuo666/CocosCreator-Bubble

工程源码在我的微信公众号回复关键词【泡泡龙】也可获得

O(∩_∩)O~~

微信公众号

还记得小时候玩的泡泡龙吗?用CocosCreator实现它!相关推荐

  1. 还记得小时候玩的坦克大战么,用Python就可以轻松实现

    <坦克大战>是由Namco游戏公司开发的一款平面射击游戏,于1985年发售.游戏以坦克战斗及保卫基地为主题,属于策略型联机类. 同时也是FC平台上少有的内建关卡编辑器的几个游戏之一,玩家可 ...

  2. java最早的手机网游_还记得你们玩过的最早的手机网游是什么吗?

    不知你们是否记得一个叫做<冒泡社区>的手游平台,在那个传统的功能机时代,冒泡社区可以算是国内第一的手游社区平台了,还记得初一的时候,我爸买了个杂牌子手机,当前用里面的"JAVA& ...

  3. 第一款计算机游戏,还记得你玩过的第一款电脑游戏吗?那些青春已经回不去了...

    记得有一次,饭局上,大家热火朝天的在讨论着<英雄联盟>.忽然,有位颇有诗意的哥们,沉默了--然后忽然抬起头,双眼闪着泪光,问我们:还记得咱们在电脑上,玩过的第一款游戏是什么吗? 我们这几个 ...

  4. 你还记得小时候怎么吃药的吗?

    我家小孩2岁多,以前吃药的时候,如果药是甜的或者有水果味她会主动要,如果是苦的,需要把药压碎放在勺子中,然后加水加冰糖就可以了. 昨天我就想能不能让她像大人一样吃药呢?我就告诉她怎么做怎么做,她答应的 ...

  5. 机器人擂台的利剑_童年回忆!机器人大擂台回来了!还记得当年的利箭吗?

    原标题:童年回忆!机器人大擂台回来了!还记得当年的利箭吗? 80后,90后的朋友们,还记得小时候电视上放的一档节目吗?在一个封闭的擂台上,两个机器人肉搏,一方把另一方打报废为止,选手脑洞大开设计各种机 ...

  6. 你还记得20年前的语文课本吗?

    让你的孩子,变成科学达人! 记得当时年纪小,你爱谈天我爱笑. 有一天并肩坐在桃树下, 风在林梢鸟儿在叫. 不知怎么睡着了, 梦里花落知多少. 还记得小时候的课本吗? 我给你们翻出来啦! 每个句子.每个 ...

  7. 80后的你们还记得这些游戏吗

    80后的你们还记得这些游戏吗 如今手机游戏竞争那样猛烈,不少好玩的游戏没多久就被新的游戏取代,但是能让我怀念的仍是以前的红白机游戏!你的童年有几多时间沉溺正在率性的红白机天下里?啊啊~~暴露年龄了. ...

  8. 70、80后、90后,小时候开学的场景!你还记得吗?

    转眼又是一年开学季 角色转变,现在是目送孩子们去上学 还记得那些年, 我们开学的日子吗? 那时候的农村的学校 水泥地面很少 任何地方都适合杂草生长 一个暑假过完 教室前后.操场.... 全部被杂草占领 ...

  9. 那些年的java游戏_那些年我们曾经玩过的游戏,你还记得几个

    标题:那些年我们曾经玩过的游戏,你还记得几个 随着时间长河的推进,我们已经长大了.你还记得我们那些年一起玩过的游戏么? 弹弓 一般用树枝做弓架,也可以用旱伞的伞骨做弹弓架.要买弹力很大的像皮筋,就和那 ...

最新文章

  1. 【Groovy】编译时元编程 ( 编译时方法注入 | 使用 buildFromSpec、buildFromString、buildFromCode 进行方法注入 )
  2. Dataset之iGAN:iGAN数据集的简介、安装、使用方法之详细攻略
  3. Android Svn 中 Bin ,Gen 目录不进行版本控制
  4. 【SpringBoot】SpringBoot最精简的设置
  5. 基于python的在线考试系统-基于Django的在线考试系统
  6. css 文字超出隐藏显示省略号
  7. 计算机组成原理袁春风百度云,计算机组成原理[袁春风]chap32.pdf
  8. 【电源干货】你的电源模块选对了吗?7招教会你!
  9. 常见视频文件格式详解
  10. PHP slideup,vue+原生JavaScript实现slideDown与slideUp[简单思路]
  11. SQL两张表筛选相同数据和不同数据
  12. 新电脑从另外一台电脑完整拷贝环境,不需要安装环境
  13. 比较员工的年龄大小(继承、异类集合、static)
  14. 思科新版ccna认证网工一定要知道的PIM技术概述
  15. 关于 java 显示GIF
  16. 西京学院学位计算机题库和答案,西京学院 学位英语 普通英语 精彩试题整理.doc...
  17. 英语词根记忆法(5)
  18. 微信小程序 怎么插入图片?image组件的使用教程。
  19. JavaWeb电商 秒杀业务分析
  20. 使用Anaconda创建虚拟环境,并通过Pycharm使用虚拟环境

热门文章

  1. 广而告之:持续交付的魅力——百度技术沙龙,2011年7月23日下午,北京京仪大酒店
  2. Windows Server 下文件同步
  3. 基于PHP+MySQL的宠物领养救助社交网站
  4. STM3日常使用笔记——启动方式
  5. VGG16、VGG19网络架构及模型训练 tricks :训练技巧、测试技巧
  6. 需求管理之相关方分析
  7. 编译原理18:布尔表达式
  8. ioctl _IO,_IOW,_IOWR
  9. 如何在win11中用双硬盘或移动硬盘装Ubuntu 20.04 双系统
  10. 笔记本Ctrl键突然失灵是什么原因?