Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/104: Рейтинг темы: голосов - 104, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17

Рандомное создание объекта в определенном месте

29.02.2016, 21:29. Показов 19487. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем суть такова, пытаюсь создать объекты там где находиться платформа, но не знаю как сделать так чтоб они были разбросаны в разных местах в пределах этой платформы.
Пока только пришёл к этому
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using UnityEngine;
using System.Collections;
 
public class RespawnObject : MonoBehaviour {
 
    public GameObject Prefab;
    public Transform platform;
    //public float pos;
 
    void Update() 
    { 
        
        //float rand = Random.Range(-pos, pos);
 
        Instantiate(Prefab, platform.position,transform.rotation); 
 
    } 
}
Подскажите как можно реализовать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.02.2016, 21:29
Ответы с готовыми решениями:

Динамическое размещение объекта в определённом месте памяти с последующим её освобождением
Доброго времени суток. В C++ имеется возможность размещать объект по чётко определённому, указанному разработчиком, адресу в памяти. В...

Создание объекта в месте обьекта на панели
Создаю panel, она должна размещатся там где textBox3. Но так как textBox на panel берутся координаты от начала панели... Можно ли как...

мышь в определённом месте
Здравствуйте господа програмисты!!!Как поставить курсор мыши в определённое место? Заранее всем огромное спасибо!!!

13
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
29.02.2016, 21:50
Робингуд, как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public float minX, minZ; // край координат
public float maxX, maxZ; // край координат
public float minDist; // дистанция проверки на префабы вокруг
public GameObject[] prefabs; // список префабов
public Transform platform; // платформа
public string prefab_tag; // тег для префабов - ставить на все префабы
 
public void Placement()
{
 Colliders[] ccc;
 bool check;
 do {
  check = false; // проверка пройдена
  float x = Random.Range(minX, maxX) + platform.x; // позиция
  float z = Random.Range(minZ, maxZ) + platform.z; // позиция
  ccc = Physics.OverlapSphere(new Vector3(x, platform.y, z), minDist); // берем список коллайдеров, которые есть вокруг точки
  foreach( Collider col in ccc) // перебираем все найденные коллайдеры
   if (c.tag == prefab_tag) check = true; // если хоть один имеет тег префаба - проверка не пройдена
 }
 while (check); // выйдем только при false - когда вокруг не будет ни одного префаба
 Instantiate(prefabs[Random.Range(0, prefabs.Length)], new Vector3(x, platform.y, z), transform.rotation); // собственно, ставим сам префаб
}
2
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17
29.02.2016, 22:28  [ТС]
В общем я попробовал, и чёт не работает.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
29.02.2016, 22:38
Робингуд, очень информативно
0
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17
29.02.2016, 23:02  [ТС]
Извини, в общем они так же в одной точке появлялись.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.03.2016, 01:27
Робингуд, а minX minZ maxX maxZ заданы были? По умолчанию они равны нулю.
0
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17
01.03.2016, 08:22  [ТС]
Да, конечно задал, а могло повлиять то что в Instantiate у я за задал x,y т.к. они не могли там использоваться?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.03.2016, 10:10
Робингуд, не понял вопроса. minDist тоже задано было?

Добавлено через 1 час 6 минут
Префабы раскидываются на площади (platfotm.x+[minX, maxX], platfotm.y, platform.z+[minZ, maxZ]) - соответственно этому надо задавать размеры краев [-1, 1] или сколько там размер platform. Можно renderer.bounds использовать, но при повернутой platform префабы могут быть за краем. А функция ставит только один префаб, её для каждого объекта надо выззывать. Если не будет места для нового объекта - она просто зависнет )))
0
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17
01.03.2016, 11:46  [ТС]
X и Y объявлены в do и в Instatiate он их не видет, но крч я все там поправил, и в итоге они все равно появляются в одном месте.
И я забыл упомянуть я делаю в 2D.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.03.2016, 11:54
Робингуд, объявите x и y до do и смените местами y и z координаты, замените
C#
1
Physics.OverlapSphere(new Vector3(x, platform.y, z), minDist); // берем список коллайдеров, которые есть вокруг точки
на
C#
1
Physics2D.OverlapCircle
И Collider на Collider2D, делов-то. Но предупреждать надо!
0
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17
01.03.2016, 18:01  [ТС]
Насчёт коллайдеров, я их менял.
Ну попробую потом ещё раз.
И я объявлял их до do

Добавлено через 5 часов 59 минут
В общем юнити сразу же зависает, как только запускаю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using UnityEngine;
using System.Collections;
 
public class RespawnObject : MonoBehaviour {
    public Collider2D[] coll;
    public float minX, minZ; // край координат
    public float maxX, maxZ; // край координат
    public float minDist; // дистанция проверки на префабы вокруг
    public GameObject[] prefabs; // список префабов
    public Transform platform; // платформа
    public string prefab_tag; // тег для префабов - ставить на все префабы
 
    void Update()
    {
        Placement ();
    }
 
    public void Placement()
    {
        bool check;
        float x = Random.Range(minX, maxX) + platform.position.x; // позиция
        do {
            check = false; // проверка пройдена
 
            //float z = Random.Range(minZ, maxZ) + platform.; // позиция
            coll = Physics2D.OverlapCircleAll(new Vector2(x, platform.position.y), minDist); // берем список коллайдеров, которые есть вокруг точки
            foreach( Collider2D col in coll) // перебираем все найденные коллайдеры
                if (GetComponent<Collider2D>().tag == "platform") check = true; // если хоть один имеет тег префаба - проверка не пройдена
        }
        while (check); // выйдем только при false - когда вокруг не будет ни одного префаба
        Instantiate(prefabs[Random.Range(0, prefabs.Length)], new Vector3(x, platform.position.y), transform.rotation); // собственно, ставим сам префаб
    }
}
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.03.2016, 19:13
Робингуд, тяжко как... надо проверять тег префабов, а не платформы! Зачем я ввел поле для тега префабов? А Вы его не используете.
0
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 17
01.03.2016, 21:55  [ТС]
Этот тег стоит на префабе
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
02.03.2016, 01:04
Робингуд,
C#
1
if (GetComponent<Collider2D>().tag == "platform")
C#
1
if (col.tag == prefab_tag)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2016, 01:04
Помогаю со студенческими работами здесь

Клик в определенном месте
у меня есть статик ,и мне нужно ,когда нажимаю на него ,удерживать и перетаскивать пока не отпущу ,как мне определить ,что клик был именно...

Вывод подменю в определенном месте
Добрый вечер! Как сделать так, чтобы при наведении мышью на пункт меню, всплывало подменю этого пункта в определенном месте на странице,...

Фиксирование в определенном месте прокрутки
Здравствуйте! Столкнулся с такой проблемой. Как сделать, чтобы обьект прокручивался вместе со всем содержимым страницы только с...

Прокрутка текста в определенном месте
Здравствуте! Скажите пожалуйста, как создать html, css код для прокрутки теста в определенном месте?

Скрытие div`а в определенном месте
Приветствую! Имеется список статей &lt;div id=&quot;title&quot;&gt;Заголовок&lt;/div&gt; &lt;div id=&quot;description&quot;&gt;Краткое описание&lt;/div&gt; &lt;div...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru