iOS 게임에 여러 게임 개체가 있습니다. 일부 게임 개체는 다른 게임 개체보다 더 큰 해상도를 가지고 있습니다. 게임 개체에 사용할 그래픽은 런타임에 임의로 선택됩니다. 내가 사용 때 모두가 특정 크기에 가서하지 않도록하고 싶습니다, 그래서 나는 다음과 같은 알고리즘을 고안 : spriteNode 텍스처 그래픽과 RSIZE 객체가크기 조정 및 스케일링 SKSpriteNode
while self.spriteNode.rSize.width > 100 && self.spriteNode.rSize.height > 100 {
self.xScale -= 0.01
self.yScale -= 0.01
}
가 확장입니다 누적 된 프레임의 크기를 반환하는 SKSpriteNode의 계산 된 속성입니다.
종종 무한 루프가 발생합니다. 뭐가 문제 야?
UPDATE
1 LearnCocos2D의 의견을 바탕으로, 나는 다음과 같은 시도 :
let reqXScale = 50/self.spriteNode.rSize.width
let reqYScale = 50/self.spriteNode.rSize.height
self.xScale = reqXScale
self.yScale = reqYScale
이 무한 루프 문제를 해결하지만, 일부 개체는 원래의 화면비를 유지하기보다는 찌그러된다.
var rSize: CGSize {
return self.calculateAccumulatedFrame().size
}
내가 전에이 안정적으로 여러 번 사용했다 :
또한, 여기 RSIZE를 정의하는 코드입니다.
rSize를 정의하는 코드를 게시 한 경우 도움이됩니다. – 0x141E
끔찍한 코드인데, 실제 크기와 원하는 크기 사이의 비율에서 필요한 축척 비율을 유도하고 결과를 지정할 수 있습니다. while 루프는 잠시 동안 만 프로그램을 차단합니다 (또는이 경우에는 영원히 버그가있는 경우). 또한 종횡비를 고려하여 x/y 스케일을 개별적으로 업데이트 할 수 있습니다. – LearnCocos2D
누적 된 프레임은 왜 표시됩니까? 노드에 자식이 없으면 frame과 동일합니다. 자식이 있으면 스프라이트의 내용을 새로운 크기로 조정하지 않고 스프라이트와 그 자식의 전체 크기를 조절합니다. – LearnCocos2D