Воскресенье, 22 Декабря 2024, 10:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Расстояние между объектами
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг