2014-02-10 3 views
0

3 개의 레이어 (멀리, 가까운, 가까운)로 SpriteKit 게임을 만들고 있는데,이 레이어를 캐릭터가 움직일 때 다른 수평 속도로 움직이게하고 싶습니다. 사실, 캐릭터는 중앙에서 움직이지 않으며, 바닥/배경은 오른쪽에서 왼쪽으로 움직입니다.시차 효과 수식

많은 수의 시차 효과를 만드는 데 수식이 적합합니까?

감사합니다.

+0

3 개의 거리 만 있기 때문에 각기 다른 속도 보정 요소를 할당하십시오. 예 : close = 1.0, near = speed 0.9, far = speed = 0.7 –

+0

어떤 수의 공식이 있습니까? – SpaceDog

+0

아닙니다. 멀리있는 것이 더 멀리있을수록 시차에서 더 느리게 움직입니다. 그래서 z-> 더 커, 속도 -> 0 –

답변

4

이와 비슷한 삼각형 문제로 생각할 수 있습니다. 지평선상의 한 지점을 상상해보십시오. 이 점이 화면에서 H 미터 떨어져 있다고 가정합니다. 여기서 H는 큰 수입니다. 이 번호를 원하는대로 선택할 수 있습니다. 값을 변경하면 효과가 변경됩니다. 당신이 좋아하는 것을보기 위해 그것으로 놀아야 만 할 것입니다.

첫 번째 레이어의 속도가 1 (또는 몇 가지 상수의 1 배)라고 가정합니다. 그런 다음 화면이 1의 속도와 거리 H에서 움직입니다.

이제 각 레이어가 이전 레이어에서 수평선을 향해 x 거리에 있다고 가정합니다. 다시 H와 같이 x가 H에 비해 작 으면 원하는 효과를주기 위해 x를 선택할 수 있습니다.

예를 들어 포어 그라운드는 화면에서 거리 0이되며, 첫 번째 레이어는 x 단위 떨어져 있고, 두 번째 레이어는 2x 단위 떨어져있을 것입니다.

이제 우리는 비슷한 삼각형을 할 수 있습니다. 스크린 레이어는 수평선에서 거리 H에 1의 속도입니다. 두 번째 층 뒷면은 수평선으로부터 거리 H-x에서 알 수없는 속도 (y)에 있습니다. 우리는 알고 :

H/1 = (H - x)/y 

또는 Y에 대한 해결 : 화면에 첫 번째 계층에 대한

y = (H - x)/H 

.

speed(i) = ((H - ix) a)/H 

: 다음


더 일반적인 공식은

  • A - 전경 (화면)의 속도
  • 을 층 I - 우리가 계산된다 층
  • 에 대한 속도
  • x - 각 레이어가 화면에서 마지막까지의 거리 (이 값을 변경하십시오. o 시차 효과 조정)
  • H - 수평선까지의 거리 (레이어 수 x보다 커야 함). 시차 효과를 조정하려면이 값을 변경하십시오.
+0

완료 !!!!!!!!!! 감사 – SpaceDog

관련 문제