2014-05-11 3 views
0

Spritekit에 대한 flappy 새 자습서를 진행합니다. 방향을 수직으로 변경하려고하는데 성공했습니다.SpriteKit/Obj C 화면 너비

CGFloat y = arc4random() % (NSInteger)(self.frame.size.height/3); 

화면 하단 1/3 하단 파이프 유지 : 포스터 사용하여 파이프를 스폰.

나는과 같이 수정했습니다 :

CGFloat x = arc4random() % (NSInteger)(self.frame.size.width/3); 

하지만 파이프가 화면의 오른쪽 세번째로 제한됩니다. 왼쪽 파이프를 화면의 왼쪽 1/3로 제한하려면 어떻게 수정하면됩니까?

감사합니다 !!!

답변

1

내가하는 말을 완전히 이해할 수 있을지 확실하지 않습니다. 기본적으로 작성한 코드는 임의의 정수 (arc4random() 메서드 호출 사용)를 생성하고 화면의 너비 1/3로 나눈 나머지 (본질적으로 %가하는 것)를 취합니다. 따라서 CGFloat 값인 x는 화면 너비가 0에서 1/3 사이의 임의의 숫자입니다 (픽셀 단위). 왼쪽 파이프를 화면의 왼쪽 3 분의 1로 제한하기 위해 수정하려면 스크린의 2/3 크기에서 다른 한쪽 끝까지 오른쪽 파이프를 확장하면됩니다. (이것은 보통의 flappy bird와 같다고 가정합니다. 파이프 사이의 거리가 항상 동일한 게임).

CGFloat x = (NSInteger) self.frame.size.width - arc4random() % (NSInteger)(self.frame.size.width/3); 

우리는 전체 화면 너비를 복용하고 0과 1/3 사이에 화면의 폭을 임의의 숫자를 뺀 것 : 그것은 다음과 같이 보일 것입니다.

+0

포스터는 파이프 사이에 틈을 설정하여 오른쪽이 항상 왼쪽에서 고정 된 거리에 있으므로 실제로 작동합니다. self.frame.size.width/3을 사용하면 왼쪽 파이프가 왼쪽 세 번째로 만 제한된다는 인상을 받았습니다. – user2800989

+0

나는 그것을 이해했다고 생각합니다. 스프라이트 앵커 포인트가 SK의 중심이기 때문에 파이프를 줄여야합니다. – user2800989

+0

self.frame.size.width가 프레임에서 화면 너비를 얻고 있습니다. 몇 가지 계산을 수행 한 후에는 그 값을 CGFloat, x로 설정합니다. x는 실제로는 숫자입니다. 스크린의 오른쪽 세 번째로 파이프를 만드는 것이이 번호의 사용 방법입니다. 화면의 길이의 2/3 배와 1 배 사이의 오른쪽 파이프를 제한 할 수는 있지만 코드의 나머지 부분을 보지 않고도 더 좋은 방법은 없습니다. –

관련 문제