2011-08-29 21 views
1

申し訳ありませんが、現在、私はGame1クラス(メインクラス)で衝突検知を行っています。 例:プレイヤーとボールとの間の矩形の衝突。 私はこれらの衝突が私のGame1クラスに入ることを望んでいません。 どのようなクラスの人々は、頻繁に衝突の検出をチェックし、どのようにですか?衝突検出に関する非常に基本的な質問。 XNA Beginner

ありがとうございました。

+0

ウィジェットのどの領域がウィジェットクラス内の衝突であるかを定義します。私はその後、プレーヤー内を移動するコード内の衝突をチェックします。この方法では、異なる衝突領域を持つ異なるウィジェットを持つことができます。 –

+0

@Ramhound私はあなたが言ったことを本当に理解できませんでした。おそらくそれは私の悪い英語のせいですが、私がとにかく尋ねていることをもう一度説明しましょう。 –

+0

@Ramhoundボールとプレーヤーの衝突をチェックする必要がある場合は、どのクラスでコードを実装する必要がありますか?そしてどうやって? –

答えて

4

私は 'CollisionManager'と呼ばれるクラスを作成します。この方法で、このクラスのすべての衝突をコーディングしてGameクラスで使用できます。あなたはそれが個人的な好みなので基本的にあなたが望むものと呼ぶことができます。あなたがそれを呼ぶように見えるものは何でも。

衝突検出の例は、exampleです。クレジットはこの記事の作者にも、私自身ではなく、

App Hubにはさらに多くのリソースがあります。そこには、衝突に関するだけでなく、XNAに関する多くの情報があります。

希望しました!

編集:

基本的にはあなたが衝突についてあなたのゲームのために必要なすべての機能を備えていCollissionManagerクラスを持っています。たとえば、パドルとボールについて聞いた。したがって、パドルとボールをパラメータとして関数を書くことができます。衝突した場合、その機能をチェックインすることができます。

using projectname.CollisionManager; 

および更新で(私は少なくとも、私がXNAを使用から1年となっていると思う)彼らはで衝突するかどうかをチェックすることができます:あなただけの次の操作を行うことができ、あなたのゲームのクラスで

protected boolean PaddleBallCollision(Rectangle paddle, Rectangle ball) 
{ 
if (paddle.Intersects(ball)) return paddleHit= true; 
} 

あなたの関数を呼び出す。

boolean paddleHit = CollisionManager.PaddleBallCollision(paddle,ball) 

if (paddleHit == true) 
{ 
    //TODO when hit 
} 

これは私が信じるようなものです。ボールは丸いので、長方形は最善ではありませんが、頭の上から完璧なものを言うことはできません。私が言ったように、これを使ってからしばらくしていますが、これはあなたに一般的なアイデアを与えるはずです!

+0

あなたは私に衝突検出の例を教えました。それは私に必要なものではありません。 –

+0

これは私が必要なものです:http://stackoverflow.com/questions/7234098/in-what-c​​lass-should-i-detect-collisions –

+0

これについての回答があれば、ここに投稿してください私の 'V'とアップ率。 –

関連する問題