2016-07-12 5 views
0

Я создал 50x50 самолеты с C# сценария. Я использовал вершины, УФ и треугольники. И эти самолеты занимают площадь. Так что проблем нет. Но мой Plane_0_0, который является первым, позиционируется в центре. Мне нужно, чтобы каждая плоскость поворачивалась влево-вправо. Как я могу поворачивать нижний левый с помощью скрипта?Unity5 плоскость точка поворота создание

+0

Дайте несколько экранов, пожалуйста, я не уверен, что вы точно хотите –

+0

http://hizliresim.com/gog7pZ мне не нужен множество поворотной точки центра в нижнем левом углу –

ответ

0

Хорошо, я думаю, что у меня это есть. Вы хотите, чтобы нижний левый угол «плитка» был центром всей «плитки»/«map», поэтому, если и когда вы вращаете «все», это должно быть центром.
Хорошо, это легко. Что вам нужно сделать, сделайте, чтобы Plane_0_0 разбил родительскую часть остальных фрагментов (установите свойство .Parent всех фрагментов, которые вы хотите быть частью вашего поворота на «опорную плиту» GO).

Позже вы можете это изменить. Так, если, например, какая-то другая плитка должна быть центром опоры, вы можете «сбросить родительские права». НО репарация - дорогостоящая процедура.


EDIT
As (как я уже писал выше) reparenting является дорогостоящей операцией, я думал об альтернативах и это то, что я нашел, что я хотел бы использовать: создать GameObject (скажем, другой самолет) без сетки визуализатора, коллайдер, и т. д. и вытащить его на размер поля (в редакторе). Сделайте это родительским элементом всех фрагментов сцены. Затем, всякий раз, когда вам нужно «поворачивать» все, вы можете пойти народительского самолета, обозначив центр вращения, где бы вы ни пожелали (например, «над» левым нижним углом плитки).
Я хотел бы также изменить стандартное Unity Plane и удалить Mesh Collider от него и заменить его простой Box Collider, сохранить как сборные и использовать это сборный как мой плитки, чтобы сохранить некоторое вычислительное время (если работа Planes' не что иное, как служить как плато).

+0

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

+0

Yup, потому что все дети перемещаются и вращаются вместе с родителем, и они делают это вокруг центра родителя (или точки поворота) –

+0

все еще не работает:/Что я делаю неправильно. Могу ли я просто вставить прямоугольное преобразование и поворот влево-влево? –

0

Ваш вопрос немного неясен. Но из того, что я думаю, я понял, вы пытаетесь заставить свои самолеты вращаться. Для этого вы можете использовать углы Эйлера:

gameObj.transform.eulerAngles = new Vector3(
    gameObj.transform.eulerAngles.x, 
    gameObj.transform.eulerAngles.y, 
    gameObj.transform.eulerAngles.z 
); //Find the axis on which you want to rotate, and apply a value to it, for example : 
    //gameObj.transform.eulerAngles.y + 150 

Где gameObj - ваш объект самолета, конечно.

+0

Если по оси в нижнем левом углу, вы имеете в виду, что ваш самолет должен быть обращен к левому нижнему углу экрана, да, он может работать :) ось и угол слева внизу должны быть transform.eulerAngles.y + 225, но не уверены в этом. Попытайтесь изменить значения и затронутую ось, пока не получите то, что вам нужно :) – YumeYume

+0

спасибо за ответ. Но мне не нужно вращать плоскость. Просто создайте точку опоры с помощью скриптов. Вот это моя проблема. http://hizliresim.com/gog7pZ –

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