C++ 如何同时旋转和平移我的精灵?cocos2dx 3.2

C++ 如何同时旋转和平移我的精灵?cocos2dx 3.2,c++,cocos2d-x,cocos2d-x-3.0,C++,Cocos2d X,Cocos2d X 3.0,我在精灵的更新方法中尝试了旋转。这只是翻译。而且不旋转。谁能告诉我怎么做吗?多谢各位 void CBall::Update(float dt) { this->Start(); auto action = RotateBy::create(dt,10); this->runAction(action); } void CBall::Start() { float currentX = getPositionX(); float distance = cu

我在精灵的更新方法中尝试了旋转。这只是翻译。而且不旋转。谁能告诉我怎么做吗?多谢各位

void CBall::Update(float dt)
{
  this->Start();
  auto action = RotateBy::create(dt,10);
  this->runAction(action);
 }

void CBall::Start()
{


  float currentX = getPositionX();
  float distance =  currentX + xOffset;
  float time = distance / _speedX;



  Vec2 destination = Vec2(distance,this->getPositionY());
  auto actionMove =  MoveTo::create(time,destination);
  this->runAction(actionMove);

  if(currentX > _screenWidth)
  {
        ReachedEndOfScreen();
  }


}

不要在update方法中应用其他操作,而是尝试在第一个操作中应用它。同时,通过测试动作增加角度并缩短旋转持续时间

float currentX = getPositionX();
float distance =  currentX + xOffset;
float time = distance / _speedX;
Vec2 destination = Vec2(distance,this->getPositionY());

auto actionMove =  MoveTo::create(time,destination);
this->runAction(actionMove);

auto action = RotateBy::create(4,720);
this->runAction(action);

我希望它能有所帮助。

事实上,您需要使用一个可同时运行多个操作的程序

下面是一个修改后的更新函数:

void CBall::Update(float dt)
{

  float currentX = getPositionX();
  float distance =  currentX + xOffset;
  float time = distance / _speedX;



  Vec2 destination = Vec2(distance,this->getPositionY());
  auto actionMove =  MoveTo::create(time,destination);

  if(currentX > _screenWidth)
  {
        ReachedEndOfScreen();
  }
  auto actionRotate = RotateBy::create(dt,10);
  this->runAction(Spawn::create(actionMove, actionRotate, nullptr));
 }

我勾画了您可以考虑在组合函数中重组更新实现的Stand()函数;p> 这对我还是不起作用。我认为那两个是原子的。你一个接一个地跑。直觉上,即使是序列也会这样做。我想交错两个动作。请告诉我怎么做。谢谢你的回复。听到这个消息我很难过。然而,我在cocos2d-X3.1Mohak的答案中同时使用了这两个选项。你还在调用RotateBy内部更新函数吗?我认为这不是个好主意。试着用启动功能代替。谢谢!实际上,我打算在这两种方法中加入更多的东西,因此是单独的方法。但无论如何,非常感谢你。这正是我想要的。