ПрограммированиеФорумОбщее

Помогите с определением коллизий Cocos2d-x

#0
15:43, 15 мая 2013

Всем привет! Задумка такая: есть три дыры в земле, из них раз в 2 секунды на одну секунду вылазит крот, игрок должен нажать на крота и тем самым убить его.

Как определить, что пользователь нажал именно на крота? Слышал, что можно это сделать с помощью CCRect, но что-то не пойму как. Прошу помощи.
Заранее спасибо)

+ Показать
+ Показать
#1
23:24, 15 мая 2013

А что не понятно? Как проверить находится ли точка в заданной области?

#2
23:36, 15 мая 2013

допустим есть CCPoint нажатия location и есть координаты крота crot->getPositiox() как определить попал ли игрок по нему? обычное сравнивание не работает, а как пользоваться CCRect из документации не понял

#3
9:14, 16 мая 2013

Есть у ноды метод: boundingBox. Возвращает CCRect. Далее проверяешь место клика (x,y):

if ( x > rect.origin.x && x < (rect.origin.x + rect.size.x &&
     y > rect.origin.y && y < (rect.origin.y + rect.size.y )
  {
     //попал по ноде.
  }
#4
11:15, 16 мая 2013

спасибо за ответы! я уже разобрался и сделал чуть по другому.

  
        CCRect crotRect = CCRectMake(crot->getPosition().x - (crot->getContentSize().width/2), crot->getPosition().y - (crot->getContentSize().height/2),
    crot->getContentSize().width, crot->getContentSize().height);
  CCRect pressRect = CCRectMake(location.x - (crot->getContentSize().width/2), location.y - (crot->getContentSize().height/2),
    crot->getContentSize().width, crot->getContentSize().height);

  if(CCRect::CCRectIntersectsRect(crotRect, pressRect))
  {
    CCFiniteTimeAction *delCrot = CCCallFuncN::actionWithTarget(this, callfuncN_selector(MainScene::killCrot));
    crot->runAction(delCrot);
  }
ПрограммированиеФорумОбщее

Тема в архиве.