私はブレイクアウトの基本的なjavascriptのゲームを作っていますが、私は本当に、私はいくつかの問題を抱えている、まだ数学を学んでいない...ブレイクアウトゲーム数学 - 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
Javascriptの角度はラジアンです。角度をradから 'angleRadians = angleDeg *(Math.PI/180)'に変換するには、角度をラジアンで指定すると、その角度の 'dx'、' dy'を 'dx = Math.cos(angleRadians) 'と' dy = Math.sin(angleRadians) 'ゼロクロスは3クロックで右にあります。あなただけのDXとDYを持っており、ラジアン 'angleRadians = Math.atan2(DY、DX)' DY最初 – Blindman67
ああ、あなたはスピード 'speed'としてボールをしたいならば、' DX = Math.cos(との角度をしたい場合angleRadians)*スピード; 'と' DY = Math.sin(angleRadians)*スピード; ' – Blindman67