XNA如何在地图中放置宽度和高度可变的对象

XNA如何在地图中放置宽度和高度可变的对象,xna,maps,game-engine,xna-4.0,Xna,Maps,Game Engine,Xna 4.0,我想制作一个游戏,玩家可以在现有的游戏地图中放置物体,比如墙或不同类型的炮塔 游戏地图由两部分组成: 因此,基本上是玩家可以在其中走动的主要游戏地图,即已经存在的树木、墙壁和水 以及玩家可以在主游戏地图中放置(当玩家获得木头、金子(当玩家杀死怪物等)的对象(具有特定的高度和宽度) 我应该如何处理这个问题?任何提示、带有方法的类结构都很好。在对象类中添加一个矩形,并使用其宽度和高度属性 class对象 { 公共矩形; 公共对象(矢量2位置、整数宽度、整数高度) { 矩形=新矩形((int)位置

我想制作一个游戏,玩家可以在现有的游戏地图中放置物体,比如墙或不同类型的炮塔

游戏地图由两部分组成:

  • 因此,基本上是玩家可以在其中走动的主要游戏地图,即已经存在的树木、墙壁和水
  • 以及玩家可以在主游戏地图中放置(当玩家获得木头、金子(当玩家杀死怪物等)的对象(具有特定的高度和宽度)

我应该如何处理这个问题?任何提示、带有方法的类结构都很好。

在对象类中添加一个
矩形
,并使用其
宽度
高度
属性

class对象
{
公共矩形;
公共对象(矢量2位置、整数宽度、整数高度)
{
矩形=新矩形((int)位置.X,(int)位置.Y,宽度,高度);
}
公众抽签()
{
绘制(纹理、矩形、颜色);
}    
}

主游戏地图可以是一个格子图案。你的炮塔的宽度和高度可以是图案大小的倍数,并占据一定数量的图案

例如,一个2x2炮塔将占用四块瓷砖。将炮塔/墙限制为瓷砖,而不是为其提供任意位置和长度是有限的,但它允许您更快地进行碰撞检测

你可以:

类平铺
{
公共建筑在这里建造的任何东西;
}

班级建设
{
该建筑物占用的公共列表瓷砖;
}

然后,你可以通过查看建筑物列表来更新建筑物,并且只通过查看附近的瓷砖来处理碰撞。

你刚刚写了应该如何处理它。现在你必须弄清楚如何对所有这些进行更新。这取决于你希望这些事情做什么。我一直在编码,所以任何代码都会有帮助或者像Terraria一样的游戏开发指南。有很多教程可以制作一个简单的游戏,就像你描述的那样,你只需要理解你到底不能理解什么− 地图,更新,课程,也许所有的东西。还有看看我们的游戏,它有点像Terraria,你可以问他一些建议。