Как повернуть спрайт node в комплекте спрайтов? - программирование
Подтвердить что ты не робот

Как повернуть спрайт node в комплекте спрайтов?

Я делаю игру, и у меня возникают проблемы с вращением спрайта node, Это код, который у меня есть; Что мне нужно добавить, чтобы включить его, допустим, 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];
4b9b3361

Ответ 1

Вы делаете SKAction для вращения и выполняете это действие на node. например:

//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];  

Ответ 2

Просто сделайте это без использования действий:

sprite.zRotation = M_PI / 4.0f;

И в Swift 4:

sprite.zRotation = .pi / 4

Ответ 3

Использование предопределенного значения будет быстрее:

sprite.zRotation = M_PI_4;

Эти предопределенные константы в math.h доступны в виде литералов и могут использоваться для уменьшения фактической обработки таких значений, как M_PI/4.0

Ответ 4

sprite.zRotation = M_PI_4;

и

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

не совпадают.

запуск SKAction будет анимировать изменение, даже если продолжительность равна 0, он сделает это за очень короткое время. изменение zRotation покажет его при новом вращении.

почему это важно: если вы добавите новый спрайт, сделанный на нем, [SKAction rotateByAngle:] создаст мерцание/уродство в спрайте, как оно появляется в представлении.

Если спрайт находится на экране, и вы хотите повернуть его, изменение zRotation будет не таким приятным, как rotatebyAngle: даже с длительностью 0.

Ответ 5

Для версии SWIFT 3/SWIFT 4 вы можете использовать следующее:

sprite.zRotation = .pi / 4

или если вам нравятся действия:

let rotateAction = SKAction.rotate(toAngle: .pi / 4, duration: 0)
sprite.run(rotateAction)

Ответ 6

В Swift 4 мой способ вращаться был

sprite.zRotation =  .pi / 2 // 90 degrees
sprite.zRotation =  .pi / 4 // 45 degrees

Ответ 7

//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...