在unity3d中将一个游戏对象的孩子的位置设置为0,0,0

问题描述 投票:0回答:0

我有以下问题。我正在使用 SceneManager 将我的主角从一个场景传送到另一个场景。每当我传送他时,它都会传送到对象触发位置。

    private void OnTriggerEnter(Collider collider)
    {
        if (!load)
        {
            load = true;
            StartCoroutine(ChangeScene(collider));
        }
    }
    IEnumerator ChangeScene(Collider collider)
    {
        SceneManager.LoadScene(nextSceneIndex, LoadSceneMode.Additive);
        Scene nextScene = SceneManager.GetSceneAt(1);
        GameObject gameobj = collider.gameObject.transform.parent.gameObject;

        SceneManager.MoveGameObjectToScene(gameobj, nextScene);
        gameobj.transform.position = new Vector3(0, 0, 0);
        foreach (Transform child in gameobj.transform)
        {
            child.position = new Vector3(0, 0, 0);
        }
        yield return null;
        SceneManager.UnloadScene(nextSceneIndex - 1);
    }

游戏对象变换位置并不重要,因为它的子对象总是会重新定位自己以匹配传送前触发器的位置。我不明白为什么孩子们总是在父母所在的任何地方修改他们的位置。他们不应该在父母内部保持相同的位置吗?我还是 Unity 的新手,我不知道很多东西,我仍然需要一些帮助。

c# unity3d
© www.soinside.com 2019 - 2024. All rights reserved.