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

时间:2013-11-05 13:52:55

标签: xna maps game-engine xna-4.0

我想制作一款游戏,玩家可以将物品放置在现有的游戏地图中,如墙壁或不同类型的炮塔。

游戏地图包含两件事:

  • 所以基本上是玩家可以走动的主要游戏地图,存在已经存在的树木,墙壁和水。
  • 玩家可以放置的物体(具有特定的高度和宽度)(当他在主游戏地图中发出木头,金币(当玩家杀死怪物等)时。

我该如何处理?任何提示,使用方法的类结构都会很好。

2 个答案:

答案 0 :(得分:1)

主游戏地图可能是一个瓷砖网格。然后你的炮塔的宽度和高度可以是瓦片大小的倍数,占据一定数量。

例如,2x2炮塔会占用四个瓦片。限制炮塔/墙壁到瓦片而不是给它们任意位置和长度是有限的,但它可以让你更快地碰撞检测。

然后你可以:

class Tile
{
   public Building WhatIsConstructedHereIfAnything;
}

class Building
{
   public List<Tile> TilesOccupiedByThisBuilding;
}

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

答案 1 :(得分:0)

向对象类添加Rectangle,并使用其WidthHeight属性。

class YourObject
{
    public Rectangle Rectangle;

    public YourObject(Vector2 position, int width, int height)
    {
         Rectangle = new Rectangle((int)position.X, (int)position.Y, width, height);
    }

    public void Draw() 
    {
        spritebatch.Draw(Texture, Rectangle, Color);
    }    
}