23

我正在制作游戏,但在旋转精灵节点时遇到了麻烦,这是我拥有的代码;我必须添加什么来转动它,比如说 45 度?

SKSpriteNode *platform = [SKSpriteNode spriteNodeWithImageNamed:@"YellowPlatform.png"];
platform.position = CGPointMake(CGRectGetMidX(self.frame), -200+CGRectGetMidY(self.frame));
platform.size = CGSizeMake(180, 10);
platform.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:platform.size];
platform.physicsBody.dynamic = NO;
[self addChild:platform];
4

7 回答 7

72

只需执行此操作而不使用操作:

sprite.zRotation = M_PI / 4.0f;

在 Swift 4 中:

sprite.zRotation = .pi / 4
于 2013-12-30T17:28:34.153 回答
20

您为旋转制作 SKAction 并在节点上运行该操作。例如:

//M_PI/4.0 is 45 degrees, you can make duration different from 0 if you want to show the rotation, if it is 0 it will rotate instantly
SKAction *rotation = [SKAction rotateByAngle: M_PI/4.0 duration:0]; 
//and just run the action
[yourNode runAction: rotation];  
于 2013-10-16T08:28:56.950 回答
15
sprite.zRotation = M_PI_4;

[sprite runAction:[SKAction rotateByAngle:M_PI_4 duration:0]];

不一样。

即使持续时间为 0,运行 SKAction 也会为更改设置动画,它会在很短的时间内完成。更改 zRotation 将在新的旋转中显示它。

为什么这很重要:如果您在其上添加新的精灵,[SKAction rotateByAngle:] 将在精灵出现在视图中时创建闪烁/丑陋。

如果精灵在屏幕上并且您想旋转它,则更改 zRotation 将不如 rotatebyAngle: 即使持续时间为 0。

于 2014-07-11T02:42:53.117 回答
13

使用预定义的值会更快:

sprite.zRotation = M_PI_4;

math.h 中的这些预定义常量可用作文字,可用于减少对 M_PI / 4.0 等值的实际处理

于 2014-03-31T10:11:07.740 回答
6

在 Swift 4 中,我让我旋转的方式是

sprite.zRotation =  .pi / 2 // 90 degrees
sprite.zRotation =  .pi / 4 // 45 degrees
于 2016-06-15T17:45:01.853 回答
5

对于SWIFT 3 / SWIFT 4版本,您可以使用下一个:

sprite.zRotation = .pi / 4

或者如果你喜欢动作:

let rotateAction = SKAction.rotate(toAngle: .pi / 4, duration: 0)
sprite.run(rotateAction)
于 2017-04-07T15:08:54.390 回答
3
//rotates player node 90 degrees
player.zRotation = CGFloat(M_PI_2)*3;
//rotates 180 degrees
player.zRotation = CGFloat(M_PI_2)*2;
//rotates 270 degrees
player.zRotation = CGFloat(M_PI_2)*1;
//rotates 360 degrees (where it was originally)
player.zRotation = CGFloat(M_PI_2)*4;
//rotates 315 degrees
player.zRotation = (CGFloat(M_PI_2)*1)/2;
and so on...
于 2017-02-02T02:42:36.833 回答