cocos2d-x 摇杆(二)

前端之家收集整理的这篇文章主要介绍了cocos2d-x 摇杆(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


根据上一篇内容进行改进

Control.h

增加以下内容

  1. CCSprite* main_tank;
  2. void control_update(float dt);



Control.cpp

  1. void Control::control_update(float dt)
  2. {
  3. float move_x=cen->getPositionX()-origin.x;//摇杆相对移动X轴
  4. float move_y=cen->getPositionY()-origin.y;//摇杆相对移动y轴
  5. if(isOnControl&&move_y!=0&&move_x!=0)//摇杆有移动时
  6. {
  7. float ata=atan2(move_x,move_y);//换取遥感相对移动角度
  8. ata=ata/M_PI;//角度数值化
  9. //判断,确定方向
  10. if(ata>-0.25&&ata<0.25)
  11. {
  12. main_tank->setRotation(0);
  13. main_tank->setPositionY(main_tank->getPositionY()+1);
  14. // CCLOG("top");
  15. }
  16.  
  17. if(ata>0.25&&ata<0.75)
  18. {
  19.  
  20. main_tank->setRotation(90);
  21. main_tank->setPositionX(main_tank->getPositionX()+1);
  22. // CCLOG("right");
  23. }
  24.  
  25. if(ata>-0.75&&ata<-0.25)
  26. {
  27. main_tank->setRotation(270);
  28. main_tank->setPositionX(main_tank->getPositionX()-1);
  29. //CCLOG("left");
  30. }
  31.  
  32. if(ata>0.75||ata<-0.75)
  33. {
  34. main_tank->setRotation(180);
  35. main_tank->setPositionY(main_tank->getPositionY()-1);
  36. //CCLOG("down");
  37. }
  38. // setTagPosition(main_tank->getPositionX(),main_tank->getPositionY());
  39. }
  40. }


  1. void Control::initData()
  2. {
  3. origin = ccp(150,150); //摇杆原点
  4. control_bg = CCSprite::create("dpadUp.png");
  5. control_bg->setPosition(origin);
  6. control_bg->setScale(2);
  7. this->addChild(control_bg);
  8. cen = CCSprite::create("joystickUp.png");
  9. cen->setPosition(origin);
  10. this->addChild(cen);
  11. CCRect r = control_bg->boundingBox();
  12. r_control = (r.getMaxX()-r.getMinX())/2; //摇杆半径
  13. //----------------------
  14. main_tank = CCSprite::create("an1_anim1.png");
  15. main_tank->setPosition(ccp(50,50));
  16. main_tank->setScale(0.5);
  17. this->addChild(main_tank);
  18.  
  19. }



  1. bool Control::ccTouchBegan(CCTouch* touch,CCEvent* event)
  2. {
  3. if (cen->boundingBox().containsPoint(touch->getLocation()))
  4. {
  5. isOnControl = true;
  6. cen->setScale(1.1);
  7. }
  8. //----------
  9. schedule(schedule_selector(Control::control_update));
  10. return true;
  11. }




  1. void Control::ccTouchEnded(CCTouch* touch,CCEvent* event)
  2. {
  3. isOnControl = false;
  4. cen->setPosition(origin);
  5. cen->setScale(1);
  6.  
  7. //---------
  8. unscheduleAllSelectors();
  9. }

猜你在找的Cocos2d-x相关文章