C#XNA - 库存/可破坏地形&采集

时间:2011-10-14 21:44:35

标签: c# .net xna inventory

我无法在标题中充分描述问题。如果somone具有编辑权限并且可以更好地表达它,请随意。

所以我有一个漂亮的小地形,它是可毁坏的,但是如果somone,比如打破一棵树,我怎么能让它在他们的库存中添加一棵树?

我不是在寻找代码,只是一种方法。

每个块都有自己的类,所有类都继承自基类Block,当块被破坏时,它会丢弃一种可拾取的婴儿块。

我能够做到这一点,但我很困惑,因为你的想法是你可以打破积木并将它们放在其他地方(是的,有点像Minecraft),那么我将如何使这个库存系统工作?我已经思考了两天而我一无所获。

2 个答案:

答案 0 :(得分:4)

项目需要某种ID代码。你显然已经有一个存储世界。

当你切碎它时,该块有一种“树”。

“Tree”+ Chop => “切碎的树”

当它被拾取时,你从世界中删除切碎的树形图形,并将一个砍树项目放在玩家的库存中。

答案 1 :(得分:1)

而不是用文字解释它,我认为用一些伪代码会更容易:

public enum MaterialType
{
    Wood,
    Stone,
    Count // this should always be the last one
}

public class Block
{
    MaterialType m_type;
}

public class Player
{
    MaterialType m_inventory[MaterialType.Count];
}

// call this when you break a block
public class World
{
    public void OnBlockDestroyed()
    {
        player.m_inventory[block.m_type]++;
    }
}