如何将不同预制件的位置更新到当前位置?

How do I update the position of different prefabs to the current position?

我正在制作一个游戏,玩家是一个正方形,当他按下一个键时它会改变形状。为此,我制作了不同的预制件,因为我有不同的东西要改变。当我按下键更改为一个预制件时,我将相应的预制件设置为活动状态并禁用另一个。问题就在这里,我有三个预制件,我不知道在哪里连接来改变位置运行时。我试图使位置与其他位置相等,但没有用。

这是我做的代码:

public class Transformation : MonoBehaviour
{   
    public GameObject normal, small, big;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown("q"))
        {
            big.SetActive(true);
            normal.SetActive(false);
            small.SetActive(false);
            big.transform.position = normal.transform.position = small.transform.position;
        }
        if (Input.GetKeyDown("w"))
        {
            normal.SetActive(true);
            big.SetActive(false);
            small.SetActive(false);
            normal.transform.position = big.transform.position = small.transform.position;
        }
        if (Input.GetKeyDown("e"))
        {
            small.SetActive(true);
            normal.SetActive(false);
            big.SetActive(false);
            small.transform.position = big.transform.position = normal.transform.position;
        }
    }
}

清空一个 GameObject 并对其应用所有移动逻辑。将普通、小型和大型对象作为主要 GameObject 的子对象,并根据需要 enable/disable 放置它们。

如果要将这些gameObjects的位置移动到脚本对象的位置。最好试试这个:

void Update()
{
    small.SetActive(false);
    normal.SetActive(false);
    big.SetActive(false);
    
    if (Input.GetKeyDown("q"))
    {
        big.SetActive(true);
        big.transform.position = transform.position;
    }
    else if (Input.GetKeyDown("w"))
    {
        normal.SetActive(true);
        normal.transform.position = transform.position;
    }
    else if (Input.GetKeyDown("e"))
    {
        small.SetActive(true);
        small.transform.position = transform.position;
    }
}