2014-12-04 2 views
1

SpriteKit을 사용하여 초상화 전용 게임을 만들고 내 이미지 자산을 Images.xcassets에 넣습니다. 내 이미지 자산과 같이 설정 그래서 이것은 아이폰입니다 : 하나 개의 이미지 자산, 2 배에서, 나는 640x640 PNG를, 예를 들어SpriteKit 도움 스케일링

1x, 2x, Retina 4 2x, 3x 

이 아이폰 4/4S, 5/5S에 잘 맞는 그러나 6은 (@ 2x로 축척됩니다.) 6은 약간 더 넓은 화면 @ 750px (또는 375 포인트)를 가지고 있기 때문에 그렇지 않습니다. 그래서 나는 내 장면에 추가 할 때마다 모든 스프라이트에 대해 [mySprite setScale:]에 전달할 수있는 다음 공식을 사용했습니다.

CGFloat scale = screenPointWidth/(screenScale * 160) 

경우 screenPointWidth = [[UIScreen mainScreen] bounds].size.widthscreenScale = [[UIScreen mainScreen] scale]. 160은 기본 1x 픽셀 너비 값 (또는 320/2)을 나타냅니다. 이것은 스케일 멀티 플레이어를 반환합니다.

이 멀티 플레이어에서는 내 640x640 이미지 크기가 적용되고 750 와이드 스크린에 완벽하게 맞습니다.

내 질문 : 더 좋은 방법이 있습니까, 아니면 올바르게하고 있습니까? 대신에 사용해야하는 보편적 인 배율 설정이 있습니까? 아니면 내 수식을 기반으로 모든 모든 스프라이트와 스프라이트 위치의 배율을 조정해야합니까? 또는 이 아닌Image.xcassets이고 대신 특정 화면 해상도에 대해 개별 .atlas '를 만들면됩니까? 업 샘플링 및 다운 샘플링에 대해 걱정해야합니까, 아니면 iPhone 6/6 + 자체에서 자동으로 처리됩니까?

참조 : http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

답변

1

아이폰 6가 2 배 이미지를 사용하는 의미가 있다고 아이폰 5 해상도에 충분히 가까운 거리에 있습니다.

1136 X 640 - 아이폰 5

1334 X 750 -

당신의 배경이 640 픽셀 높이 때문에 아이폰 6,은 세로 모드에서 상단과 하단에 빠진 공간을해야합니다. 당신은 작은 장치 (아이폰 4와 5)에서 자르지 않아도 괜찮은 부분이있는 배경을 만들어야합니다. 또는 아이폰 6 게임에서 검은 색 프레임이 필요합니다. 모든 이미지의 크기를 조정하지 않는 것이 좋습니다.

아이폰 6이 등장하기 전에도 일반적인 문제였습니다. 이 이미지는 종류의 당신은 세 가지 이미지 크기를 필요로

이미지의 크기를 조정 http://cdn5.raywenderlich.com/wp-content/uploads/2013/09/Aspect-Ratio-Diff.jpg

에 대해 내가 이야기하고 보여줍니다.

@ 배 = 아이폰 4S, 5, 5 초, 6 (당신은뿐만 아니라 비 레티 나 아이 패드를 위해 이것을 사용)

배 @

(* 2 배 1.5) = 아이폰 6 PLUS 2 배 ~ ipad에 @

(2 * 2 배) = ipad 망막 및 망막 미니

당신이 이것을 구성하려는 방식은 당신에게 달려 있습니다. 내 게임에서 내 이미지를 두 세트의 아틀라스로 나눴습니다. 하나는 iPad 용이고 다른 하나는 Iphone 용입니다.어떤 접미사로 내지도 책을

이미지를 조직의

내 방법은 비 망막 아이 패드를위한 것입니다.

enter image description here

내 코드에서

enter image description here

은 내가로드 할 텍스처 아틀라스 결정하는 간단한 기능을 가지고있다.

func getTextureAtlas(filename: String) -> SKTextureAtlas { 
    var name = filename 
    if UIDevice.currentDevice().userInterfaceIdiom != .Phone { 
     name = "\(name)-ipad" 
    } 

    return SKTextureAtlas(named: name) 
} 

예를 들어 useage :

shipAtlas = getTextureAtlas("ship") 
+0

등록 아이폰 6, "단지 배 이미지 크기를 조정"- 실제로 그 규모를 확대 않거나 당신이 배 이미지를 간단하게 맞 의미입니까? 저는 6이 없기 때문에 Sim을 사용하여 내 2x 자산 (당연히)에서 끌어 당기지 만 사물이 어떻게 보이고 아무 비늘도 보이지 않는지 확인합니다. –

+0

원래 질문을 잘못해서 죄송합니다. 내 대답을 업데이트했습니다. – hamobi

+0

제가 볼 수 있듯이 이미지 자산을 더 크게 만들어서 다양한 화면에서 바로 볼 수 있습니다. @ 2x의 경우 1136x640 (배경 예)을 만든 다음 1024x768 및 960x640 장치에로드합니다. 내 생각에 그렇게 중요하지 않을 수도있는 이미지에 대해서는 받아 들일 만하지만, 정확한 이미지가 필요하다면 체스 보드를 말하면 적합하거나 확장해야합니다. 이 경우 640x640 체스 보드를 사용하면 수식을 적용하여 스프라이트를 화면에 정확하게 맞출 수 있고 x, y 위치를 스케일 할 수 있습니다. 당신의 대답은 가치를 더합니다. 그러나 경계가 바람직하지 않은 경우, 스케일링을 적용해야합니다. 동의합니까? –