2009-08-07 2 views
0

어떻게 움직이는 물체에 대해 특정 경사면을 얻을 수 있습니까? 나는 포인트 x, y에서 스크린을 스폰하고 화면을 가로 질러 새로운 x, y로 날아갈려고 노력하면서 기울기를 추가하면서 하향, 똑 바름, 또는 위쪽으로 스 푸핑하는 것처럼 보입니다. 그런 식으로. 지금 당장 나는 산란에 대한 지식과 특정한 방향으로 내 원수를 움직일 뿐이며 여기에서 무엇을보아야할지 모릅니다.적과 경사면

+0

저는 베지에와 같이 어떤 종류의 파라 메트릭 - 곡선/스플라인을 사용하는 답을주고 싶지만 이론은 조금 복잡합니다. 현재 적을 움직이는 코드를 게시 할 수 있습니까? 아마도 이것을 추가하는 방법을 찾을 수 있습니다. 너무 추한 것은 아닙니다. –

+2

더 자세히 설명하십시오. (나는이 주석이 위선이라고 알고있다.) – immibis

+0

물체를 특정 경로로 움직이는 방법을 묻고 있는가? – Daniel

답변

1

당신은 다음과 같은 델타 X 및 델타 Y 계산할 수 사이의 지점에 해협 라인으로 이동하려면 :

DX = X2-X1; 
DY = Y2-Y1; 

그럼 당신은 특정 거리를 이동하려면 (속도/프레임) 그런 다음

HYP = DX*DX + DY*DY; 
HYP = sqrt(HYP); 
DX = MoveD * DX/HYP; 
DY = MoveD * DY/HYP; 

:

// Move Distance (MoveD) From X1,Y1 to X2,X2 each screen update. 
if ((abs(X2-X)<DX)&&(abs(Y2-Y)<DY)) 
{ 
    X = X + DX; 
    Y = Y + DY; 
} else 
// STOP 

"급습 Pythagorian 정리를 사용하여 길이를 정상화 ing "은 엔드 포인트를 동적으로 변경하여 수행 할 수 있습니다. "목표"앞의 끝점에서 시작하여 대상을 따라 이동하고 위로 움직여 "급습"동작을 만듭니다. "속도 바이어스"를 추가하여 속도가 아래로 가속화되고 위로 감속합니다.

이것은 또한 Bresenham의 선 그리기 명세 또는 DDA의 변형을 사용하여 정수 계산에 덧붙일 수 있습니다.

+0

당신은 "* Bresenham의 * 라인 알고리즘"을 의미합니다. – tpdi

+0

또한 "* 가속화 * 감속 * 감속 * 상승"을 의미합니다. –

관련 문제