Рандомная точка на окружности

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Рандомная точка на окружности

Сообщение Asm888 12 апр 2016, 17:58

Здравствуйте! Прошу помощи! Мне нужно каждые 2 секунды создавать объект в рандомной точке НА окружности (не путайте, мне нужна точка именно на дуге окружности). И я ума не приложу как это делать.. Помогите пожалуйста
Asm888
UNец
 
Сообщения: 5
Зарегистрирован: 12 апр 2016, 17:40

Re: Рандомная точка на окружности

Сообщение samana 12 апр 2016, 18:06

Может это? http://docs.unity3d.com/ScriptReference ... phere.html
А если для 2d, то можно как-то так:
Синтаксис:
Используется csharp
Vector2 randOnCircle(float radius)
{
    float randAng = Random.Range(0, Mathf.PI * 2);
    return new Vector2(Mathf.Cos(randAng) * radius, Mathf.Sin(randAng) * radius);
}
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Рандомная точка на окружности

Сообщение Woolf 12 апр 2016, 18:49

Asm888 писал(а):Здравствуйте! Прошу помощи! Мне нужно каждые 2 секунды создавать объект в рандомной точке НА окружности (не путайте, мне нужна точка именно на дуге окружности). И я ума не приложу как это делать.. Помогите пожалуйста


Вот они, последствия ЕГЭ..

Для сферы
float radius;
Vector3 centrPoint;

Vector3 randomPoint=centrPoint+new Vector3(Random.value-0.5f,Random.value-0.5f,Random.value-0.5f).normalized*radius;


Для окружности тоже самое, только Veсtor2

Чтобы каждые 2 секунды, используйте карутину, про создание тут http://docs.unity3d.com/ScriptReference ... tiate.html
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Рандомная точка на окружности

Сообщение samana 12 апр 2016, 19:18

Woolf, а ваш вариант ведь действительно хороший, я даже как-то не подумал, что можно через нормализованный вектор сделать.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Рандомная точка на окружности

Сообщение Cr0c 12 апр 2016, 19:44

Задавать векторы осей окружности/эллипса, всё равно везде Vector3 в координатах:
Синтаксис:
Используется csharp
Vector3 GetRoundPoint(Vector3 leftAxis, upAxis)
{
 float angle = Random.Range(0f, 2*3.1415926);
 return (leftAxis * Mathf.Cos(angle) + upAxis * Mathf.Sin(angle));
}
 
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Рандомная точка на окружности

Сообщение KBEP 13 апр 2016, 16:10

Раз пошла такая пьянка я тож свой костылёчек добавлю:
Синтаксис:
Используется csharp
Vector2 RandomCirclePoint (Vector2 center, float radius)
{
        //x*x + y*y = R*R - уравнение окружности
        float x = Random.Range(-radius, radius);
        float y = Mathf.Sqrt(radius*radius - x*x);
        if (Random.Range(0, 2) == 0) y = -y;//меняем знак с вероятностью 50 на 50 в зависимости от фазы Луны
        return new Vector2(center.x + x, center.y + y);
}
Аватара пользователя
KBEP
Старожил
 
Сообщения: 598
Зарегистрирован: 24 сен 2012, 23:23
Откуда: Калининград, СПб, Северодвинск

Re: Рандомная точка на окружности

Сообщение Asm888 13 апр 2016, 17:08

Woolf, спасибо большое!
Asm888
UNец
 
Сообщения: 5
Зарегистрирован: 12 апр 2016, 17:40


Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2