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