2013-09-30 5 views
9

장면에서 "축소"하는 올바른 방법은 무엇입니까?SpriteKit - 크기 및 물리 설정

나는 화면을 가로 질러 그것을 발사하기위한 충동을 적용하는 대상을 가지고있다. 예를 들어 약 100 px의 거리에서 불을 뿜어냅니다. 이것은 예상대로 작동합니다. 더 많은 힘을 가하고 날아갈수록 밀도는 높아집니다.

문제는 축소하는 것입니다. 장면에서 setScale을 사용하면 모든 노드가 예상대로 축소됩니다.

하지만 같은 양의 물체 (단지 줌아웃 된 물체) 대신에 물체는 거리의 두 배 이상 날아갑니다.

스케일링 전후에 물체의 질량/밀도 등을 기록 할 때 예상대로 동일합니다.

왜 같은 양의 비행을하지 않습니까? 눈금을 맞추기 위해 충동을 바꿔 보려고했으나 작동하지 않았습니다. 거리가 짧아졌습니다.하지만 배율이있는 사람은 아닙니다.

까다로운 질문 ...

아이디어를 제공해 주셔서 감사합니다.

답변

10

쉬운 수정 (크리스 LaPollo 덕분에, RW에 저자)

[self runAction:[SKAction scaleTo:0.5 duration:0]]; 

아무것도 다른 사람이 필요했다.

이상한 것은 당신이이 경고를 얻을 당신이

[self setScale:0.5]; 

할 수 없습니다이며, 그것은 일을 doenst -하지만 작업을 실행하는 수행 - 이상한!

SKScene : SKScene의 눈금 설정은 아무런 효과가 없습니다.

+2

[self setScale : 0.5]를 수행 할 수 없습니다. 장면을 스케일링해서는 안되기 때문입니다. 아래 내 대답을 참조하십시오. – JKallio

+2

더 이상 그럴 수 없습니다 : "SKScene : SKScene 스케일을 애니메이션으로 적용해도 효과가 없습니다." – edo42

10

SKScene으로 스케일을 조정하지 않아도된다고 생각합니다. SKScene으로 setScale 메소드를 사용하면 힌트를 얻습니다. 대신 크기 조정을 사용해보십시오.

myScene.scaleMode = SKSceneScaleModeAspectFill; 

그리고 축소하는 동안

:

myScene.size = CGSizeMake(myScene.size.width + dx, myScene.size.height + dy); 

* Apple documentation는 말한다 : SKSceneScaleModeResizeFill에 scaleMode 속성을

을 설정합니다. 스프라이트 키트는 뷰의 크기와 항상 일치하도록 장면 크기를 자동으로 조정합니다.

1

검색 후 여기까지 올라온 저처럼, 축소하기 위해 장면의 배율을 변경하면 더 이상 작동하지 않습니다. 대신, 빈 SKNode에서 모든 노드를 캡슐화하고이 일에 작업을 실행

self.rootNode = [SKNode node]; 
// Add your children nodes here to the rootnode. 
[self addChild:self.rootNode]; 
// Zoom out 
[self.rootNode runAction:[SKAction scaleBy:2 duration:5]]; 
// Zoom in 
[self.rootNode runAction:[SKAction scaleBy:.5 duration:5]]; 

자기가 SKScene입니다. 도움이되기를 바랍니다.

관련 문제