SwiftUI更新类容之SpriteKit

SpriteKit可以直接被调用了!!!
苹果2D游戏开发所用的SpriteKit现在可以直接被调用了。虽然直接新建Game工程,还是基于UIKit,虽然SpriteKit似乎很久没有更新过了,但是可以看出SwiftUI真的越来月好了。
首先创建新的工程,或者新的SwiftUI文件。
修改import部分

import SwiftUI
import SpriteKit

紧接着定义GameScene类及其函数
内容很简单,看注释就好了

class GameScene: SKScene {
  override func didMove(to view: SKView) {
  //为GameScene创建物理实体为边缘实体,及内部空,四周有框
        physicsBody = SKPhysicsBody(edgeLoopFrom: frame)
    }
    //当鼠标点击时操作
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard let touch = touches.first else { return }
        let location = touch.location(in: self)
        //在鼠标点击出生成两个SpriteNode,且根据为其创造物理实体,这样在生成时,物理实体会响应重力,且会互相碰撞
        //创建spriteNode是直接从图片创建的,我在工程中加入了来两个图片
        let circle = SKSpriteNode(imageNamed: "circle")
        
        circle.position = location
        circle.physicsBody = SKPhysicsBody(circleOfRadius:
            circle.size.width/2)
        addChild(circle)
        let sand = SKSpriteNode(imageNamed: "sand")
        sand.position = location
        sand.physicsBody = SKPhysicsBody(circleOfRadius:
            sand.size.width/2)
        //定义了摩擦力和密度
        sand.physicsBody!.restitution = 1.0
        sand.physicsBody!.density = 20.0
        addChild(sand)
    }
}

然后如视频
在这里插入图片描述
在这里插入图片描述
SpriteKit涉及内容挺多的,一般来说,设计稍微复杂点的游戏,会涉及多种场景配置,那么用工程中自带的GameScene.sks文档必然会用到,可能需要为重要的角色实体单独创建文件,如果用到粒子系统,那么也需要用到粒子特效文件*.sks,其它各种逻辑处理就补单论了。如果要把这些全都引入,不知道会怎么样。估计将来,新建SpriteKit工程时直接就可以使用SwiftUI了。

猜你喜欢

转载自blog.csdn.net/jackwsd/article/details/107099742