2014-12-31 2 views
0

최근에 화면에 원을 넣는 게임을 만들었습니다. 그러나 나는 원형이 원형이 아니라 사실은 타원형임을 주목했다. y 축은 x 축이 늘어나더라도 수축되었습니다. 문제를 파악하기 위해 이제 사각형으로 디버그하려고합니다. 사각형을 동일한 높이와 너비 (사각형)로 만들었지 만, skshapenode로 바뀌면 더 이상 올바른 모양이 아닙니다. 코드 : 여기SKShapeNode 잘못된 너비와 높이 사용하기

var testSquare = CGRect(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame), width: 1, height: 1) 

var squareNode = SKShapeNode(rect: testSquare) 
println(testSquare.width) 
println(testSquare.height) 
println(squareNode.frame.width) 
println(squareNode.frame.height) 
self.addChild(squareNode) 

이에서 인쇄됩니다 무엇 :

100.0 
100.0 
612.5 
484.5 

를 들면 : 나는 testSquare의 높이를 변경하고 (100)에 모두 폭 경우

1.0 
1.0 
513.5 
385.5 

이 인쇄됩니다 것입니다 x에서 squarenode의 프레임이 512.5를 추가하고 y에서 384.5를 추가하는 몇 가지 이유가 있습니다. 생성 된 사각형은 화면에서 어떤 이유로 Y에서 더 ​​길다. 어쩌면 프레임이 인쇄해야하는 번호가 아니지만 화면의 모양이 정사각형이 아니어도 상관 없습니다. 왜 그 사람이 누군지 압니까? 어떤 도움이라도 대단히 감사합니다!

+0

체크 self.frame, 이것은 768.0' =하여 장면 – LearnCocos2D

+0

'self.frame.width로 초기화되는 크기 = 1024.0' 'self.frame.height에 의해 확실히 장면 크기 조절에 영향을 할 수있는 아이폰이 세로 모드이기 때문에 제대로 보이지 않는다. –

답변

2

SKView를 만들기 위해 sks 파일을 사용하고 있습니까? 아니면 viewcontroller에서 인스턴스화하고 있습니까? 장면의 크기를 정확하게하는 것이 중요합니다. 나는 이것이 당신의 질문에 직접적으로 대답하는 것이 아니라는 것을 알고 있습니다. 그러나 당신이 이상한 스트레칭과 물건을 얻는다면, 아마도 이것으로 시작해서 거기에서 디버그해야 할 것입니다. ..

이것은 정확한 장면 크기를 제공합니다.

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    // Configure the view. 
    let skView = self.view as SKView 
    skView.showsFPS = true 
    skView.showsNodeCount = true 

    /* Sprite Kit applies additional optimizations to improve rendering performance */ 
    skView.ignoresSiblingOrder = true 

    /* Set the scale mode to scale to fit the window */ 
    let scene = GameScene(size: skView.bounds.size) 
    scene.scaleMode = .AspectFill 

    skView.presentScene(scene) 

}