位置: 编程技术 - 正文
推荐整理分享Cocos2dx3.2 Crazy Tetris 制作简单的凸多边形刚体,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
现在我们要考虑的,就是如何为游戏中的方块添加刚体。
对于俄罗斯方块,我们可以知道,有以下几种方块:
这种我称之为块(block)型
这种我称之为直线(line)型
这种我称之为凸字(bulge)型
这种我称之为正-L(positive_L)型
这种我称之为反-L(negative_L)型
这种我称之为正-Z(positive_Z)型
这种我称之为反-Z(negative_Z)型
总之,方块就是这几种,现在主要问题就是为他们每一个添加刚体。一开始我直接利用PhysicsBody的静态创建方法createPolygon去创建多边形刚体,但是却报错,然后了解到这个只能创建凸多边形。而上面几种方块中,只有block和line是凸多边形,其他的都是凹多边形。(凸多边形的定义可以百度之,简单说就是没有一个内角超过度)
因此,必须想办法用凸多边形拼凑出各个方块,我的解决方法是用形状(shape)来组成这个PhysicsBody,而每一个shape,就如上图中的小正方形一样。如下(附带说明自定义方块类BaseBlock的思路):
首先,在头文件中声明变量:
这些变量的含义在注释中已经说明。其中,shape的顶点集是一个由Vec2(二维向量,可以看成一个点的结构体)组成的vector,因为Vec2其实就是一个简单的点的数组指针,因此定义了一个与之对应的vector<int>来存储每个shape的点的个数。(这里考虑到后面可能会进行裁剪,点个数不一定只有4个)
然后,就是声明并且定义初始化方块的函数:
在函数中,只要:
即可。
最后就是在GameView中调用该函数时,需要方块的顶点数据(此时以该图形的中心点为(0, 0)):
更完善一些可以将数据存储到资源文件中,然后统一封装加载方块的方法。
开启PhysicsWorld::DEBUGDRAW_ALL测试模式,运行效果如下:
关于制作游戏相关其他博客的目录,我放在利用Cocos2dx3.2制作重力版俄罗斯方块(Crazy Tetris)
[置顶] Android用SurfaceView写一个简单有趣的游戏--《数字组合》之一 最近突然有了一个想法--做一款android的简单游戏练练手,既要实现起来简单(毕竟只有一个人,框架什么的暂且就不用考虑了),又要能够达到对android
Cocos2d-x +Android + Windows 7 折腾了一天,看了好些人写的配置,但是乎没有一个能解决所有问题。这里记录下我的安装配置过程、遇到的问题以及解决方法。1.安装JavaJDK和EclipseIDE
〖用cocos2d-android引擎写游戏〗(一)第一个程序HelloWorld 〖用cocos2d-android引擎写游戏〗(一)第一个程序HelloWorld分类:Cocos2d-android引擎--:人阅读评论(1)收藏举报cocos2d-android游戏引擎开发教程java文本为
标签: Cocos2dx3.2 Crazy Tetris 制作简单的凸多边形刚体
本文链接地址:https://www.jiuchutong.com/biancheng/371280.html 转载请保留说明!上一篇:Cocos2dx3.2 CrazyTetris 物理引擎使用初步
下一篇:[置顶] Android用SurfaceView写一个简单有趣的游戏--《数字组合》之一([置顶]游戏名:chivalry2)
友情链接: 武汉网站建设