ios学习之spritekit的简单学习

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

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





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

随后加入这段代码

import UIKit
//引入spritekit框架
import SpriteKit
class 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()
    //创建动作,暂停一秒,位移,暂停一秒,位移




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值