2017-01-31 2 views
1

現在、Unityエンジンで動作するUnturnedゲーム用のmodを開発中です。 モッズはほぼ準備ができていますが、私はAreaクラスにいくつか問題があります。 これは2つの斜めの点が与えられて構成された矩形領域を表します。 An Imageエリアに特定のVector3が含まれているかどうかを調べる

問題のある部分は、Contains(Vector3)メソッドであり、動作しません。

public class Area 
    { 
    public Vector3 A; 
    public Vector3 B; 

    public Area(Vector3 A, Vector3 B) 
    { 
     this.A = A; 
     this.B = B; 
    } 

    public bool Contains(Vector3 player) 
    { 
     return Vector3.Distance(A, B) >= Vector3.Distance(player, A) 
      && Vector3.Distance(A, B) >= Vector3.Distance(player, B); 
    } 
} 

誰かがContainsの方法を修正する方法を教えてもらえますか?何か不足していますか? 目次:AlthoghはVector3を使用しています。私は2D空間について話しています!

+0

問題は幾何学的です。与えられた2点で、これらの点を反対側の端として持つ無限の矩形数を定義できます。 – apomene

+0

@apomeneしたがって、4点を定義する必要がありますか? – nickkoro

+0

このような何か試してみてください:。 ブールゲームオブジェクト::ボディ:: isInRectangle(constのIRR ::コア:: vector2df&objectPositionToCheck、DOUBLE半径) { リターンthis->位置を()X> = objectPositionToCheck.X - 半径&& this-> Position()。X <= objectPositionToCheck.X + radius && this-> Position()。Y> = objectPositionToCheck.Y - 半径&& this-> Position()。Y <= objectPositionToCheck.Y + radius; } – user743414

答えて

0

これは最善の方法ではありませんが、機能します。

public bool Contains(Vector3 player) 
{ 
    float tax, tay, tbx, tby; 
    if(a.x > b.x) { tax = a.x; tbx = b.x; } else { tax = b.x; tbx = a.x; } 
    if(a.y > b.y) { tay = a.y; tby = b.y; } else { tay = b.y; tby = a.y; } 
    return (player.x < tax && player.x > tbx && player.y < tay && player.y > tby) 
} 
+0

私のために働かない:( – nickkoro

+0

>< – driconmax

+0

準備中! – driconmax

関連する問題