2012-02-21 7 views
1

私は、各ゲームオブジェクトが衝突するゲームオブジェクトのタイプを調べることによって、他のゲームオブジェクトと異なる反応をする衝突検出システムを作りようとしています。異なるゲームオブジェクト/クラス間の衝突のためにタイプ/列挙型を検出する

は、私が得続ける:

「ラットは」「タイプ」ですが、「変数」のように使用されます。

これは私がどのような物体が衝突を検出し、オブジェクトが特定のタイプの他に衝突した際に何をすべきかを決定するために使用するコード:

switch (other.Type) { 
    case Rat: 
     float tooClose = (Radius * 2) - distance.Length(); 
     distance.Normalize(); 

     PositionAfterCollisions += distance * tooClose * 0.5f; 
     VelocityAfterCollisions = -Velocity; 
} 

'other'は、ここではゲームオブジェクトへの参照です衝突リストに表示されます。

そして、これが識別しようとしているクラス/ GameObjectI'mのトップ+それが継承するクラスからである:C#で

public enum ObjectType 
{ 
    Default, 
    Player, 
    Rat, 
    Cheese, 
    Trap, 
    Home 
} 
public ObjectType Type = ObjectType.Rat; 

答えて

2

、列挙型は常に名で修飾されています。

あなたは今、私が代わりにこのエラーが出る

case ObjectType.Rat: 
+0

が必要があると思います。コントロールは、1ケースのラベル(「ケース2:」)からフォールスルーすることはできません別の – Dzyu

+0

NVMに、休憩を忘れてしまった、あなたは私のためにそれを解決!ありがとう! ^^ – Dzyu