iFIERO -- Space Battle 宇宙大战 SpriteKit游戏源码




/*
 *  游戏中的所有元素全部由iFIERO所原创(除引用之外),包括人物、音乐、场景等,
 *  创作的初衷就是让更多的游戏爱好者可以在开发游戏中获得自豪感 -- 让手机游戏开发变得简单。
 *  秉着开源分享的原则,iFIERO发布的游戏都尽可能的易懂实用,并开放所有源码,
 *  任何使用者都可以使用游戏中的代码块,也可以进行拷贝、修改、更新、升级,无须再经过iFIERO的同意。
 *  但这并不表示可以任意复制、拆分其中的游戏元素:
 *  用于[商业目的]而不注明出处,
 *  用于[任何教学]而不注明出处,
 *  用于[游戏上架]而不注明出处;
 *  另外,iFIERO有商用授权游戏元素,获得iFIERO官方授权后,即无任何限制!
 *  请尊重帮助过你的iFIERO的知识产权,非常感谢!
 *
 *  Created by VANGO杨 && ANDREW陈
 *  Copyright © 2018 iFiero. All rights reserved.
 *  www.iFIERO.com
 *  iFIERO -- 让手机游戏开发变得简单
 *

 *  SpaceBattle 宇宙大战 在此游戏中您将获得如下技能:
 *  1、LaunchScreen       学习如何设置游戏启动画面;
 *  2、Scenes             学习如何切换不同的场景 主菜单+游戏场景+游戏结束场景;
 *  3、Accleroation       利用重力加速度 让飞船左右移动;
 *  4、Endless Background 无限循环背景;
 *  5、Scene Edit         直接使用可见即所得操作;
 *  6、UserDefaults       保存游戏分数、最高分;
 *  7、Random             利用可复用的随机函数生成Enemy;
 *  8、Background Music   如何添加背景音乐;
 *  9、Particle           粒子爆炸特效;
 */
 
 
import SpriteKit
import GameplayKit
import CoreMotion

struct  PhysicsCategory {
    // static let BulletRed :UInt32 = 0x1 << 1 // Alien的子弹
    static let BulletBlue:UInt32 = 0x1 << 2
    static let Alien     :UInt32 = 0x1 << 3
    static let SpaceShip :UInt32 = 0x1 << 4
    static let None      :UInt32 = 0
}

class GameScene: SKScene,SKPhysicsContactDelegate {
    
    private var bgNode1:SKSpriteNode!
    private var bgNode2:SKSpriteNode!
    private var playerNode:SKSpriteNode!  // 玩家 宇宙飞船
    private var currentScore:SKLabelNode! // 当前分数节点
    private var cScore:Int = 0
    private var highScore:SKLabelNode!    // 最高分数
    private var hScore:Int = 0
    
    
    var lastUpdateTimeInterval:TimeInterval = 0
    var deltaTime:TimeInterval = 0
    let motionManager = CMMotionManager() // 重力加速度管理器
    var xAcceleration:CGFloat  = 0        // 存放x左右移动的加速度变量
    var yAcceleration:CGFloat  = 0
    
    
    override func didMove(to view: SKView) {
        // 建立物理世界 重力向下
        physicsWorld.gravity = CGVector(dx: 0, dy: -9.8)
        // 碰撞接触代理
        physicsWorld.contactDelegate = self
        // 背景节点
        bgNode1 = childNode(withName: "BG1") as! SKSpriteNode
        bgNode2 = childNode(withName: "BG2") as! SKSpriteNode
        // 分数节点
        currentScore = childNode(withName: "currentScore") as! SKLabelNode
        highScore    = childNode(withName: "highScore")    as! SKLabelNode
        
        //表示第一次加载游戏
        if !UserDefaults.standard.bool(forKey: "HIGHSCORE") {
            UserDefaults.standard.set(0, forKey: "CURRENTSCORE")
            UserDefaults.standard.set(0, forKey: "HIGHSCORE")
        }
        // 表示重新游戏
        UserDefaults.standard.set(0, forKey: "CURREN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值