ios学习之spritekit的简单学习

来源:互联网 发布:mac隐藏windows分区 编辑:程序博客网 时间:2024/06/05 19:35

spritekit适用于制作2D游戏的框架,具备了图形渲染和动画的功能,可以使用图像和精灵(sprite)动起来

不过在创建时不是用 single viewapplication 而是用 game 来创建





创建第一个场景 创建一个自定义的文件,继承自 spritekit

随后加入这段代码

import UIKit//引入spritekit框架import SpriteKitclass HelooScene: SKScene {//当程序转入view后     override func didMoveToView(view: SKView) {        createScene()    }}//这个函数的功能是用于改变背景的颜色func createScene() {    self.backGroundColor = SKColor.blackColor()}
之后只要在gameviewcontroller 中把原来默认的gamescene 改成自定义的文件的文件名即可

if let scene = GameScene(fileNamed:"HelooScene") 

在场景中添加问文本

在gameController 中添加文本

class GameViewController: UIViewController {//往场景中添加内容    let myLabel = SKLabelNode(fontNamed: "chalkduster")      override func viewDidLoad() {        super.viewDidLoad()    //设置文本的内容        myLabel.text = "hello"        //字体的大小        myLabel.fontSize = 65        //设置文本节点的位置                //添加到场景中        self.addChild(myLabel)        if let scene = GameScene(fileNamed:"HelooScene") {            // Configure the view.            let skView = self.view as! SKView            skView.showsFPS = true            skView.showsNodeCount = true                        /* Sprite Kit applies additional optimizations to improve rendering performance */            skView.ignoresSiblingOrder = true                        /* Set the scale mode to scale to fit the window */            scene.scaleMode = .AspectFill                        skView.presentScene(scene)        }    }

让文本动起来的方法 主要涉及到SKaction 用这个创建动作 ,随后再弄好先后执行顺序,再添加到文本的动作节点中

//让文本动起来.响应屏幕点击时间的方法    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {        //获取文本的节点        let labelNode = self.childNodeWithName("label")        //向上移动的动作        let moveUp = SKAction.moveByX(0, y: 100, duration: 0.5)        //放大的动作        let zoom = SKAction.scaleTo(2.0, duration: 0.5)        //暂停的动作        let pause = SKAction.waitForDuration(0.5)        //淡出的动作        let fadeAwy = SKAction.fadeOutWithDuration(0.25)        //执行动作序列        let moveSquence = SKAction.sequence(moveUp,zoom,pause,fadeAwy)        //文本开始执行        labelNode.runAction(moveSquence)    }

创建动作组的方法

 let hover = SKAction.sequence([        SKAction.waitForDuration(0.5),        SKAction.moveByX(100, y: 50, duration: 1),        SKAction.waitForDuration(1),        SKAction.moveByX(-100, y: -50, duration: 1)])
添加动作的方法
//以重复的方式进行执行ship.runAction(SKAction.repeatAction(SKAction.repeatActionForever(hover)))    return ship;}

运用物理系统

//创建物理系统    ship.physicsBody = SKPhysicsBody(circleOfRadius: 15)    //不要让物体消失在底部        ship.physicsBody?.dynamic = false    //允许进行碰撞    ship.physicsBody?.usesPreciseCollisionDetection = true


用skshapnode的方法

func newSpaceShip()->SKShapeNode{    //创建一个椭圆,来当飞船    let ship = SKShapeNode()    ship.path = CGPathCreateWithRoundedRect(CGRectMake(-15, -15, 30, 30), 15, 15, nil)    ship.strokeColor = SKColor.whiteColor()    ship.fillColor = SKColor.grayColor()    //创建动作,暂停一秒,位移,暂停一秒,位移




0 0