cocos2d-x-3.16 实例开发之ParkourBall【3】球和圆盘

一、基类

球和圆盘继承Base基类,我们先看下基类有哪些方法

class Base : public Node
{
public:
	Base();
	//虚析构函数
	virtual ~Base();
	//继承自Node的虚函数 不同派生类定义自己的版本
	virtual bool init();
	//绑定刚体  不同派生类自己定义不同的刚体
	virtual void initBody();
	//设置精灵
	void setSprite(Sprite* sprite);
	//获取精灵
	Sprite * getSprite();
	//获取精灵大小
	Size getConSize();

private:
	Sprite * sprite;
	ParticleSystem *_emitter;
};

二、球

1、初始化中先绑定精灵、刚体,球的碰撞掩码要与线状刚体的类别标识掩码逻辑与不为0,如果body->setCollisionBitmask(0x02);球将直接掉落

void Ball::initBody(){
	//创建一个方形body
	auto body = PhysicsBody::createCircle(getConSize().width / 2); 
	body->getShape(0)->setRestitution(1);
	//你可以定义哪些物理刚体相互作用并且你的游戏何时接受这些相互作用的通知
	body->setCategoryBitmask(0x01);
	//这个刚体的碰撞掩码和另一个刚体的分类掩码进行逻辑与运算比较。如果结果是一个非零值,这个刚体会发生碰撞。
	body->setCollisionBitmask(0x01);
	//通过设置接触测试掩码,你可以决定发生碰撞后,回调函数是否有响应
	body->setContactTestBitmask(0x01);
	//无摩擦
	body->getShape(0)->setFriction(0);
	//让物理引擎对象和精灵对象关联起来
	getSprite()->setPhysicsBody(body);
}

2、球还有设置不同颜色、获取颜色、游戏一开始施加跳跃的速度、自旋等方法

void doAction(const char* actionName);//自旋
void jump();//跳跃
void setBallColor(CylinderColor color);//设置颜色
CylinderColor getBallColor();//获取颜色,CylinderColor是枚举变量

三、圆盘

圆盘类主要有设置颜色、获取颜色方法,没有用到绑定刚体,而是在场景中圆盘的y轴位置创建一个静态的线状刚体,来实现与球的碰撞,球弹起的效果


发表评论

(必填)

(必填)

(以便回访)

博客已稳定运行: 访问量:191,776 views 网站备案号:闽ICP备17026396号-1