2014-11-30 2 views
1

나는 게임을 개발 중입니다. 다양한 노드가 줌을 가지고 있습니다.SpriteKit으로 SkSpriteNodes의 크기 조절

기기에 따라 (ipad/iphone) 최대 크기가 50-128 (출력은 println("\(size)"))이므로 최대 크기는 3x128이어야합니다. 맞습니까?

다음 줌 발생합니다

  • 초기 크기 (0,0)
  • 최종 크기 (최대, 최대) -이 내가 확대하고

위에서 언급 한 크기입니다 SKAction은 다음과 같습니다.

let imageName = NameGenerator.defaultGenerator.generateAssetName(properties: properties) 
let texture = SKTexture(imageNamed: imageName) 
let node = SKSpriteNode(texture: texture) 

let initialSize = CGSizeMake(1, 1) 
let scaleFactor = max/initialSize.width 
let actionScale = SKAction.scaleTo(scale, duration: duration) 

node.runAction(scale) 

지금까지는 그렇게 좋았습니다. 응용 프로그램이 원활하게 실행하고 모든 것이 하지만 작동

  • 노드가 매우 내 자산는 현재 300x300px

    질문

    에서 @3x 크기에 저장됩니다
  • 스케일링 애니메이션 중에 픽셀 화되어

      • 최적의 텍스처 형식 (png, svg, ...)은 무엇입니까? 벡터 이미지를 사용하는 방법이 있습니까?
      • 이 szenario의 최적 텍스처 크기는 무엇이라고 생각하십니까?
      • 스케일링/초기화 권한을 가지고 있습니까? 아니면 픽셀 화를 피하기 위해 다른 작업을해야합니까?

    답변

    2

    png 파일을 사용하면 문제가 없습니다. 벡터 형식은 지원되지 않습니다. 그것들을 사용하고 싶다면 png와 같은 비트 맵 이미지 형식으로 변환해야합니다.

    최적의 텍스처 크기에 관해서는 실제로 트레이드 오프의 무게뿐만 아니라 시행 착오의 문제가 될 것입니다.

    스케일 업하면 픽셀 화가 나타납니다. 얼마나 많은 스케일을 사용하고 있는지, 실제 텍스처 자체, 그리고 추가로 변환 한 것 (예 : 회전)에 달려 있습니다. 사용할 텍스처의 크기를 결정할 때 기본적으로 메모리와 시각적 품질의 균형을 맞추고 있습니다. 예를 들어 텍스처가 많지 않은 경우 큰 이미지를 사용하면 문제가 해결 될 수 있습니다. 또한 스케일링 다운에는 앨리어싱 효과와 같은 단점이 있습니다.

    "최적"또는 가장 자주 사용되는 크기가 무엇이라고 생각하는지 판단해야합니다. 그리고 그 크기를 x1 크기로 사용하십시오.

    Game Dev는 모두 리소스/성능의 균형 잡힌 동작과 사용자의 경험에 관한 것입니다. 게임에서 가장 좋은 절충점을 찾아야합니다.

    BTW, 좀 혼란이 문장 발견

    장치에 따라 (시오/아이폰) 그들 사이에 최대 크기를 50-128 (에 println 출력 ("(크기)")), 그래서 최대 크기를 asume3x128, 맞아야합니까?

    나는 당신이 이것을 통해 무엇을 말하려고하는지 잘 모르겠습니다.

    +0

    게임을 원활하게 실행하고 모든 iOS 장치에서 균형을 유지할 수 있도록 화면 비율로 최대 크기를 결정합니다. 이는 사용되는 장치에 따라 크기가 조금씩 달라짐을 의미합니다. –