`
prevention
  • 浏览: 74060 次
社区版块
存档分类
最新评论

iOS Dev (49) 苹果官方 SpriteKit Game 模版

阅读更多

iOS Dev (49) 苹果官方 SpriteKit Game 模版

基本架构

- AppDelegate - ViewController:基础的 VC。 - MyScene:动画场景,处理动作等等。

在 AppDelegate 中实例化一个 ViewController,在 ViewController 中实例化一个 MyScene。

AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = [[ViewController alloc] init];   
    [self.window makeKeyAndVisible];
    return YES;
}

ViewController

- (void)loadView
{
    self.view = [[SKView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    SKView * skView = (SKView *)self.view;
    SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;

    [skView presentScene:scene];
}

上面这个很好看懂。loadView 里面初始化 view,这个一定要记住,不能在 init 中做,也不能在 viewDidLoad 中做。

viewDidLoad 中,先实例化一个 MyScene,设置这个 MyScene 带 scaleMode 为 SKSceneScaleModeAspectFill。最后再在 view 上 present 这个 scene。

以上步骤,都是常规做法。

MyScene

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];

        SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];

        myLabel.text = @"Hello, World!";
        myLabel.fontSize = 30;
        myLabel.position = CGPointMake(CGRectGetMidX(self.frame),
                                       CGRectGetMidY(self.frame));

        [self addChild:myLabel];
    }
    return self;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];

        SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];

        sprite.position = location;

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

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

        [self addChild:sprite];

        NSLog(@"for loop");
    }

    NSLog(@"touchesBegan");
}

实现 touchesBegan 方法,这个方法是 MyScene 从 UIResponder 继承来的,其定义为:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

这个继承关系是这样带:

MyScene -> SKScene -> SKEffectNode -> SKNode -> UIResponder

回头来说这个 touchesBegan 吧。

  1. 先获取到 touch 的点 location。
  2. 创建一个 sprite,用的是 spriteNodeWithImageNamed 这个 API。
  3. 设置这个 sprite 带位置。
  4. 创立一个 SKAction,让 sprite 来 repeat 这个 action。
  5. 最后呢,把这个 sprite 加到 scene 上吧。

转载请注明来自大锐哥的博客:http://prevention.iteye.com

分享到:
评论

相关推荐

    ios打飞机 ios 飞机 spritekit 简单的SpriteKit打飞机

    简单的SpriteKit打飞机 利用SpriteKit写的一个简单的打飞机场景,可以发射子弹、移动飞机以及碰撞检测。 利用SpriteKit写的一个简单的打飞机场景,可以发射子弹、移动飞机以及碰撞检测。

    iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏源码

    在iOS游戏开发中,SpriteKit框架是Apple专为2D游戏设计的强大工具,结合Swift语言,可以构建出高质量、性能优异的游戏。本教程将深入探讨如何利用SpriteKit和Swift来创建一个2D太空射击游戏。 首先,SpriteKit提供...

    spine-spritekit, 针对 iOS 7 SpriteKit的非官方书脊 2D 运行时.zip

    spine-spritekit, 针对 iOS 7 SpriteKit的非官方书脊 2D 运行时 脊椎 spritekitUnofficial ( http://esotericsoftware.com )的非官方 iOS 7运行时运行时官方运行时在这里:http://esotericsoftware.com/spine-runti

    ios7 spritekit 游戏demo

    在iOS开发领域, SpriteKit 是苹果推出的一款强大的2D游戏引擎,特别适合用于构建轻量级到中等复杂度的游戏。随着iOS 7的发布,SpriteKit得到了显著的提升和优化,为开发者提供了更为丰富的功能和更流畅的性能。本...

    IOS 2D游戏开发框架 Spritekit案例

    SpriteKit是苹果公司为iOS、macOS平台设计的一款强大的2D游戏开发框架,它提供了丰富的图形渲染、物理模拟、动画和交互功能,让开发者能够轻松创建高质量的2D游戏。本篇文章将深入探讨SpriteKit的基本概念、核心组件...

    iOS 7 Game Development(ios7 英文版 SpriteKit 介绍)

    iOS 7 Game Development(ios7 英文版 SpriteKit 介绍)1标签: ios7 Game Spritekit .本书英文版,就是有关spritekit的, 当前有关这个的书非常少,只能看看英文版的了。

    ios-宇宙战机游戏SpriteKit的Swift版.zip

    Swift的SpritekitDemo。打飞机,素材来源于网上,没写什么逻辑,注释不多,不过效果蛮不错的,给大家娱乐一下。没有使用任何第三方,以及插件。请在Xcode7,iOS9.0以上版本中编译执行。

    SpriteKit物理系统Demo

    SpriteKit是苹果公司开发的游戏引擎,它为iOS、macOS和tvOS等平台提供了一套强大的2D游戏开发工具。这个“SpriteKit物理系统Demo”是开发者为了展示如何在SpriteKit环境中实现物理模拟而创建的一个实例。让我们深入...

    Sprite Kit编程指南(中文版)

    Sprite Kit是苹果公司开发的一个2D游戏引擎,专门用于iOS和macOS平台的游戏开发。它包括一套用于游戏开发的工具和API,使得开发者能够轻松地创建动画、处理物理碰撞、渲染图形以及添加音效等。通过Sprite Kit,...

    IOS SpriteKit 详细的微信打飞机案例

    IOS SpriteKit学习之微信打飞机

    iOS游戏框架Sprite Kit基础教程 Swift版上册

    Sprite Kit是苹果公司为iOS和OS X平台设计的一款强大的2D游戏开发框架,它提供了丰富的图形渲染、物理模拟、动画和交互功能,使得开发者能够轻松地创建出精美的游戏。本教程将深入浅出地介绍如何使用Sprite Kit和...

    swift-iOSSwift游戏-将SpriteKit推送到极限

    在Swift游戏开发的世界中,SpriteKit是一个强大的2D游戏引擎,专为iOS、macOS以及tvOS等Apple平台设计。本教程将深入探讨如何利用Swift和SpriteKit来创建一款动作游戏,让玩家能够生存尽可能多的时间,同时赚取金钱...

    sprite kit"割绳子"游戏详解

    首先需要明确Sprite Kit是苹果官方提供的一个用于开发iOS平台2D游戏的框架,它集成了物理引擎、图形渲染、声音播放等多种游戏开发所需的功能。Sprite Kit框架是iOS开发中的一个重要工具,尤其适合开发简单的2D游戏。...

    SKTetrisGame:使用Apple的SpriteKit为iOS创建的俄罗斯方块游戏

    SKTetrisGame 使用Apple的SpriteKit为iOS创建的俄罗斯方块游戏

    IOS+SpriteKit+烈焰之刃.zip

    《iOS SpriteKit游戏开发:构建“烈焰之刃”传奇马甲包》 在iOS平台上, SpriteKit 是一款强大的2D游戏开发框架,它为开发者提供了丰富的功能和易用的接口,使得创建动画和游戏变得更为简单。本项目“烈焰之刃”是...

    iOS 7 Sprite Kit学习demo1

    Sprite Kit是苹果为iOS和OS X平台开发2D游戏提供的一款强大的框架,它在iOS 7中首次引入,极大地简化了游戏开发流程。这个“iOS 7 Sprite Kit学习demo1”是一个非常适合初学者上手实践的例子,通过它,我们可以深入...

    swift-使用SpriteKit实现iOS版本的2048游戏

    在Swift编程环境中, SpriteKit 是一个强大的2D游戏开发框架,专为构建iOS、macOS以及其他Apple平台上的游戏而设计。本教程将详细介绍如何利用SpriteKit来实现一款经典的2048游戏。2048是一款简单却令人上瘾的数字...

    开始使用 SpriteKit 的演示。将著名的 Cocos2DSimpleGame 移植到 SpriteKit

    _ Objective-C_代码_下载 开始使用 SpriteKit 的演示。将著名的 Cocos2DSimpleGame 移植到 ...See my blog for more: SpriteKit快速入门和新时代iOS游戏开发指南 更多详情、使用方法,请下载后阅读README.md文件

    Build iOS Games with Sprite Kit(Pragmatic,2014)

    Power up your inner game developer and start building incredible games with Sprite Kit. This book will teach you everything you need to know about Apple's 2D game engine. If you have some programming ...

Global site tag (gtag.js) - Google Analytics