2015-05-21 4 views
1

У меня есть сложный GameObject (т. Е. Он является родительским для многих других игровых объектов), и я хочу переопределить его атрибут position.Unity - переопределение атрибута позиции GameObject

Например, возьмем следующий объект игру

ParentGameObject
-Child1
-Child2

Теперь я хочу позиционировать ParentGameObject относительно позиции ребенка2, то есть, когда я установил ParentGameObject.transform.position это должен переместить все элементы в отношении Child2

Установка положения родительского объекта на ноль должна фактически позиционировать Child2, но весь игровой объект должен двигаться.

enter image description here

+0

Больше объяснения действительно оценено. Я действительно не понимаю ваших требований. –

+0

Что вы подразумеваете под "по отношению к"? Вы имеете в виду, что Child2 не должен двигаться, а все остальные объекты? – Botz3000

+0

Мне нужно идти вместе с голосованием, чтобы закрыть, если вы не можете разработать немного больше. –

ответ

3

Если я вас правильно понял, это то, что вы хотите.

Чтобы переместить центр/стержень родительского объекта игры в один из дочерних объектов игры.

Vector3 object2Pos = Object2.transform.position; 
int deltaX = object2Pos.x; 
int deltaY = object2Pos.y; 
int deltaZ = object2Pos.z; 
foreach(GameObject childObj in parentGameObject.Children) 
{ 
    childObj.transform.position.x -= deltaX; 
    childObj.transform.position.y -= deltaY; 
    childObj.transform.position.z -= deltaZ; 
} 
//Now to bring back all objects where ever they were, 
parentGameObject.transform.position.x += deltaX; 
parentGameObject.transform.position.y += deltaY; 
parentGameObject.transform.position.z += deltaZ; 

Я не уверен в точном синтаксисе. Я исправлю это, однако это логика.

+0

Я получаю логику, я могу это сделать, создав собственную функцию SetPosition(), но я хотел узнать способ переопределить атрибут position, чтобы я мог реализовать эту логику там. ParentObject.transform.position должен делать все это, есть ли способ сделать это? – mdanishs

+1

Если вы хотите переопределить, вы должны создать свой собственный класс, который наследует GameObject. Ну, это не будет то, что вы хотели сделать, так как тогда вы не сможете работать с визуальным редактором. Почему бы вам не воспользоваться самой функцией? –

+0

@mdanishs _ ", но я хотел знать способ переопределить атрибут position, чтобы я мог реализовать эту логику там" _ - это плохая идея. Вы применили бы этот конкретный сценарий ко всему, что было бы довольно катастрофическим – MickyD

Смежные вопросы