首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cocos2d中旋转精灵并使其达到原来的位置

在cocos2d中旋转精灵并使其达到原来的位置
EN

Stack Overflow用户
提问于 2013-07-28 13:47:05
回答 2查看 388关注 0票数 0

我有一架飞机精灵(考虑一架纸飞机,指向正确的方向),当点击屏幕时,它会稍微向上旋转,然后,旋转回到它向上旋转的程度。我通过使用以下代码实现了这一点:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

代码语言:javascript
复制
//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度。

请帮帮忙。

感谢你的期待。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-14 11:44:29

工作通过检查当前旋转的飞机在每一个龙头。如果是!= 0,那么不要进一步旋转,而是继续上升。然后在startDownMovement,将旋转设置为0。现在起作用了。

票数 0
EN

Stack Overflow用户

发布于 2013-07-29 05:24:49

读取平面的当前旋转属性。

代码语言:javascript
复制
//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]];}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17908853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档