이 질문은 다소 어리석은 생각이지만 대답을 찾을 수 없습니다.방향에 관계없이 속도가 일정한 물체의 위치를 업데이트하십시오.
고전 게임 탁구를하고 있습니다. 그리고 공이 어떤 각도에서도 같은 속도로 움직이기를 원합니다. 그러나 y = ax + b에있는 a가 높으면 현재 알고리즘 (x를 하나씩 늘리고 y를 계산)에서 각 픽셀 사이에 큰 간격이 있습니다. 어떤 단계를 사용해야합니까?
이 질문은 다소 어리석은 생각이지만 대답을 찾을 수 없습니다.방향에 관계없이 속도가 일정한 물체의 위치를 업데이트하십시오.
고전 게임 탁구를하고 있습니다. 그리고 공이 어떤 각도에서도 같은 속도로 움직이기를 원합니다. 그러나 y = ax + b에있는 a가 높으면 현재 알고리즘 (x를 하나씩 늘리고 y를 계산)에서 각 픽셀 사이에 큰 간격이 있습니다. 어떤 단계를 사용해야합니까?
그래서 우리는 다음과 같이 있습니다. 초등학교 삼각에서
:
cos θ = x/r
및
sin θ = y/r
그래서 newX = oldX + r * cos θ
및
newY = oldY + r * sin θ
당신은 r
의 값으로 약 재생할 수 있습니다 (이것은 기본적으로 운동의 속도가 될 것입니다).
θ
공의 방향이됩니다.
speed
으로 설정합니다. 그런 다음 x+=speed*cos(theta)
과 y+=speed*sin(theta)
을 사용할 수 있습니다.
히트시 theta
을 변경해야합니다.
newPoint
|\
| \
y | \ r
| θ\
|-----
x oldPoint
당신이 기본적으로 원하는 것은 거리의 단계는 R,하지 X에 관련하는 것입니다 :
x, y뿐만 아니라 볼의 속도 값을 저장하기 위해 double/float 유형을 사용하고 그리기 위해 int 캐스트로 사용하고 싶습니다. 그런 다음 Dukeling 예제를 따르십시오. – SGM1