Cocos2dx。有条件的行动

Cocos2dx. Conditional action

我想使用动作创建玩家移动。我创建了函数 void move(float x, float y);该函数创建动作 RotateToMoveTo。我只想移动播放器 forwardtarget - forward 之间的角度小于某个值;我尝试在 update 函数的 if 条件中添加 runAction(moveAction) 和 bool lock 变量,但是 update 内的任何 runAction 调用都失败并显示 SIGSEGV 信号;

以下是我的 class 派生自 Node 的字段:

cocos2d::Action* moveAction;
cocos2d::Action* rotationAction;

在移动函数中:

void GameObject::move(float x, float y) {
  startPosition = getPosition();
  endPosition   = Vec2(x, y);

  stopAllActions();

  rotationAction = RotateTo::create(
      angleBetweenForwardAndTarget(endPosition) / rotateSpeed,
      -Mathf::normalizeAngle(Mathf::getAngle(lookAtPosition(endPosition)))
  );
  runAction(rotationAction);

  moveAction = MoveTo::create(
      endPosition.distance(startPosition) / moveSpeed,
      Vec2(x, y)
  );
  runAction(moveAction);
}

但是现在旋转和平移是同时发生的 如何实现?

我把这个问题转过来了http://discuss.cocos2d-x.org/t/run-action-on-condition/42201