2
내 응용 프로그램에 위쪽에서 아래쪽으로 이동하여 반복되는 배경 이미지가 있습니다. x 시간이 지나면 다른 이미지가 화면에 표시되기를 원합니다.스위프트 게임 시간 또는 점수가있는 장면 전환 배경?
이렇게 할 수 있을까요?
너무 많은 레이어를 피하기 위해 초기 bg를 제거하는 것이 가장 좋은 방법은 언제입니까?
override func didMove(to view: SKView) {
let bgTexture = SKTexture(imageNamed: "bg1.png")
let moveBGanimation = SKAction.move(by: CGVector(dx: 0, dy: -bgTexture.size().height), duration: 4)
let shiftBGAnimation = SKAction.move(by: CGVector(dx: 0, dy: bgTexture.size().height), duration: 0)
let moveBGForever = SKAction.repeatForever(SKAction.sequence([moveBGanimation, shiftBGAnimation]))
var i: CGFloat = 0
while i < 3 {
bg = SKSpriteNode(texture: bgTexture)
bg.position = CGPoint(x: self.frame.midX, y: bgTexture.size().height * i)
bg.size.width = self.frame.width
bg.zPosition = -2
bg.run(moveBGForever)
self.addChild(bg)
i += 1
}
bg2Timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.moveBG2), userInfo: nil, repeats: false)
}
func moveBG2() {
let bg2Texture = SKTexture(imageNamed: "bg2.png")
let moveBG2animation = SKAction.move(by: CGVector(dx: 0, dy: -bg2Texture.size().height * 2), duration: 8)
let shiftBG2Animation = SKAction.move(by: CGVector(dx: 0, dy: bg2Texture.size().height), duration: 0)
let moveBG2Forever = SKAction.repeatForever(SKAction.sequence([moveBG2animation, shiftBG2Animation]))
var j: CGFloat = 0
while j < 3 {
bg2 = SKSpriteNode(texture: bg2Texture)
bg2.position = CGPoint(x: self.frame.midX, y: bg2Texture.size().height + bg2Texture.size().height * j)
bg2.size.width = self.frame.width
bg2.zPosition = -1.5
bg2.run(moveBG2Forever)
self.addChild(bg2)
j += 1
}
}
난 그냥 제대로 구현 사투를 벌인거야 :
는 코드를보고 난 후에, 이것은 내가 가지고 올 수 있었던 것입니다. 각 코드를 어디에 배치하는 것이 가장 좋은지 잘 모르겠습니다. 그리고 지금은 어떤 순서입니까? 나는 물건을 계속 움직일 것이다. 그리고 나는 내가 거기에 도착할 것이다라고 확신한다. 감사! –
나는 그것이 거의 정확하다고 생각한다. 수정 된 질문을 참조하십시오. 나는 bgTexture를 선언 할 필요가있다. "오류가 발생했을 때"bgTexture "" –
@AlexIngram "오류가 발생했을 때 함수의 이름이 로컬 변수와 충돌하기 때문이다. 지금 편집되었습니다. – Sweeper