2016-06-24 3 views
3

저는 스프라이트의 중심을 알아 내려고 노력하고 있습니다. 축구 볼 스프라이트를 사용했는데 크기가 120x120으로 변경되었습니다. 터치 위치를 얻을 수있었습니다.Swift 2에서 SKSpriteNode의 실제 중심점을 얻으려면 어떻게해야합니까?

중심을 얻는 방법은 sprite.origin.x + (sprite.width/2)가되어야하지만, 어떤 이유로 든 내가 얻는 값은 의미가 없습니다. 왜냐하면 내가 볼을 건드 릴지라도 touch 위치 x는 Sprite 중심보다 항상 작습니다. 예를 들어 공의 오른쪽면을 터치했기 때문에 location.x가 sprite.center보다> 있어야합니다. 엑스.

이 볼의 중심점을

let ballCenter = CGVectorMake(ball.position.x + (ball.frame.width/2), 
           ball.position.y + (ball.frame.height/2)) 

를 얻을 수있는 작은 코드는하지만이 같은 결과를 인쇄 할 때, 항상 "true"로 케이스 것입니다.

if location.x < ballCenter.dx { 
    print("touched on left of ball ", location.x, location.y) 
}else{ 
    print("touched on right of ball ", location.x, location.y) 
} 

이것은 나를 미치게합니다. 아무도 나를 이해할 수 있습니까? 스프라이트 원점은 왼쪽 하단에 있지 않습니까?

왜 장면 프레임이 너무 작습니까? 화면 크기가 375.0이고 화면 높이가 667.0인데 iPhone 6S를 사용할 때 더 커야하지 않습니까? 이것은 너무 혼란 스럽다.

미리 감사드립니다.

답변

4

SpriteNode의 원점은 기본적으로 스프라이트 중심에 있습니다. 노드의 중심을 가져 오려면 let ballCenter = sprite.position을 사용하십시오. 그러면 CGPoint를 사용할 수 있습니다. 그런 다음 ballCenter.xballCenter.y을 사용하여 x 및 y 좌표에 액세스 할 수 있습니다.

또한 현재 ballCenter과 같이 지점을 만들고 싶다면 CGVectorMake() 대신 CGPointMake()을 사용하십시오.

+0

네가 맞아! 고마워요! – msqar

+0

당신을 진심으로 환영합니다! – claassenApps

+0

이것을 달성 할 수 있는지 알 수 있습니까? http://stackoverflow.com/questions/37998343/impulse-skspritenode-depending-on-touched-location-swift-2 그것은 나를 미치게합니다. 하하는 이미 너무 많은 것들을 시도했고, 나는 여전히 좋은 길을 찾아 낼 수 없었습니다. 하고있어. – msqar

관련 문제