2011-09-05 2 views
1

Heyo!방향 및 속도가있는 2D 벡터 수학

iOS에서 게임을 만들기 시작했으며 시작을 위해 Breakout-clone을 시도하고 있습니다. 연습으로 공이 사각형 주위를 돌아 다니기를 원했기 때문에 나는 단순한 충돌, 방향 및 속도 주위에서 머리를 얻었습니다.

내 볼이 다음 가지고 : 내 "업데이트"기능에

Point position; // x, y 
float direction; 
float velocity; 

을, 나는 현재의 방향으로 볼을 이동하려는. 속도와 방향을 고려한 다음 순위는 무엇입니까?

iOS의 기본 제공 프레임 워크에 도우미가 있습니까?

저는 2 차원 수학에 대해 더 배우고 싶습니다. 누군가가 약간의 재교육을 받으면 저에게 링크를 보내 주시면 정말 고맙겠습니다.

+0

왜 "속도"와 "방향"을 저장합니까? velocity_x와 velocity_y를 저장하는 것이 훨씬 쉽습니다. –

+0

좋은 소리. 하지만 속도를 계산하는 데 몇 가지 힘을 더해야합니다. 맞습니까? – Emil

+2

에밀, 당신의 마지막 코멘트는 전혀 이해가되지 않습니다. 방향을 정의하는 방법에 따라 다음 위치는'x = x + vel * cos (dir) * deltat; y = y + vel * sin (dir) * deltat'. vel_x와 vel_y로 작업하는 것이 더 쉽습니다. – Beta

답변

4

속도와 방향을 고려한 다음 위치는 무엇입니까?

속도에는 이미 방향이 있습니다. 그것을 염두에 베어링 벡터

입니다, 당신의 새로운 위치는 다음과 같습니다

position = CGPointMake(position.x + velocity.x, position.y + velocity.y) 

만들기 속도 CGPoint와 당신의 방향 변수 중복을 확인하십시오.

+0

좋은 소리. 하지만 속도를 계산하는 데 몇 가지 힘을 더해야합니다. 맞습니까? – Emil

+0

그것은 당신의 프로그램이 어떻게 작동 하느냐에 달려 있습니다. 속도가 일정하면 힘이 필요 없습니다. –

+0

좋아, 알아. 그러나 나는 이것이 내 튀는 공에 어떻게 도움이 될지 모르겠다. 공이 직사각형의 중앙 하단에서 시작하여 "북서쪽"방향에서 시작하여 각 프레임의 길이가 1 단위 이동한다고 가정 해 봅시다. 그러면 속도는 x = -1, y = 1이됩니다. 맞습니까? "동쪽"을 0으로 설정하면 각도가 135 도가됩니다. 왼쪽 벽에 공이 닿았을 때 무엇을 할 수 있습니까? 들어오는 각도를 비추고 다음 속도를 x = 1, y = 1이되게하고 싶습니다. 그러나 어떤 각도/방향/회전없이이 수를 어떻게 얻을 수 있습니까? 어쩌면 나는 단지 혼란스러워 할 것입니다 ... – Emil

0

방향 및 속도를 벡터로 변환하고 시간에 따라 비율을 조정 한 다음 경로를 따라 발생한 장애를 고려하여 현재 위치에 추가합니다.

관련 문제