Всем привет! Задумка такая: есть три дыры в земле, из них раз в 2 секунды на одну секунду вылазит крот, игрок должен нажать на крота и тем самым убить его.
Как определить, что пользователь нажал именно на крота? Слышал, что можно это сделать с помощью CCRect, но что-то не пойму как. Прошу помощи.
Заранее спасибо)
А что не понятно? Как проверить находится ли точка в заданной области?
допустим есть CCPoint нажатия location и есть координаты крота crot->getPositiox() как определить попал ли игрок по нему? обычное сравнивание не работает, а как пользоваться CCRect из документации не понял
Есть у ноды метод: 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 ) { //попал по ноде. }
спасибо за ответы! я уже разобрался и сделал чуть по другому.
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);
}Тема в архиве.