我有一架飞机精灵(考虑一个纸飞机,指向正确的方向),当在屏幕上轻敲时,它会向上旋转一点,之后,向下旋转相同的旋转度数。我通过使用以下代码完成了这个:
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//Plane move up on touch
UITouch *touch = [touches anyObject];
[plane stopAllActions];
[plane runAction:[CCSequence actions:[CCRotateBy actionWithDuration:0.15 angle:-20],
[CCMoveBy actionWithDuration:1 position:ccp(0,location.y)],
[CCRotateBy actionWithDuration:0.15 angle:20],
[CCCallBlock actionWithBlock:
^{
[self startDownMovement];
}],nil]];}
然后
-(void)startDownMovement {
[plane runAction:[CCSequence actions:[CCMoveBy actionWithDuration:2 position:ccp(0,-plane.position.y)],nil]];
}
问题是:如果我按下例如2次,则飞机向上移动20度两次,但仅向下旋转20度仅一次。我只希望飞机向上旋转20度,无论屏幕被点击多少次,都应该保持20度,然后再回到0度。
请帮忙。
感谢您的期待。
答案 0 :(得分:0)
读取飞机的当前旋转属性。
//float currentRotation = plane.rotation;
//Calculate new Rotation Value :
// float newRotation = currentRotation - offset; (offset in your case = 20)
//Use CCRotateTo in place of CCRotateBy
[plane runAction:[CCSequence actions:[CCRotateTo actionWithDuration:0.15 angle:-20],
[CCMoveBy actionWithDuration:1 position:ccp(0,location.y)],
[CCRotateTo actionWithDuration:0.15 angle:20],
[CCCallBlock actionWithBlock:
^{
[self startDownMovement];
}],nil]];}
答案 1 :(得分:0)
通过在每次敲击时检查飞机的当前旋转来工作。如果它是!= 0然后不要进一步旋转,而是继续上升。然后在startDownMovement
,将旋转设置为0.现在可以正常工作。