2016-10-06 2 views
1

나는 3 개 이미지를 가지고 :스위프트 스프라이트 키트 세로 배경 무한 이미지

topBg.png 내가 = 200

middleBg.png 무한 확장해야 상단 장면과 높이 topBg.png을 설정할 midBg.png botBg.png

또는 세로로 반복하십시오.

botBg.png - D 높이 = 200

난 다음 코드를 가지고

override func didMove(to view: SKView) { 
     self.bgTopSpriteNode = self.childNode(withName: "//bgTopNode") as? SKSpriteNode 
     self.bgMiddleSpriteNode = self.childNode(withName: "//bgMiddleNode") as? SKSpriteNode 
     self.bgBottomSpriteNode = self.childNode(withName: "//bgBottomNode") as? SKSpriteNode 

     if let bgTopSpriteNode = self.bgTopSpriteNode, 
      let bgMiddleSpriteNode = self.bgMiddleSpriteNode, 
      let bgBottomSpriteNode = self.bgBottomSpriteNode { 



      bgTopSpriteNode.size.width = self.frame.width 
      bgTopSpriteNode.size.height = 200 
      bgTopSpriteNode.position.x = 0 

      bgMiddleSpriteNode.size.width = self.frame.width 
      bgMiddleSpriteNode.size.height = self.frame.height-400 
      bgMiddleSpriteNode.position.x = 0 

      bgBottomSpriteNode.size.width = self.frame.width 
      bgBottomSpriteNode.size.height = 200 
      bgBottomSpriteNode.position.x = 0 
     } 

    } 

하지만 어떻게 이미지 Y 위치를 설정한다. 좌표는 화면의 중심에서부터 시작되기 때문에 왼쪽 상단에서부터 시작하지는 않으며 변환 방법을 알지 못합니다.

+0

당신은 크기 조절이 장면에 채택 예를 들어 같은 코드 .. –

+0

@AlessandroOrnano이 무엇을 의미 하는가에 대한 더 많은 정보를 줄 수 있습니까? 나는 다른 크기 : ipad 아이폰에 맞게 싶어요. – Arti

+0

@AlessandroOrnano 이것은 3 조각으로 잘라낸 이미지입니다. http://storage6.static.itmages.ru/i/16/1006/h_1475759533_7324679_c41559f9fd.png – Arti

답변

1

당신이하고자하는 것을 달성하기위한 몇 가지 다른 방법이 있습니다.

  • 첫째, 당신은 상단의 y 위치 및 사용하여 화면 단순히 size.height/2가 (0.5,0.5)에서 장면의 anchorPoint이있는 경우의 바닥을 계산할 수 있습니다. (프레임 사용 크기를 사용하지 마십시오. 따라서 장면의 스케일 모드를 고려해야합니다.)

  • 장면의 원점이 중앙에 있다는 사실에 좌절감을 느끼는 것처럼 들립니다. 모서리로 이동하려는 경우 장면의 anchorPoint 속성 (예 : 왼쪽 하단 모서리의 (0.0, 0.0))을 설정하면 쉽게 구석으로 이동할 수 있습니다. 그런 다음 y 값은 0이고 size.height입니다. .sks 편집기를 사용하는 경우이 인터페이스에 노출되어 있습니다. 바로 설정할 수 있습니다. 그렇지 않으면 프로그래밍 방식으로 설정할 수 있습니다.

  • 마지막으로 장면의 스케일 모드를 .aspectFill과 같은 것으로 설정하고, 장면의 크기를 iPad의 경우 1024x768로 직접 설정하고 이동해야하는 위치에 이미지를 배치 할 수 있습니다. 이 방법은 .sks 파일을 사용하는 경우 특히 유용합니다. 장면을로드 할 때 다양한 종횡비를 수용 할 수있는보기의 종횡비에 따라 장면의 크기를 설정할 수 있습니다. 예를 들어 iPhone 장면에 대해 320x480 크기의 "참조 크기"를 채택 할 수 있습니다. 장면을로드 할 때마다 장면의 크기를 320 포인트 넓이로 설정할 수 있지만 장치의 종횡비와 일치하는 높이가 높습니다. 그런 다음 모든 그래픽이 320pt 너비로 생성되며 레이아웃의 씬 크기에 비례하여 위아래로 슬라이드 할 수 있습니다. 이것은 좀 더 복잡하지만 여러 장치에 대한 별도의 레이아웃 고려 사항을 처리하는 것보다 훨씬 쉽습니다.

또한 몇 가지를 지적한다.

  • 당신은 스프라이트의 좌표에서 측정 위치를 지시하는 스프라이트의 anchorPoint 속성을 사용할 수 있습니다. 이것은 이미지가 무언가에 대비하여 플러시되도록하려는 경우 유용합니다. 예를 들어, 이미지가 화면의 왼쪽에 대해 평평하게 보이게하려면 화면의 왼쪽과 정확히 일치하도록 위치를 설정 한 다음 anchorPoint.x를 0.0으로 설정합니다. 그러면 스프라이트의 왼쪽 가장자리가 화면의 왼쪽 가장자리에 놓입니다. 또한 장면에서 앵커 포인트를 움직이면 장면의 모든 부분이 크기에 비례하여 움직입니다.

  • 설명하는 내용에 대해 세 개의 이미지가 필요하지 않습니다. 하나의 스프라이트를 사용하고 centerRect 속성을 설정하여 이미지의 위쪽과 아래쪽을 사용하고 가운데 부분을 세로로 늘리라고 지시 할 수 있습니다. 올바른 xScale과 yScale (이 아닌 너비와 높이, IIRC)을 설정하려면 약간의 계산을 수행해야하지만, 3 개가 아닌 하나의 스프라이트로 모두 그릴 수 있습니다. 이는 스프라이트를 (0,0)에두고 전체 장면의 크기와 일치하도록 눈금을 설정하고 centerRect 속성을 설정할 수 있기 때문에 매우 편리 할 것입니다. 즉, 위치 지정을 수행 할 필요가 없습니다 전혀 수학.