我确定在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
吗?还是有完全不同的方式进行碰撞检查?
谢谢。