2011-10-14 1 views
0

제목에 문제를 충분히 설명 할 수 없습니다. somone이 편집 권한을 가지고 있으며 더 나은 어구로 말할 수 있다면 언제든지 자유롭게 사용할 수 있습니다.C# XNA - 인벤토리/파괴 가능한 지형 및 컬렉션

좋은 작은 지형이있어 파괴적이고 모든 것이지만 somone이 말하자면 나무가 깨지면 어떻게하면 나무를 재고에 추가 할 수 있습니까?

코드를 찾는 것이 아니라 단지 방법을 찾고 있습니다.

각 블록에는 기본 클래스 블록에서 상속 한 모든 클래스가 있으며 블록이 파괴되면 일종의 픽업 가능 베이비 블록이 삭제됩니다.

저는이 작업을 수행 할 수 있지만 생각을하면 블록을 분해하여 다른 곳에 배치 할 수 있기 때문에 혼란 스럽습니다 (예, Minecraft와 비슷합니다). 어떻게 인벤토리 시스템을 작동시킬 수 있습니까? 나는 이틀 동안 생각하고 있었고 나는 아무것도 얻지 못했다.

+0

, 당신은 그 아이템을 얻는 방법을 궁금해하는 인벤토리에 넣거나 다른 것? – thedaian

+0

Prety 많이. 나는 그 물건을 떨어 뜨리는 방법을 궁금해. 나는 (새로운 DroppedItem (ItemToBeRemoved.Texture)와 같은) 뭔가를 할 수 있다고 생각하지만, 아이템을 가져 왔을 때 플레이어에게 어떤 아이템을 줄 것인지 알려주는 것이 궁금합니다. 나는 내가 원하는 것을하고있는 성찰에 관해 무엇인가를 읽고 있었다고 생각하지만, 나는 금붕어보다 더 나쁜 기억을 가지고있다. –

+0

이 농담입니까? – Blau

답변

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]++; 
    } 
} 
4

품목에는 일종의 ID 코드가 필요합니다. 분명히 이미 세계를 저장하는 것이 있습니다.

블록을 잘랐을 때 블록에 "트리"유형이 있습니다.

"나무"+ 잘라 => "다진 나무"당신이 세계에서 다진 트리 그래픽을 제거하고 플레이어의 인벤토리에 다진 트리 항목을 넣어 잡았습니다

.

+0

그래서 기본적으로 다음과 같이합니다. if (item.name == "chopped wood") {inventory.add block (wood)} 등 등? –

+1

기본적으로 하드 코딩보다 작업을 더 잘 수행 할 수 있습니다. –

+1

@AshleyDavies : 왜 텍스트를 보았습니까? 그릴 때 사용했던 블록 ID가 이미 있습니다. 사용하십시오! –