根据上一篇内容进行改进
Control.h
增加以下内容
CCSprite* main_tank;
void control_update(float dt);
void Control::control_update(float dt)
{
float move_x=cen->getPositionX()-origin.x;//摇杆相对移动X轴
float move_y=cen->getPositionY()-origin.y;//摇杆相对移动y轴
if(isOnControl&&move_y!=0&&move_x!=0)//摇杆有移动时
{
float ata=atan2(move_x, move_y);//换取遥感相对移动角度
ata=ata/M_PI;//角度数值化
//判断,确定方向
if(ata>-0.25&&ata<0.25)
{
main_tank->setRotation(0);
main_tank->setPositionY(main_tank->getPositionY()+1);
// CCLOG("top");
}
if(ata>0.25&&ata<0.75)
{
main_tank->setRotation(90);
main_tank->setPositionX(main_tank->getPositionX()+1);
// CCLOG("right");
}
if(ata>-0.75&&ata<-0.25)
{
main_tank->setRotation(270);
main_tank->setPositionX(main_tank->getPositionX()-1);
//CCLOG("left");
}
if(ata>0.75||ata<-0.75)
{
main_tank->setRotation(180);
main_tank->setPositionY(main_tank->getPositionY()-1);
//CCLOG("down");
}
// setTagPosition(main_tank->getPositionX(), main_tank->getPositionY());
}
}
void Control::initData()
{
origin = ccp(150, 150); //摇杆原点
control_bg = CCSprite::create("dpadUp.png");
control_bg->setPosition(origin);
control_bg->setScale(2);
this->addChild(control_bg);
cen = CCSprite::create("joystickUp.png");
cen->setPosition(origin);
this->addChild(cen);
CCRect r = control_bg->boundingBox();
r_control = (r.getMaxX()-r.getMinX())/2; //摇杆半径
//----------------------
main_tank = CCSprite::create("an1_anim1.png");
main_tank->setPosition(ccp(50, 50));
main_tank->setScale(0.5);
this->addChild(main_tank);
}
bool Control::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
if (cen->boundingBox().containsPoint(touch->getLocation()))
{
isOnControl = true;
cen->setScale(1.1);
}
//----------
schedule(schedule_selector(Control::control_update));
return true;
}
void Control::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
isOnControl = false;
cen->setPosition(origin);
cen->setScale(1);
//---------
unscheduleAllSelectors();
}