В 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 шт):
У 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 из других источников, возможно он выключается или перемещается по клику, а может он удаляется?