Как сделать CollisionCheck () для разных типов столкновений? - PullRequest
0 голосов
/ 30 октября 2018

Я уверен, что где-то в 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? Или есть совершенно другой способ проверки столкновений?

Заранее спасибо.

...