cocos2dx 圆形碰撞

bool HelloWorld::init()

{

    //////////////////////////////

    // 1. super init first

    if ( !CCLayer::init() )

    {

        return false;

    }

    CCLayerColor* colorLayer = CCLayerColor::create(ccc4(0, 0, 255, 0),480   ,320);

    

    

    addChild(colorLayer);

    

    CCLabelTTF * pLabel = CCLabelTTF::create("~还没有碰撞·~", "", 20);

    pLabel->setPosition(ccp(250,300 ));

    pLabel->setColor(ccc3(255, 255, 0));

    CCSize size = CCDirector::sharedDirector()->getWinSize();

    

    addChild(pLabel,1,900);

    

    CCSprite * sp1 =CCSprite::create("circle1.png");

    sp1->setPosition(ccp(250,200));

    addChild(sp1,0,921);

    

    CCSprite * sp2 =CCSprite::create("circle2.png");

    sp2->setPosition(ccp(250,100));

    addChild(sp2,0,922);

    return true;

}





void HelloWorld:: onEnter()

{

    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);

    CCLayer::onEnter();

}

void HelloWorld::onExit()

{

    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);

    CCLayer::onExit();

}

bool HelloWorld::ccTouchBegan(CCTouch * pTouch, CCEvent * pEvent)

{

    CCPoint touchPoint = pTouch->getLocation();

    CCSprite * sp1 = (CCSprite*)this->getChildByTag(921);

    sp1->setPosition(touchPoint);

    return true;

}

void  HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)

{

    CCPoint touchPoint = pTouch->getLocation();

    CCSprite * sp1 = (CCSprite*)this->getChildByTag(921);

    CCSprite * sp2 = (CCSprite*)this->getChildByTag(922);

    

    CCLabelTTF * ttf = (CCLabelTTF*)this->getChildByTag(900);



//    ttf-> setPosition(ccp(250, 300));

    

    if (this->isCircleCollision(sp1->getPosition(), sp1->getContentSize().width*0.5, sp2->getPosition(), sp2->getContentSize().width*0.5)) {

        ttf->setString("相撞啦");

    }else

        ttf->setString("没撞");

    

    sp1->setPosition(touchPoint);

    CCLOG("%f , %f ",touchPoint.x,touchPoint.y);

    CCLOG("%f,%f,%f,%f",sp1->getPosition().x,sp1->getContentSize().width*0.5,sp2->getPosition().x,sp2->getContentSize().width*0.5);

     

}

void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)

{

    CCLOG("game over");

}



bool HelloWorld::isCircleCollision (CCPoint pos1,float radius1,CCPoint pos2 ,float radius2)

{

    if (sqrt(pow(pos1.x- pos2.x,2)+pow(pos1.y-pos2.y,2))>radius1+radius2) {

        return false;

    }

    return true;

}

 

你可能感兴趣的:(cocos2dx)