2

スプライト キットとゲーム開発の初心者は、次のチュートリアル@ Raywenderlichで学習しています。

WHAT I AM DOING ?

マップに連続モーションを実装し、プレーヤーに重力を実装しました。回転アクションをこのように SKSpriteNode に追加できることを知っています。

        SKAction *action = [SKAction rotateByAngle:M_PI duration:1];

        [myPlayer runAction:[SKAction repeatActionForever:action]];

そして、重力のある私のプレーヤーは次のとおりです

MSPlayer.h

#import <SpriteKit/SpriteKit.h>

@interface MSPlayer : SKSpriteNode
@property (nonatomic, assign) CGPoint velocity;
- (void)update:(NSTimeInterval)delta;
@end

MSPlayer.m

#import "MSPlayer.h"
#import "SKTUtils.h"

@implementation MSPlayer
//2
- (instancetype)initWithImageNamed:(NSString *)name {
    if (self == [super initWithImageNamed:name]) {
        self.velocity = CGPointMake(0.0, 0.0);
    }
    return self;
}

- (void)update:(NSTimeInterval)delta {
    //3
    CGPoint gravity = CGPointMake(0.0, -10.0);
    //4
    CGPoint gravityStep = CGPointMultiplyScalar(gravity, delta);
    //5
    self.velocity = CGPointAdd(self.velocity, gravityStep);
    CGPoint velocityStep = CGPointMultiplyScalar(self.velocity, delta);
    //6
    self.position = CGPointAdd(self.position, velocityStep);
}
-(CGRect)collisionBoundingBox {
    return CGRectInset(self.frame, 2, 0);
}

@end

My Issue is

問題は、ノードを回転させて重力でジャンプさせ、ノードがジャンプを終了する直前に回転が終了することです。両方のアニメーションを同時に終了させるにはどうすればよいですか?

4

1 に答える 1

0

Jumping 用に別の runAction を書く

[myPlayer runAction:[SKAction repeatActionForever:runAction]];

ここで runAction を定義します。

于 2014-03-14T12:36:00.620 に答える