だから私はアンドロイドで私の最初のゲームを作ろうとしています。問題は、小さな動くボールがあり、描いた線から跳ね返らせたいということです。そのためには、ボールの x、y が線からの 1 つの点の座標でもあるかどうかを調べる必要があります。
線に関するこれらの方程式を実装しようとしました
x=a1 + t*u1
y=a2 + t*u2 => (x-a1)/u1=(y-a2)/u2 (点が線上にある場合は t=t でなければなりません)
ここで、x と y はテストしている座標、dot[a1,a2] は線上のドット、u(u1,u2) は線のベクトルです。
コードは次のとおりです。
public boolean Collided()
{
float u1 =Math.abs(Math.round(begin_X)-Math.round(end_X));
float u2 =Math.abs(Math.round(begin_Y)-Math.round(end_Y));
float t_x =Math.round((elect_X - begin_X)/u1);
float t_y =Math.round((elect_Y - begin_Y)/u2);
if(t_x==t_y)
{
return true;
}
else
{
return false;
}
}
ポイント [begin_X,end_X] と [begin_Y,end_Y] は線からの 2 つのポイントで、[elect_X,elect_Y] はボールの座標です。
理論的にはうまくいくはずですが、実際にはほとんどの場合、ボールはラインを真っ直ぐ通過するか、本来あるべきでない場所で跳ね返ります。