C # XNA - Инвентарь / разрушаемая местность и коллекция - PullRequest
0 голосов
/ 15 октября 2011

Я не могу описать проблему достаточно хорошо в заголовке.Если у somone есть права на редактирование, и он может сформулировать это лучше, не стесняйтесь.

Итак, у меня есть хороший маленький ландшафт, он разрушаем и все такое, но если somone, скажем, ломает дерево, как я могузаставить его добавить дерево в свой инвентарь?

Я не ищу код, просто метод.

Каждый блок имеет свой собственный класс, все наследующие от базового класса Block, и когдаблок уничтожен, он сбрасывает своего рода блок, способный на пикап.

Я могу это сделать, но я сбит с толку, потому что идея в том, что вы можете разбивать блоки и размещать их где-то еще (Да,вроде как Minecraft), как бы мне заставить эту систему инвентаря работать?Я думал два дня и ничего не получил.

Ответы [ 2 ]

4 голосов
/ 15 октября 2011

Предметам нужен какой-то идентификационный код.У вас, очевидно, уже есть один для хранения самого мира.

Блок имел тип "дерево", когда вы его рубили.

"Дерево" + Чоп => "Рубленое дерево"

Когда он поднят, вы удаляете изображение рубленого дерева из мира и кладете предмет рубленого дерева в инвентарь игрока.

1 голос
/ 15 октября 2011

Вместо того, чтобы объяснять это словами, которые я полагал, будет проще с некоторым псевдокодом:

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]++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...