2013-07-06 3 views
0

나는 브레이크 아웃 게임을하고 있는데, 패들에 닿은 위치에 따라 패들에서 공의 튀어 오름을 계산하는 데 약간의 노력을 기울였습니다. 나는 외륜의 양쪽에 똑같이 튀지 않는 뒤에 오는 ball.vx = (ball.x - paddle.x)/10로 나왔다. 예를 들어 볼이 패들의 왼쪽 끝을 치면 ball.vx는 -3.2가되고 맨 오른쪽 1.6이면. 내가 무슨 짓을공의 튀어 오름 계산하기

은 다음과 같습니다 ball.vy = 4 ball.vx = (ball.x - paddle.x)/10

ball.x = ball.x + ball.vx 
ball.y = ball.y + ball.vy 
+0

그렇지 똑같이 "무슨 뜻인지 명확히하십시오 외륜의 양쪽에 ". –

+0

그게 무슨 뜻인지, 예를 들어 공이 패들의 맨 왼쪽을 치면, ball.vx는 -3.2, 맨 오른쪽 1.6이면. – Bnhjhvbq7

답변

0

하는 것은 계산에 동일한 기준에서 수행되어 있는지 확인합니다 대신에 각 객체 외륜의 중심과 공의 모서리.

(또한, [매우 가깝거나, 상기와 동일한 속도를 유지 방정식을 사용하는 것을 고려하더라도 각도를 변경하는 경우). 당신 ball.xpaddle.x 모두의 왼쪽 참조 있음을 숙지

0

패들.

그 가정 :

  • ball.r
  • paddle.w반경 인은 패의 입니다

당신은 그 같은 시도해야합니다 :

0 1,234,687,

갱신 :

ball.vx = ((ball.x + ball.width/2) - (paddle.x + padde.w/2))/10

(ball.x - ball.r/2paddle.x - padde.w/2 모두의 중간을 나타냅니다)

+0

글쎄 공이 이미지이기 때문에 반경이 없다.하지만 불행히도 ball.width/2를하지는 않았다. 공이 항상 오른쪽으로 간다. ball.vx = (ball.x - ball.width/2 - paddle.x - paddle.width/2)/10 – Bnhjhvbq7

+0

실수를 저질렀다고 생각합니다 : 'ball.vx = ((ball.x + ball.width/2) - (paddle.x + padde.w/2))/10' – Darky

+0

작동하지 않았습니다. 공은 패의 가장 왼쪽 측면을 칠 때 왼쪽으로 날카로운 각도로 들어가고 맨 오른쪽 패들면을 칠 때 오른쪽으로 약간 움직입니다. – Bnhjhvbq7