2d无限世界一代

时间:2015-01-21 17:12:36

标签: c# unity3d

我正在Unity3d上制作一个2D游戏,我想创造一个无限世界一代,我创建了一个名为“chunk”的游戏对象,我会在其他游戏对象中随机生成另一个代码,它有一个精灵渲染,我把它放在我的纹理,现在,这是我的代码。它与无限世界一代无关,但它在玩家周围放置了一些“块”

void Start () {

    rot = Quaternion.identity;

    x1 = (transform.position.x + 410); 
    y1 = (transform.position.y + 410); 
    x2 = (transform.position.x - 410); 
    y2 = (transform.position.y - 410); 
    x3 = (transform.position.x + 410); 
    y3 = (transform.position.y); 
    x4 = (transform.position.x);   
    y4 = (transform.position.y + 410);
    x5 = (transform.position.x - 410);
    y5 = (transform.position.y); 
    x6 = (transform.position.x);     
    y6 = (transform.position.y - 410); 
    x7 = (transform.position.x + 410);  
    y7 = (transform.position.y - 410);  
    x8 = (transform.position.x - 410);  
    y8 = (transform.position.y + 410); 

    Instantiate (chunk, transform.position, transform.rotation);
    Instantiate (chunk, new Vector3 (x1,y1,0), rot);
    Instantiate (chunk, new Vector3 (x2,y2,0), rot);
    Instantiate (chunk, new Vector3 (x3,y3,0), rot);
    Instantiate (chunk, new Vector3 (x4,y4,0), rot);
    Instantiate (chunk, new Vector3 (x5,y5,0), rot);
    Instantiate (chunk, new Vector3 (x6,y6,0), rot);
    Instantiate (chunk, new Vector3 (x7,y7,0), rot);
    Instantiate (chunk, new Vector3 (x8,y8,0), rot);
}

我的问题是,我怎样才能创造无限世界一代?

2 个答案:

答案 0 :(得分:0)

没有任何一种方法可以做到这一点,所以你将要收到的答案,例如这个答案,将比具体的代码更具概念性。总之...

你可以考虑拥有一个块的2D数组,并在最右边的一个末端创建一个新的块对象,同时当玩家从左边输入一个新块时摧毁最左边的那个。同样,从右侧输入新块时可以说相反,但是这种方法不会为您提供太多的块管理。

答案 1 :(得分:0)

尝试研究Perlin Noise。 您应该能够根据任何位置的坐标始终生成相同的值,从而为您提供“无限”的世界。