В unity при использовании SetParent() объект меняет свою форму на родительскую

void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            Vector3 point = new Vector3(camera.pixelWidth/2, camera.pixelHeight/2, 0);
            Ray ray = camera.ScreenPointToRay(point);   
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                hit.transform.SetParent(ctrl_element.transform, true);
            }
        }
    }

Когда луч попадает в объект это объект должен стать дочерним другого объекта, но при этом он исчезает (мы предполагаем, что он меняет форму на родительскую, так как родительский объект - это пустой объект).


Ответы (1 шт):

Автор решения: Any 3Develop

У SetParent(Transform) есть перегрузка SetParent(Transform parent, bool worldStays). Используйте перегрузку чтобы исключить ваши проблемы.

worldPositionStays If true, the parent-relative position, scale and rotation are modified such that the object keeps the same world space position, rotation and scale as before.

Если ваш будущий родительский объект ctrl_element выключен, то все дочерние объекты будут выключены, по этому убедитесь, что он включен в момент изменения объекту родителя hit.transform.SetParent(ctrl_element.transform, true);

Так же вам стоит проверить, есть ли влияние на ctrl_element из других источников, возможно он выключается или перемещается по клику, а может он удаляется?

→ Ссылка