C++ 碰撞检测don';我不明白
我试图发展两个精灵之间的碰撞,但我没有做到这一点。 我正在安排一个选择器来验证碰撞,另一个选择器来生成敌人的精灵。问题是它们没有碰撞C++ 碰撞检测don';我不明白,c++,cocos2d-x,C++,Cocos2d X,我试图发展两个精灵之间的碰撞,但我没有做到这一点。 我正在安排一个选择器来验证碰撞,另一个选择器来生成敌人的精灵。问题是它们没有碰撞 this->schedule(schedule_selector(HelloWorld::addenemy),2); this->schedule(schedule_selector(HelloWorld::collisionEnemy),2); 如上所述,我正在调度两个选择器,但如果我尝试调度值小于2(小于addEnemy timer)的Colli
this->schedule(schedule_selector(HelloWorld::addenemy),2);
this->schedule(schedule_selector(HelloWorld::collisionEnemy),2);
如上所述,我正在调度两个选择器,但如果我尝试调度值小于2(小于addEnemy timer)的CollisionDebust,则会得到一个错误:
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");
}
}
如果您想要真正的碰撞检测,我认为您应该查看Box2D 非常简单的碰撞检测:
cocos2d::Vector2 p = touch->getLocation();
cocos2d::Rect rect = _sprite->getBoundingBox();
if(rect.containsPoint(p))
{
// collision
}
else
{
// no collision
}
您的警告libpng警告:iCCP:known不正确的sRGB配置文件就是这样。一些像Photoshop这样的工具嵌入了不好的ICCP块。如果你有ImageMagick,你可以很容易地摆脱警告
find-键入f-名称“*.png”-exec convert{}-strip{}\代码>
在运行上述命令之前,请确保您知道从何处运行该命令。仅限于游戏资源所在的位置。始终首先备份。是冲突检测不起作用还是调度?如果值大于2,则调度可能会比运行时间长,但不会发生冲突,因为它没有在正确的框架中运行。您是否尝试过boundingbox()
?我主要使用它,并且它对我有效。我在名称空间“cocos2d”中没有得到名为“vector2”的类型。它已更改为cocos1d::Vec2
请参阅: