인프런 커뮤니티 질문&답변

할로팡님의 프로필 이미지

작성한 질문수

Swift로 iOS 2D 아케이드 게임 만들기

for문 range 질문 for i in 1...birdTexture.textureNames.count (오류 내용 : 범위에 lower, upper bound 필요 )

해결된 질문

21.12.24 11:55 작성

·

799

1

bird 애니메이션 파트 강의 입니다.

 

for i in 1...birdTexture.textureNames.count

 

 

범위를 지정해주는 부분에서 오류가 납니다.

(오류 내용)

thread 1: Fatal error: Range requires lowerBound <= upperBound

 

 

 

1...제한 값(bird~count) 이 코드에서 오류가 나는데요 무슨 문제일까요

 

 

 

작성한 코드

 

    func createBird() {

 

        let birdTexture = SKTextureAtlas(named: "Bird")

 

        

 

        let bird = SKSpriteNode(imageNamed: "bird")

 

        bird.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)

 

        bird.zPosition = 4

 

        self.addChild(bird)

 

        

 

        

 

        var aniArray = [SKTexture]()

 

        for i in 1...birdTexture.textureNames.count {

 

            aniArray.append(SKTexture(imageNamed: "bird\(i)"))

 

        }

 

        let flyingAnimation = SKAction.animate(with: aniArray, timePerFrame: 0.1)

 

        bird.run(SKAction.repeatForever(flyingAnimation))

 

    }

답변 1

0

냉동코더님의 프로필 이미지
냉동코더
지식공유자

2021. 12. 24. 15:44

오류의 내용은 lowerBound 가 upperBound 보다 작거나 같아야 되는데 그렇지 않다는 뜻입니다. lowerBound가 1인데 upperBound가 0이거나 nil이라서 나오는 오류 같습니다. 이런 경우 birdTexture에 값이 없을 가능성이 있는데요, 스프라이트 아틀라스에 이미지를 정확히 복사하셨는지 확인해 주세요.

잘 모르시겠으면 아래의 제 소스코드와 비교하면서 확인하시면 더 알기 쉬울 것 같습니다.

https://github.com/cliearl/SpritekitFlappyBirdLike

할로팡님의 프로필 이미지
할로팡
질문자

2021. 12. 26. 10:18

아틀라스 옵션이 없어서 일반 폴더로 에셋 파일들을 넣어줬는데요

아틀라스 옵션 찾고 다시 만들어줘서 넣어줬더니 해결됐습니다 감사합니다,