奇怪的 Bug:SetParent 會改變位置

介紹

遇到的一些很奇怪,然后暫時(shí)還沒有解決的 Bug,有好心人知道怎么回事的話可留言或者發(fā)郵件到 zhangqrr@qq.com。

復(fù)現(xiàn)

在場景中新建三個(gè)同級的物體,分別如下所示:


Scene

Gameobject

Parent

Move
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject GoParent;
    public GameObject GoMove;

    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.Equals(GoMove))
        {
            other.transform.SetParent(GoParent.transform,true);
        }
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.G))
        {
            GoMove.transform.SetParent(GoParent.transform, true);
        }
    }


}

可以看到腳本的內(nèi)容是把 Move 的父物體換成 parent,然后不改變其在世界坐標(biāo)的位置。兩種方式:

  • 在 Update 里面通過按鍵來觸發(fā)
  • 在 OnTriggerEnter 里面來觸發(fā)
    運(yùn)行效果是在 Update 里面的符合預(yù)期,但是通過 OnTriggerEnter 觸發(fā)的,Move 就會改變在世界坐標(biāo)中的位置,而且很奇怪的是不是因?yàn)楸3至俗约旱木植孔鴺?biāo)不變而導(dǎo)致的世界坐標(biāo)位置變化,而是局部坐標(biāo)和世界坐標(biāo)位置都變了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容