mar*_*ina 10 objective-c rotation sprite-kit skspritenode
我正在尝试围绕它的Y轴旋转SKSpriteNode节点.我知道有zRotation属性,它将顺时针或逆时针旋转节点; 但是,我想围绕它自己的Y轴旋转节点(例如舞蹈芭蕾舞女演员),我似乎无法找到任何功能.这样做的最佳推荐方法是什么?
通常情况下,如果我想要旋转你似乎在描述的东西,并希望它看起来很好,我会通过描绘不同旋转度的精灵帧来实现.
您可以通过将xScale属性从1补间到-1来伪造它,反之亦然.
xScale技巧对于卡片(或纸质马里奥)是可行的,但对于芭蕾舞女演员而言,并非如此.您正在寻找2D对象的3D旋转,而这不会通过该方法发生.
因此,如果xScale技巧不能满足您的需求,您需要通过精灵帧来处理它.
这是一个3d SpriteSheet的例子,它可以让你实现你想要的旋转:

这个动画gif是一个精灵帧的例子来获得y旋转:

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sprite.position = location;
SKAction* action0 = [SKAction scaleXTo:1.0 duration:0.5];
SKAction* action1 = [SKAction scaleXTo:0.1 duration:0.5];
SKAction* action2 = [SKAction scaleXTo:-0.1 duration:0.5];
SKAction* action3 = [SKAction scaleXTo:-1.0 duration:0.5];
SKAction* action = [SKAction sequence:@[action0, action1, action2, action3]];
[sprite runAction:[SKAction repeatActionForever:action]];
[self addChild:sprite];
Run Code Online (Sandbox Code Playgroud)
这将使你看起来像3D卡片翻转,但显然如果你期望一个物体有深度,你不会用缩放程序编程.
或者更少的动画(如LearnCocos2D建议):
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sprite.position = location;
SKAction* action0 = [SKAction scaleXTo:1.0 duration:0.5];
SKAction* action1 = [SKAction scaleXTo:-1.0 duration:0.5];
SKAction* action = [SKAction sequence:@[action0, action1]];
[sprite runAction:[SKAction repeatActionForever:action]];
[self addChild:sprite];
Run Code Online (Sandbox Code Playgroud)