如何针对不同类型的碰撞执行CollisionCheck()?

时间:2018-10-30 00:49:06

标签: c# collision-detection

我确定在stackoverflow的某处必须有关于此的文章,但我似乎找不到它...

在没有此类文章的情况下,我正在创建一款游戏,其游戏对象之间的碰撞类型不同(具体而言:玩家与怪物,子弹与玩家,子弹与怪物,怪物与墙,子弹与墙,播放器和墙)。由于我仍在计划如何做,因此目前我没有太多代码可显示,这将是我第一次编写c#游戏。

class abstract GameObject {
    public Clear(){
        //Clears the object
    }
}
class Player : GameObject
class Bullet : GameObject
class Monster : GameObject

class Map {
    private List<GameObject> _objectList;    

    public CollisionCheck(GameObject incomingObj, GameObject hitObj) {
        var incRect = new Rectangle(
            incBox.Location.X, 
            incBox.Location.Y, 
            incBox.Width, 
            incBox.Height
        );
        var isCollision = incRect.Contains(hitObj.Location.X, hitObj.Location.Y);
        if (isCollision && hitObj.GetType() == typeof(Player)) {
            Map.Reset();
        }
        if (isCollision && hitObj.GetType() == typeof(Monster)) {
            incObj.Clear();        
            hitObj.Clear();
        }
        //There will be more if's for other cases
    }
}

到目前为止,这是我在CollisionCheck()中为Map所拥有的全部。问题是在更多情况下,我需要再做几次。有一个更好的方法吗?我不能在&&语句中使用switch,所以我认为switch不适合...我使用enum吗?还是有完全不同的方式进行碰撞检查?

谢谢。

0 个答案:

没有答案