나는 브레이크 아웃의 기본 자바 스크립트 게임을 만드는 중이라서하지만 난 정말 내가 몇 가지 문제가있어 아직 수학을 배운하지 않은 ..브레이크 아웃 게임 수학 - DX하는 각도, DY
나는 볼이 충돌 갖고 싶어 외륜은 외륜에 닿는 위치에 따라 각도에 따라 튀어 오릅니다.
방금 공이 패들에 닿았을 때 각도를 0-180 도로 계산하는이 함수를 만들었습니다. 그 각도는 공이 움직여야하는 각도입니다. (공이 노의 팁에 부딪치게되면 지금 당장 문제가 될 것입니다.하지만 나중에 다루 겠습니다.) 이제 나는 공을 가져올 방법을 찾아야합니다. dx와 dy를 사용하면 삼각법을 사용해야 할 것입니다. (x는 볼의 x 좌표에 대한 변수입니다)
function getBallAngle(){
const maxAngle = 180;
let hitPosition = (x - paddleX);
let ballAngle = 0;
const scaleToAngle = maxAngle/(paddleWidth);
ballAngle = hitPosition * scaleToAngle;
return ballAngle; }
저는 약간의 수학적 도움을 부탁드립니다.
편집 : 이미 게임이 작동하지만이 기능을 사용하지 않으면 공이 외륜에서 튀어 오르는 각도가 변경됩니다.
당신의 수학은 인바운드 각도와 관계없이 공이 패들의 같은 지점에 도달 할 때 순간적으로 동일한 아웃 바운드 각도를 갖게됩니다. 아웃 바운드 각도를 올바르게 계산하려면 인바운드 각도를 알아야합니다. – Forty3
있음 자바 스크립트 각도는 라디안 단위입니다. 각도를 rad로 바꾸려면 angleRadians = angleDeg * (Math.PI/180)'각도를 라디안으로하면 dx = Math.cos (angleRadians)로 각도의'dx'와'dy'를 얻을 수 있습니다. '와'dy = Math.sin (angleRadians)'제로도는 3 클록에서 오른쪽으로입니다. dx와 dy 만 가지고 각도를 라디안으로'angleRadians = Math.atan2 (dy, dx)'로하고 dy를 먼저 쓰면 – Blindman67
오, 공을 속도'speed'로 원하면'dx = Math.cos (angleRadians) * speed;와'dy = Math.sin (angleRadians) * speed;' – Blindman67