我有一架飞机精灵(考虑一架纸飞机,指向正确的方向),当点击屏幕时,它会稍微向上旋转,然后,旋转回到它向上旋转的程度。我通过使用以下代码实现了这一点:
-(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度。
请帮帮忙。
感谢你的期待。
发布于 2013-08-14 11:44:29
工作通过检查当前旋转的飞机在每一个龙头。如果是!= 0,那么不要进一步旋转,而是继续上升。然后在startDownMovement,将旋转设置为0。现在起作用了。
发布于 2013-07-29 05:24:49
读取平面的当前旋转属性。
//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]];}https://stackoverflow.com/questions/17908853
复制相似问题