Cocos2dx。有条件的行动

时间:2018-04-01 13:47:44

标签: cocos2d-x

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

以下是从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);
}

但现在轮换和翻译同时发生 如何实现呢?

1 个答案:

答案 0 :(得分:0)