SpriteKit學(xué)習(xí)筆記(二)

轉(zhuǎn)場動畫.gif

SKScene是什么?

當進入一個游戲之后,出現(xiàn)在屏幕上的內(nèi)容叫做場景,每一個游戲都是有若干的場景組成的,在SpriteKit游戲框架中的場景就是SKScene對象組成,SKScene類似于iOS中的UIView對象.下面就說一下SKScene關(guān)于的技術(shù)點.

如何使用SKScene

  • 1.新建一個NewScene,繼承自SKScene,你會發(fā)現(xiàn)在NewScene.m文件中什么都沒有,這里我們要重寫他的初始化方法-(instancetype)initWithSize:(CGSize)size
    在這個方法里,我們給我添加一個背景顏色
- (instancetype)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
        self.backgroundColor = [SKColor redColor]; 
    }
    
    return self;
}
  • 1.1. 除了可以添加背景顏色外,還可以添加背景圖片,這就需要用到SKSpriteNode
// 根據(jù)一張圖片創(chuàng)建一個node 并作為場景的子node
SKSpriteNode *node1 = [SKSpriteNode spriteNodeWithImageNamed:@"znb 2.jpg"];
    node1.size = self.view.bounds.size;
    node1.position = CGPointMake(CGRectGetMidX(self.view.frame), CGRectGetMidY(self.view.frame));
    [self addChild:node1];
  • 2.現(xiàn)在有一個場景了,在原先項目中已經(jīng)有一個MyScene ,現(xiàn)在我們就用這兩個scene做轉(zhuǎn)場動畫
    我們在MyScene.m 和NewScene.m的-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event中進行場景的切換,這時候,我們需要使用presentScene:(nonnull SKScene *) transition:(nonnull SKTransition *)這個方法調(diào)用過渡動畫,我們看一下都有哪些過渡動畫(SKTransition類方法),因為過渡效果太多,過渡效果需要自行演示..
+ (SKTransition *)crossFadeWithDuration:(NSTimeInterval)sec; 

+ (SKTransition *)fadeWithDuration:(NSTimeInterval)sec;

+ (SKTransition *)fadeWithColor:(SKColor *)color duration:(NSTimeInterval)sec;

+ (SKTransition *)flipHorizontalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)flipVerticalWithDuration:(NSTimeInterval)sec;

+ (SKTransition *)revealWithDirection:(SKTransitionDirection)direction duration:(NSTimeInterval)sec;
+ (SKTransition *)moveInWithDirection:(SKTransitionDirection)direction duration:(NSTimeInterval)sec;
+ (SKTransition *)pushWithDirection:(SKTransitionDirection)direction duration:(NSTimeInterval)sec;

+ (SKTransition *)doorsOpenHorizontalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorsOpenVerticalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorsCloseHorizontalWithDuration:(NSTimeInterval)sec;
+ (SKTransition *)doorsCloseVerticalWithDuration:(NSTimeInterval)sec;

+ (SKTransition *)doorwayWithDuration:(NSTimeInterval)sec;

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    MyScene *scene = [[MyScene alloc] initWithSize:self.size];
    
    [self.view presentScene:scene transition:[SKTransition doorwayWithDuration:1]];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容