2016-08-03 2 views
0

이 기본 우주 총격 사건 게임을 만들고 있지만 적의 x 좌표를 올바르게 얻을 수 없습니다. 때로는 화면 밖으로 나가거나 가장자리에서 반쪽을 유지합니다. 앱이 실행되는 iPhone에 상관없이 어떻게이 문제를 영구히 해결할 수 있습니까? 여기 SpriteKitScene에 배치 된 객체

내 위치에 대한 코드입니다 : (. 그 계란 내 원수의 이름입니다 그것이 내가 그것을 매번 호출하기 위해 만들어진 기능입니다) 일이 갈 수있는

func egg() { 
     var egg = SKSpriteNode(imageNamed: list[Int(arc4random_uniform(6))]) 
     var min = self.size.width/8 
     var max = self.size.width 
     var point = UInt32(max - min) 


     egg.position = CGPoint(x: CGFloat(arc4random_uniform(point)), y: self.size.height) 
     let action = SKAction.moveToY(-100, duration: 2) 
     let actionDone = SKAction.removeFromParent() 

     egg.runAction(SKAction.sequence([action, actionDone])) 

    } 

답변

0

이 여러 곳 있습니다를 샛길.

• 처음에는 장면의 앵커 포인트 위치가 (0,0)이라고 가정하는 것처럼 보입니다. 그렇지 않은 경우 (예 : 기본 .sks 파일의 앵커 포인트가 (0.5,0.5) 인 경우), 적군이 나타나지 않는 이유를 설명 할 수 있습니다. 내가 할 첫 번째 일은 내 장면의 앵커 포인트를 다시 확인하는 것입니다.

• 장면 자체 이외의 다른 노드에이 달걀을 추가하는 경우 해당 달걀은 부모 노드의 번역, 회전 및 크기를 "상속"합니다. 즉, 노드에 (20,20)에 달걀을 (30,30)에 추가하면 (50,50)에 나타납니다. 계란의 "문맥"이 당신이 기대하는 것과 같은지 확인하십시오.

• "최소"및 "최대"값이 다소 이상하게 보입니다. "min"은 왼쪽의 화면 크기의 1/8로 "들여 쓰기"되도록되어 있지만 오른쪽에 들여 쓰지 않은 것처럼 보입니다. 어쩌면 그게 당신이 의도 한 것일 수도 있지만, 대칭적인 행동을하려는 경우 8 번째로 "최대"를 되 돌리는 것이 좋습니다. 또한 위치를 결정할 때 x 값에 8을 다시 추가하지 않으므로 x = 0에 달걀을 붙일 수 있습니다. 이렇게하면 스프라이트가 왜 "가장자리의 반쪽"에 있는지를 알 수 있습니다.

• 장면의 크기가 화면 크기 일 필요는 없습니다. 이것은 SKScene의 "scaleMode"에 크게 의존합니다. 자세한 내용은 설명서를 확인하십시오. 그러나 간단히 말해서 scaleMode는 SpriteKit에 크기 또는 가로 세로 비율이 일치하지 않는 장면을 렌더링하는 방법을 알려줍니다. 스트레칭 되나요? 자르나요? 편지함입니까? 1024x768 화면 장치에서 정사각형 400x400 장면을 실행하는 경우 사용자가 의미하는 바를 알 수있는 방법이 있어야합니다. 400x400을 화면 중앙에 그려서 물건을 그 "rect"외부에서 볼 수있게합니까? 또는 화면을 채우기 위해 화면의 상단과 하단에서자를 크기로 조정합니까? 아니면 화면의 크기에 맞추기 위해 크기를 조정합니까? 기술적으로 장면의 크기 밖에있는 위아래 공간을 허용합니까? 아니면 그것을 확장하고 정확히 맞게 장면을 스쿼시합니까? 씬이 기기 화면과 정확하게 일치하지 않으면 상황이 잘 돌아가고 눈에 보이는 범위 내에서 머무르는 이유를 설명 할 수 있습니다.