Расстояние между объектами
|
|
DebieCooper | Дата: Понедельник, 27 Апреля 2015, 14:27 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Доброго времени суток. У меня есть сфера, со скейлом 1300 юнити единиц, в позиции (0,0,0). Как мне расположить другой объект отсчитывая расстояние от края этой сферы?
|
|
| |
HardcoreCoder | Дата: Понедельник, 27 Апреля 2015, 14:42 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| По идеи радиус+ нужное расстояние...
SimpleMoscowGuy
С++ & C# programmer PAWN scripter Всегда буду рад вам помочь, обращайтесь.
|
|
| |
basist | Дата: Понедельник, 27 Апреля 2015, 16:56 | Сообщение # 3 |
пациент Flight Dream Studio
Сейчас нет на сайте
| HardcoreCoder, А почему (+) Ему же нужно от края сферы, т.е. радиус (-) нужное расстояние. Или я что-то не до понял.
|
|
| |
Extravert | Дата: Среда, 29 Апреля 2015, 03:08 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| В функцию обернешь сам.
Создать объект на расстоянии 100f от края сферы прямо перед сферой с радиусом 1300f Код var radius = 1300f; var distanceFromBorder = 100f; var normal = sphere.transform.forward; //Нормаль отвечает за то, в каком направлении создастся сфера var spherePosition = sphere.transform.position; //или new Vector3() если конкретно var createPosition = spherePosition + normal*(radius+distanceFromBorder); var createObject = new GameObject(); createObject.transform.position = createPosition;
Переместить существующий объект по направлению к сфере в дистанции distanceFromBorder от края сферы Код //parameters: Transform sphere, Transform obj, float sphereRadius, float distanceFromBorder var normal = (obj.position - sphere.position) var objPosition = sphere.position + normal*(radius+distanceFromBorder); obj.position = objPosition;
Unity XGM Community
Сообщение отредактировал Extravert - Среда, 29 Апреля 2015, 03:15 |
|
| |
DebieCooper | Дата: Четверг, 30 Апреля 2015, 17:01 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Благодарю за помощь, уже все давно сделал) Сейчас другой вопрос возник. У меня есть один объект(Солнце), который стоит в (0,0,0). И есть другой объект(земля) который вращается вокруг солнца: Код earth.transform.RotateAround(Vector3.zero, Vector3.up, k * periodEarth * Time.deltaTime); ПРоблема в том, что у меня все объекты вращаются в одной плоскости. И если я пытаюсь поднять землю по Y(на 100 единиц), то она уже вращается не вокруг (0,0,0) а вокруг (0,0+100,0). Т.е. над солнцем.
Сообщение отредактировал DebieCooper - Четверг, 30 Апреля 2015, 17:45 |
|
| |
MANMANA | Дата: Четверг, 30 Апреля 2015, 19:05 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Знамени ось вращения (которая у тебя сейчас Vector3.up) на на нужный тебе вектор3, например, Vector3.forward, или Vector3(20,20,20).http://docs.unity3d.com/ScriptReference/Vector3.html Добавлено (30 апреля 2015, 19:05) --------------------------------------------- Или сделай вращающиеся объектами дочерними к солнцу, тогда тебе нужно будет лишь наклонить солнце. Два разных подхода - два разных результата. Можно скомбинировать оба
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
HardcoreCoder | Дата: Суббота, 02 Мая 2015, 00:52 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| basist, Ну смотри, что бы начертить круг в том же openGL нужно 3 параметра : х координата, у координата и радиус. Создадим круг в точке 0.0; 0.0 с радиусом 5. К нему движется некий объект, и что бы коллизия сработала на гранях круга, нужно в проверке координаты объекта отнять от координак круга + радиус, т.к координаты круга - радиус -это уже противоположная сторона Круга. Как то так.
SimpleMoscowGuy
С++ & C# programmer PAWN scripter Всегда буду рад вам помочь, обращайтесь.
Сообщение отредактировал HardcoreCoder - Суббота, 02 Мая 2015, 00:53 |
|
| |