本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-x节点(b2Shape.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

// shape中基本上都是虚函数,是没有实现的。shape中定义了以下几个函数:
// 1、克隆一个形状
// 2、获取孩子形状类型
// 3、获取形状的孩子元素的数量
// 4、投射一束光到一个孩子形状中
// 5、计算一个孩子形状的轴对齐包围盒(aabb)
// 7、测试形状中点的密封性。
// 6、计算形状的质量

///cocos2d-x-3.0alpha0/external/Box2D/Collision/Shapes
// shape中基本上都是虚函数,是没有实现的。shape中定义了以下几个函数:
// 1、克隆一个形状
// 2、获取孩子形状类型
// 3、获取形状的孩子元素的数量
// 4、投射一束光到一个孩子形状中
// 5、计算一个孩子形状的轴对齐包围盒(aabb)
// 7、测试形状中点的密封性。
// 6、计算形状的质量

#ifndef B2_SHAPE_H
#define B2_SHAPE_H

#include <Box2D/Common/b2BlockAllocator.h>
#include <Box2D/Common/b2Math.h>
#include <Box2D/Collision/b2Collision.h>

// 这个拥有质量,用于形状的计算
struct b2MassData
{
    // 形状的质量,通常单位是kg
    float32 mass;
    
    //形状的质心到形状的原点
    b2Vec2 center;
    
    //形状的转动惯量
    float32 I;
};

//一个形状用于碰撞检测。只要你喜欢,你可以创建一个形状。
// 在b2World世界中,形状用于模拟,当创建一个b2Fixture时将被自动创建。
//形状类将被封装成一个或多个子形状类
class b2Shape
{
public:
    //形状类型
    enum Type
    {
        e_circle = 0,             //圆形
        e_edge = 1,                  //边缘形状
        e_polygon = 2,               //多边形
        e_chain = 3,             //链形状
        e_typeCount = 4          //形状总数
    };
    
    virtual ~b2Shape() {}
    
    // 功能描述:用soa块分配器克隆一个具体的形状
    //   * 参数说明: allocator :soa分配器对象指针
    //   * 返 回 值: 形状指针
    virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0;
    
    //  * 功能描述:获取孩子形状类型,你可以使用它去创建形状
    // * 参数说明: (void)
    // * 返 回 值: 孩子形状个数
    Type GetType() const;
    
    //  * 功能描述:获取形状的孩子元素的数量,
    //             主要用于chainShape中,到时我们再谈
    // * 参数说明: (void)
    // * 返 回 值: 孩子元素的数量
    virtual int32 GetChildCount() const = 0;
    
    //   * 功能描述:在这个形状中测试这个点的密封性,只适合用于凸的形状
    // * 参数说明: xf : 形状的变换
    //              p  : world坐标中的一个点
    // * 返 回 值: true : 密封
    //              false:敞开
    virtual bool TestPoint(const b2Transform& xf, const b2Vec2& p) const = 0;
    
    //   * 功能描述:投射一束光到一个孩子形状中
    // * 参数说明: output      :输出光线投射的结果
    //              input       :输入光线投射
    //              transform   :变换应用到此形状中
    //              childeIndex :孩子形状索引
    // * 返 回 值: true : 成功 z
    //              false:失败
    virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
                         const b2Transform& transform, int32 childIndex) const = 0;
    
    // 给出一个变换,计算一个孩子形状的轴对齐包围盒(aabb)
    //     * 参数说明: aabb       : 孩子形状的aabb指针
    //                  xf         : 一个变换的引用
    //                  childIndex : 孩子的索引值
    virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const = 0;
    
    // * 功能描述:用它的大小和密度计算形状的质量
    //   * 参数说明: massData   : 计算形状的质量
    //                density    : 密度
    virtual void ComputeMass(b2MassData* massData, float32 density) const = 0;
    //形状类型
    Type m_type;
    float32 m_radius;           //半径
};
//获取形状类型
inline b2Shape::Type b2Shape::GetType() const
{
    return m_type;
}

#endif


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐