swift - 创建背景精灵节点
问题描述
我正在尝试创建一个无尽的滚动游戏,并且我正在尝试创建两个背景。
我有一个像这样的背景课程,
class BackgroundMG1: SKNode {
let background: SKSpriteNode
let size: CGSize
init(size: CGSize) {
self.size = size
let hue = CGFloat((arc4random() % 1000) / 1000)
let randomColor = UIColor(hue: hue, saturation: 1, brightness: 1, alpha: 1)
self.background = SKSpriteNode(color: randomColor, size: size)
super.init()
setup()
}
func setup() {
background.position.x = 0
background.position.y = 0
addChild(background)
}
}
我将用其他对象填充我的背景,所以我需要它成为一个类,而不仅仅是一个静态图像。
我的游戏场景是这样的,
class AntarcticaMiniGame1: SKScene {
var player: SKSpriteNode!
var backgrounds: [BackgroundMG1]!
override func didMove(to view: SKView) {
setup()
}
func setup(){
// Initializers
player = Player()
// Positions
player.position.x = 0
player.position.y = 0
player.zPosition = 1
// Set up backgrounds
backgrounds = [BackgroundMG1]()
for i in 0..<2 {
let background = BackgroundMG1(size: size)
background.position.x = CGFloat(i) * size.width
background.position.y = 0
backgrounds.append(background)
addChild(background)
}
// Add to scene
addChild(player)
}
override func update(_ currentTime: TimeInterval) {
player.physicsBody!.applyForce(CGVector(dx: 25, dy:0))
}
}
您还可以假设我设置了地面和相机对象。我不得不省略该代码,因为它与这个问题无关。玩家停留在地面上,摄像机跟随玩家。
现在,当我加载游戏时,玩家对象按预期向右移动。我看到一个背景,但第二个没有出现。
我觉得我在定位上犯了一些错误。我不是 100% 的坐标系如何在 Swift 中工作。
编辑:我的场景连接到一个现在完全为空的 .sks 文件。游戏是横向的。
解决方案
推荐阅读
- spring-boot - SpringBoot spring-boot-starter-web-services 和 spring-boot-starter-webflux 中断 DSL 路由
- windows - 如果未通过,Gnuplot如何将变量设置为标准输入
- c# - 如何在c#中制作一侧圆形按钮?
- javascript - 为什么我在用 axios 发出 post 请求时得到 401 未授权,但同样的请求适用于 postman
- mocking - 我们可以使用 PowerMockito 模拟具有多个参数的私有方法吗?
- rasa - 如何在 Bot Emulator 中测试 Rasa Chatbot
- python - 尝试连接蓝牙时出现 OSError。我该如何解决?(连接板蓝牙HC-06)
- python - statsmodels 如何估计参数的标准误差?
- python-3.x - Python 数据框插入 Azure SQL
- python - 我正在尝试获取一串序列号,但收到一条错误消息,提示未定义变量