【发布时间】:2014-05-16 05:24:57
【问题描述】:
我正在尝试开发 2 个精灵之间的碰撞,但我没有完成它。 我正在安排一个选择器来验证碰撞,并安排另一个选择器来生成敌人的精灵。问题是它们没有碰撞。
this->schedule(schedule_selector(HelloWorld::addenemy),2);
this->schedule(schedule_selector(HelloWorld::collisionEnemy),2);
我正在按上述方式安排两个选择器,但是如果我尝试使用小于 2 的值(小于 addEnemy 计时器)来安排 collisionEnemy,则会出现错误:
libpng warning: iCCP: known incorrect sRGB profile
如果我输入 2 或更大的值,则标识符不会发生冲突
这是碰撞敌人选择器:
void HelloWorld::collisionEnemy(float dt)
{
CCSprite *player = (CCSprite*)getChildByTag(1);
CCSprite *enemy = (CCSprite*)getChildByTag(3);
CCRect playerRect = CCRectMake(
player->getPosition().x - (player->getContentSize().width/2),
player->getPosition().y - (player->getContentSize().height/2),
player->getContentSize().width,
player->getContentSize().height);
CCRect miniBarrierRect = CCRectMake(
enemy->getPosition().x - (enemy->getContentSize().width/2),
enemy->getPosition().y - (enemy->getContentSize().height/2),
enemy->getContentSize().width,
enemy->getContentSize().height);
if (playerRect.intersectsRect(enemyRect)) {
CCLog("enemy Collision");
} else {
CCLog("not enemy Collision");
}
}
【问题讨论】:
-
是碰撞检测不行还是调度不行?
-
可能是调度,如果值大于2,则运行,但不会发生冲突,因为它没有在正确的帧中运行
-
你试过
boundingbox()吗?我主要使用它,它对我有用。