cocos2d-x 让多个小球边界碰撞
2016-03-22 16:09
351 查看
上一篇博客写的是一个小球边界碰撞,这个博客是讲的是多个小球边界碰撞。
我们自己写一个class
我们重写的函数
还有我们创建的球
bool ball::init(){
}
我们自己写一个class
class ball :public Sprite{// :warning ball后面有,public后面没有(这里千万不要看) public: virtual bool init(); CREATE_FUNC(ball); virtual void update(float dt);//我们依然重写update函数达到我们自己需要的 private: float speedX, speedY; Size visibleSize;//这里是速度,和可视窗口的大小 };
我们重写的函数
void ball::update(float dt){ setPosition(getPositionX()+speedX,getPositionY()+speedY);//我们先让小球运动这一次,其实我觉得应该在运动前判断是否越界的 float sw = visibleSize.width, sh = visibleSize.height, bw = getContentSize().width/2, bh= getContentSize().height/2; float bx = getPositionX(), by = getPositionY();//我们把参数先保存起来 //判断是否越界,越界之后我们只需要把速度取负 if (bx <= bw || bx >= (sw - bw)){ speedX = -(speedX); } else if (by<=bh || by>=(sh-bh)){ speedY = -(speedY); }
还有我们创建的球
bool ball::init(){
Sprite::initWithFile("ball.png"); visibleSize = Director::getInstance()->getVisibleSize();//获得可视窗口的大小 speedX = CCRANDOM_0_1() * 10 - 5; speedY= CCRANDOM_0_1() * 20- 5;//随机生成小球的位置 scheduleUpdate();//更新 return true;
}
bool HelloWorld::init() { if (!LayerColor::initWithColor(Color4B(155,199,255,255))) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); for (int i = 0; i < 15; i++){ auto b = ball::create(); b->setPosition(CCRANDOM_0_1() * 100 + 100 + CCRANDOM_0_1() * 100, CCRANDOM_0_1() * 200 + 100); addChild(b); } return true; }
相关文章推荐
- cocos studio和cocos creator关系
- VS2008升级到2013中cocos2dx出现的一些小问题
- cocos2d-x 让小球滚动起来
- 如何在编译cocos2d项目加入自己的脚本
- cocos2dx 事件处理机制
- [针对初学者]Cocos 如何提高编译速度
- cocos2dx三种定时器的使用
- [针对初学者]Cocos 瞎搞小技巧2
- Cocos2d-x之Box2D物理引擎
- cocosPods下载第三方库使用
- Box2D物理引擎
- Cocos2d-x飞机大战源代码下载
- cocos2d-x实例学习(11)之CCCatmullRomTo&CCCatmullRomBy
- cocos2d-x实例学习(9)之CCCardinalSplineBy
- cocos2d-x项目Android版和IOS版接入微信分享功能示例
- Cocos2d-x引入中文支持库并移植到android平台
- mac上cocos2dx-lua环境搭建
- 【Cocos2d-x实例】 Flappy Bird游戏
- 【cocos2d-x 2】关于CocosStudio编辑出的csb的简单使用
- 搭建cocos-js开发环境