位置: 编程技术 - 正文

Cocos2dx3.2 CrazyTetris 单线裁剪 对于判断消除的思考(一)

编辑:rootadmin

推荐整理分享Cocos2dx3.2 CrazyTetris 单线裁剪 对于判断消除的思考(一),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

由于不是规则的俄罗斯方块,在消除时,很可能产生不规则的图形,因此,如何判断是否达到消除条件,以及进行方块的裁剪将是本游戏的一个关键问题。

我在做这个游戏时,采用的是最直接的方法,也就是最笨的方法,直接进行裁剪判定。如果有比较好的算法,希望大家可以和我交流。

首先,接上一篇,由于我们创建的刚体模型,需要是凸多边形,因此,每个初始方块都由四个正方形小方块构成。如图:

而本游戏中,方块的旋转应该是任意的(而不是原版游戏中每次旋转都是度)。因此,当上面的方块停落时,很有可能是这样的方向:

因此,该方块在消除时,可能会发生这样的消除:

这是就需要进行裁剪,同时要满足裁剪后内部刚体还是凸多边形。其实很明显,我们只要分别裁剪里面的几个小方块即可。显而易见,一个凸多边形在经过一条直线切割后,生成的图形还是凸多边形。

接下来就是这个裁剪该如何做的问题了。

虽然每次消除是消除两条直线中间的部分,但是无论是两条直线分割图形和一条直线分割图形其实并无本质区别。因此,这种情况下,只考虑单线裁剪。

现在,我们开始考虑单线情况下的裁剪,如图:

Cocos2dx3.2 CrazyTetris 单线裁剪 对于判断消除的思考(一)

裁剪线与图形整体可能存在相交和不想交问题,即使相交,也可能只与部分内部方块相交,而对于其中的一个方块,还要考虑其和哪一个边相交,故而去裁剪那一个边。

由于最终是按边裁剪,因此我们不考虑整体、不考虑构成整体的小方块,而是考虑构成小方块的几条边。

因此可能会出现以下几种情况,其中蓝点代表起始点,绿点代表终止点(一个边是一条向量):

这种情况是两点在裁剪线上部,不需要进行裁剪。

这种情况是两点在裁剪线下部,也不需要进行裁剪。

这种情况是裁剪线与边相交,两点分列裁剪线两侧,但是起始点(蓝点)在下,终止点(绿点)在上。

此时需要进行裁剪,起始点(蓝点)和裁剪点(裁剪线与边相交的点)成为裁剪完成后下边图形的边,裁剪点(裁剪线与边相交的点)和终止点(绿点)为裁剪完成后上边图形的边。

这种情况是裁剪线与边相交,两点分列裁剪线两侧,但是起始点(蓝点)在上,终止点(绿点)在下。

此时需要进行裁剪,起始点(蓝点)和裁剪点(裁剪线与边相交的点)成为裁剪完成后上边图形的边,裁剪点(裁剪线与边相交的点)和终止点(绿点)为裁剪完成后下边图形的边。

我们没有必要逐一去计算交点,然后判断。因此可以使用上面的方法,先判断情况,然后再根据情况适时进行计算裁剪。

这里使用的思想是,裁剪完成后,生成上部图形和下部图形。裁剪线上部编码为0,下部编码为1。以顺时针方向取方块中的两点,起始点和终止点。直接根据两点的y&#;,判断两点的编码&#;。

如果编码&#;相同,说明两点在裁剪线的同一侧,此时边必定没有与裁剪线相交。因此,不进行裁剪。但是需要根据编码&#;,将这两点按顺序归入上部图形或者下部图形。

如果编码&#;不同,进行裁剪,得到裁剪点。然后根据起始点位置,如果起始点编码为0,在裁剪线上部,则将起始点和裁剪点顺次归入上部图形中,将裁剪点和终止点顺次归入下部图形中;反之,则将起始点和裁剪点顺次归入下部图形中,将裁剪点和终止点顺次归入上部图形中。

算法思想大致如此,代码实现如下:

关于制作游戏相关其他博客的目录,我放在利用Cocos2dx3.2制作重力版俄罗斯方块(Crazy Tetris)

cocos2dx 3.1.1 win8+eclipse环境下android游戏开发环境搭建 最近又开始看cocos2dx,以前2.x版本的时候都是在linux下进行开发,主要是为了避免安装cygwin,现在新版ndk可以不依赖cygwin进行编译了,于是将开发环境移

cocos2dx-3.1.1 win8+eclipse+android开发 初学者容易迷惑的两个问题 这段时间学习cocos2dx,在理解上容易有几个疑惑的地方,写篇blog记录一下。第一个是资源存放的目录,在使用eclipse进行开发时,有个地方很容易产生误

Android 2D游戏引擎AndEngine快速入门教程 Android2D游戏引擎AndEngine快速入门教程介绍:AndEngine是一款知名的Android2D游戏引擎。该引擎代码开源,并且可以免费使用。本书详细讲解如何使用AndEngine

标签: Cocos2dx3.2 CrazyTetris 单线裁剪 对于判断消除的思考(一)

本文链接地址:https://www.jiuchutong.com/biancheng/371284.html 转载请保留说明!

上一篇:〖用cocos2d-android引擎写游戏〗(一)第一个程序HelloWorld(cocos2dx 2.2.2)

下一篇:cocos2dx 3.1.1 win8+eclipse环境下android游戏开发环境搭建

  • 公司中介费收入如何纳税
  • 购买信息技术服务费摘要怎么写
  • 赠送的产品价格为0怎么入库
  • 进项和销项税额需要结转吗
  • 上月计提工资下月要冲回吗冲会吗
  • 支付货款未收到产品算货值吗
  • 当期处置子公司,当期还纳入合报范围嘛
  • 发票到了款未付账务处理
  • 固定资产盘点账实不符
  • 二手房如何缴纳契税
  • 民间非营利组织会计报表
  • 没有抵扣怎么办
  • 采购入库损耗如何计算
  • 社会团体收到的投资款怎么入账
  • 第三方汽车贷款平台有哪些
  • 通用机打发票开具给个人是否需要缴税?
  • 空调安装企业能申请工程发票吗?
  • 银行手续费跨月怎么计算
  • 公允价值变动损益是什么意思
  • 建材公司将自产产品卖出
  • 取得甲供材料按简易征收发票能抵扣吗
  • 在产品的成本
  • 未办理外经证如何处罚
  • 食堂外包服务费可以抵扣进项税吗
  • 可供出售金融资产是指什么
  • 小微企业税收优惠政策最新2023
  • 呆账怎么写会计分录
  • 穿越火线刷枪视频教程
  • 增值税专用发票和普通发票的区别
  • 华为手机悬浮导航是干什么用
  • 小规模纳税人销售自己使用过的汽车
  • php开发常用技术
  • linux操作系统有哪些版本
  • 怎么解决在澳洲吸烟
  • 增加注册资本的请示
  • Ant Design Pro(5)-7.高级表格ProTable
  • 通过session实现用户的登录与登出功能
  • 净资产现金回收率说明什么
  • 常用的3个第三方类库
  • 房产税土地税用不用计提
  • vue3封装axios
  • framework3.5启用
  • ICLR‘23 UnderReview | LightGCL: 简单而有效的图对比学习推荐系统
  • 核定征收的纳税人能否享受六税两费减免
  • DedeCMS V5.7 SP2前台文件上传漏洞
  • 回扣没拿到也算违法吗
  • 小企业一年需要缴纳多少税
  • 利润表和资产负债表
  • mysql数据库命名 可以用-吗
  • 个体户查账征收和核定征收哪个好
  • 免交的增值税要交所得税吗
  • 融资租赁的会计处理方法举例子
  • 购买产品样品计入什么科目
  • 会展费会计分录
  • 医疗器械销售能一年挣一百万么
  • 暂估成本对冲分录怎么写
  • 全额抵扣怎么申报
  • 应收账款怎么记录
  • xp系统卡到开机画面
  • 修改远程桌面端口命令是什么
  • 极速一键装机
  • win7开机过程中黑屏
  • ati2mdxx.exe是什么进程 ati2mdxx进程信息查询
  • win8安装界面
  • windows8网络连接
  • cocos creator3
  • android skia opengl
  • node.js+mysql
  • wifi基本功能
  • Unity3D事件函数的执行顺序
  • 安卓系统休眠设置在哪
  • 下载python教程
  • 跨浏览器插件
  • 长沙税务局网上开票
  • 河北电子税务局手机app
  • 山西省国家税务局王旭斌局长
  • 深圳营业执照办理咨询电话
  • 芜湖买房退契税在哪里退
  • 山东省地方税务局历任局长
  • 广东省地税总局领导班子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设