C# 如何重置矢量3位置?

C# 如何重置矢量3位置?,c#,unity3d,C#,Unity3d,我正试图编写一个脚本来实例化一行预置。这是第一次工作,但每次之后,它都会在0x、0y、0z处实例化一个,其余的在30x-40x之外。我尝试在for循环执行之前设置初始位置,然后使用initalPos变量重置位置,但这似乎不起作用。在我的代码中 public class generator : MonoBehaviour { public int height = 0; public int width = 0; private Vector3 temp;

我正试图编写一个脚本来实例化一行预置。这是第一次工作,但每次之后,它都会在0x、0y、0z处实例化一个,其余的在30x-40x之外。我尝试在for循环执行之前设置初始位置,然后使用initalPos变量重置位置,但这似乎不起作用。在我的代码中

    public class generator : MonoBehaviour {

    public int height = 0;
    public int width = 0;
    private Vector3 temp;
    public GameObject sprite;
    private Vector3 initialPos;


    void Start () 
    {
        initialPos = new Vector3(0,0,0);

        for(int i = 0; i < width; i++)
        {
            Instantiate (sprite, temp, Quaternion.identity);
            temp = sprite.transform.position;
            temp.x += 0.089f;
            sprite.transform.position = temp;
        }
        temp = initialPos;
    }
}
公共类生成器:单行为{
公共整数高度=0;
公共整数宽度=0;
私人矢量3温度;
公共游戏对象精灵;
私有向量3初始位置;
无效开始()
{
initialPos=新向量3(0,0,0);
对于(int i=0;i

temp变量是我设置当前位置的变量,因此我可以向它添加0.089,这样我的精灵将对齐。我正在尝试重置该值,以便它们每次都从0x开始排列。

您可以通过指定希望在一行中生成的预设数量而不是确切的宽度来简化代码

此外,使用
gameObject.transform.localScale.x
而不是通过硬编码的数字增加繁殖位置x值

例如:

public GameObject Cube;

void Start()
{
    SpawnRow(Vector3.zero, 10);
}

void SpawnRow(Vector3 startPosition, int RowLength)
{
    Vector3 currentPos = startPosition;

    for (int i = 0; i < RowLength; i++)
    {
        Instantiate(Cube, currentPos, Quaternion.identity);
        currentPos.x += Cube.transform.localScale.x;
    }
}
公共游戏对象立方体;
void Start()
{
产卵行(向量3.0,10);
}
空产卵行(矢量3起始位置,整数行长度)
{
Vector3 currentPos=起始位置;
for(int i=0;i
此外,如果您想在相邻行之间生成其他行,可以如下调用SpawnRow():

void Start()
{
    Vector3 currentPos = Vector3.zero;

    for (int i = 0; i < 3; i++)
    {
        SpawnRow(currentPos, 10);
        currentPos.z += Cube.transform.localScale.z;
    }
}
void Start()
{
Vector3 currentPos=Vector3.0;
对于(int i=0;i<3;i++)
{
产卵区(当前位置,10);
currentPos.z+=Cube.transform.localScale.z;
}
}

这将给你三行10个游戏对象,它们彼此紧挨着

非常感谢你!我不知道localScale或Vector3.0。解决了我的问题,教会了我一些东西。我真的很感激。