【发布时间】:2018-04-01 13:47:44
【问题描述】:
我想使用动作创建玩家移动。我创建了函数void move(float x, float y);该函数创建操作RotateTo 和MoveTo。仅当 forward 和 target - forward 之间的角度小于某个值时,我才想移动播放器;我尝试在update 函数中添加runAction(moveAction) 条件,在update 函数中使用bool lock 变量,但是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);
}
但现在旋转和平移同时发生 如何实现?
【问题讨论】:
标签: cocos2d-x