cocos2dx物理引擎和碰撞检测(四)形状Shapes
来源:互联网 发布:淘宝图片轮播怎么更换 编辑:程序博客网 时间:2024/05/22 05:05
前面让大家了解了物理世界,下面将为大家介绍物理世界中的物体。
形状Shape描述了可相互碰撞的几何对象的外形,它通常会是一个几何图形,这与包围盒的概念非常相似。在引擎当中,形状可以作为一个单独的对象,就算不进行物理模拟,也可独立使用,开发者可以在形状Shape上执行一些函数操作。
类b2Shape是形状的基类,Box2D引擎中各种形状类都是继承自这个基类。此基类定义了几个常用函数:
(1)判断一个点和形状是否有重叠
(2)在形状上执行光线投射(ray cast)
(3)计算形状的AABB
(4)计算形状的质量
另外,每个形状都将会是一个几何图形。所以它有2个成员变量:类型(type)和半径(radius)。引擎当中存在2中类型圆形和多边形。
圆形(Circle Shapes)
圆形形状(b2CircleShape)是一个由位置和半径表示的几何图形。圆形都是实心的,主要参数是半径,圆形的位置就是本体的圆心,质心也是这里。下段代码就是创建一个圆形形状,并设置位置和半径。
//创建圆形形状的对象b2CircleShape circle;//设置位置circle.m_p.Set(1.0f,2.0f,3.0f)//设置半径circle.m_radius =0.5f;
多边形(b2PloygonShape)
在游戏当中,使用最多还是多边形。毕竟游戏中的圆形元素并不多。在Box2D当中一个多边形形状是通过顶点来描述的,所使用的额顶点必须是逆时针排列,逆时针相对于右手坐标系统来说。看代码:
顶点定义多边形
//按逆时针顺序定义一个矩形//顶点数组b2Vec2 vertices[4];vertices[0].Set(0.0f,0.0f);vertices[1].Set(1.0f,0.0f);vertices[2].Set(0.0f,1.0f);vertices[3].Set(1.0f,1.0f);int 32 count = 4;//创建多边形b2PloygonShape ploygon;ploygon.Set(vertices,count);
另外,为了方便开发者使用,引擎还提供了一些定义好的初始化函数来创建固定的多边形形状:箱(box)和边缘(edge,也就是线段)
//设置为箱子void SetAsBox(float32 hx,float32 hy);void SetAsBox(float32 hx,float32 hy,const b2Vec2& center,float32 angle);//设置为边缘void SetAsEdge(const b2Vec2& v1,const b2Vec2& v2);
0 0
- cocos2dx物理引擎和碰撞检测(四)形状Shapes
- cocos2dx物理引擎和碰撞检测(一)
- cocos2dx物理引擎和碰撞检测(二)
- cocos2dx物理引擎和碰撞检测(三)
- cocos2dx物理引擎和碰撞检测(五)框架Fixtures
- cocos2dx物理引擎和碰撞检测(六)物体Bodies
- cocos2dx物理引擎和碰撞检测(七)关节(Joints)
- cocos2dx物理引擎和碰撞检测(八)接触(Contants)
- Cocos2dx物理引擎碰撞检测总结
- 关于碰撞检测和物理引擎
- cocos2dx 3.x 物理引擎接触检测掩码、碰撞掩码和类别掩码问题解析
- 使用cocos2d-x3.0和物理引擎实现碰撞检测
- cocos2dx physics物理引擎碰撞详解
- Cocos2dx 物理碰撞检测的使用方法
- Unity3D物理引擎和碰撞
- Box2d物理引擎:b2ContactListener类碰撞检测
- 使用物理引擎进行碰撞检测
- 使用物理引擎进行碰撞检测
- 如何才能写出好的APP新闻报道及软文?
- time33 hash算法
- org.apache.sqoop.hive.HiveImport - Loading uploaded data into Hive Intercepting System.exit(1)
- ZooKeeperEclipse 插件
- 基于Ubuntu 14.04 LTS编译Android4.4.2源代码
- cocos2dx物理引擎和碰撞检测(四)形状Shapes
- POJ 2155 树套树—线段树套线段树
- cocos2d-html5如何运行
- 【Leetcode】Length of Last Word
- iOS Objective-C Block 的使用示例
- fastDB使用过程中遇到的几个问题
- 工作之杂记--first linq
- 测试中“特殊数据”提出的挑战
- 拷贝构造函数和赋值函数