Как сравнить содержимое переменной float и Size в cocos2dx?

0

Здесь моя функция onTouchBegan. Он отлично работает, если вы добавите в него какой-то другой код. Напр. вы воспроизводите звук при касании экрана или нарисовываете спрайт. Прямо сейчас, я пытаюсь проверить, где на экране, касается ли игрок? В зависимости от этого, мяч будет двигаться вверх или вниз.

Проблема: переменная location имеет тип float, а visibleSize - тип Size. Я попробовал "c-style typecast", это работа. Может ли кто-нибудь рассказать мне, как мне это сделать? Спасибо.

bool HelloWorld::onTouchBegan(cocos2d::Touch *pTouches,cocos2d::Event *pEvent)
{


   auto location = pTouches->getLocationInView();
   Size visibleSize = Director::getInstance()->getVisibleSize();
   location = Director::sharedDirector()->convertToGL(location);

   auto _ball = global_ball;
   if(location.x > (float)visibleSize/2)
   {
     _ball->MoveDown();
   }

   else
   {
     _ball->MoveUp();
   }
}
  • 0
    Размер содержит ширину и высоту. Вы, вероятно, хотите сравнить с одним из них.
  • 0
    О Боже ! Я не замечаю этого! К сожалению ! Спасибо за указание на это
Показать ещё 1 комментарий
Теги:
cocos2d-x
cocos2d-x-3.0

2 ответа

0
Лучший ответ

Размер содержит ширину и высоту. Вероятно, вы хотите сравнить с одним из них.

0

Вы можете сделать это из следующего кода:

        auto listener1 = EventListenerTouchOneByOne::create();
        listener1->onTouchBegan = [](Touch* touch, Event* event){
            auto target = static_cast<Sprite*>(event->getCurrentTarget());
            Point locationInNode = target->convertToNodeSpace(touch->getLocation());
            Size s = target->getContentSize();
            Rect rect = Rect(0, 0, s.width, s.height);
            if (rect.containsPoint(locationInNode))
            {

                // do whatever you want to do on touch

            }
            return false;
        };
        _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, this);

Я надеюсь, что это помогает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню