1

パドルクラスのブールメソッドで、ボールが2つのパドルのいずれかに触れているかどうかを判断したいのですが、適切なロジックを見つけるのに苦労しています...

変数は次のとおりです。

// instance variables 
private Screen theScreen;
private MyroRectangle theRectangle;
private int topLeftX;
private int topLeftY;


// constants
private final int HEIGHT = 100;         //the paddle's fixed height
private final int WIDTH = 5;            //the paddle's fixed width
private final int PIXELS_PER_MOVE = 20; //the number of pixels a paddle can move either up or down in one timestep

メソッドは次のとおりです: * このメソッドは、ボールがタッチしたかどうかを判断するためのものです。ボールが跳ね返ることはありません。

public boolean isTouching(Ball b)
{   

    boolean t = false;
    if ((theScreen.getWidth()-(b.getX() + b.getRadius())) >= theScreen.getWidth()-theRectangle.getCenterX() )
          {
t= true;
}

    return t;

私も試しました:

 if ((b.getX() > theRectangle.getCenterX()/2) && (b.getY() < theRectangle.getCenterY()/2))

========== ** 必要になるかもしれない ball クラスのメソッド:

getX()
getY()
getRadius()

==============

** Rectangle クラス:

getCenterX()
getCenterY() 

===============

** 画面クラス:

getWidth()
getHeight()

少なくとも条件の 1 つを決定したいだけで、残りの条件を把握できます。

4

2 に答える 2

0

大学 3 年生のとき、Windows Phone の衝突検出システム アルゴリズムに取り組みました。完璧とは言えませんが、非常に効率的で、ほとんどのゲームに適応できます。

それが機能する方法は非常に簡単でした。オブジェクトには 2 種類ありました。衝突可能なオブジェクト (敵や建物など) と、これらの衝突可能なオブジェクトとの衝突をチェックするオブジェクト。

このアイデアは、データ構造のクラスを受講していて、リンク リストについて話したときに思いつきました。各リンクが衝突可能なオブジェクトで、既に作成されているゲーム オブジェクトをそこに貼り付けることができるとしたらどうでしょうか。次に、ゲーム オブジェクトが動き回ると、それらの位置の衝突をチェックする軽量な方法が得られます。こうして私のシステムが誕生しました。

基本的には、使用することです

C (またはポイント間の距離) = SqrRoot(A^2 + B^2) - ボールの半径

この式は、あなたにとって非常に見慣れたものに見えるはずです。

この質問に対する完全な回答を見ることができます: Java More Resourceful Collision Detection

于 2013-10-29T16:57:02.783 に答える
0

この問題は、パドル (長方形) とボール (円) の 2 つの 2D 領域が交差するかどうかという問題を解決するものと見なすことができます。そのためのグーグル/ウィキの式だけを使用できます。

幾何学によって問題を解決するための数学に踏み込みたくない場合、パッケージ java.awt.geom には、計算を実行できるクラス、つまり java.awt.Area が含まれています。パドルとボールの Area インスタンスを作成し、intersects() メソッドを呼び出して、それらが衝突したかどうかを確認します。

于 2013-10-29T18:19:42.333 に答える