我想创建使用动作移动的玩家。我创建了函数void move(float x, float y)
;该功能会创建操作RotateTo
和MoveTo
。我想仅在forward
和target - 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);
}
但现在轮换和翻译同时发生 如何实现呢?