Рандом
|
|
madsen | Дата: Воскресенье, 12 Октября 2014, 15:08 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Всем.. Вобщем без лирики, как ребят на c2 сделать генерацию объектов? Причем что-бы они спаунились не НА уровнe а за его пределами. Спасибо за помощь если таковая будет
ScirrA ConstrucT ------------------------- Unity 3D ------------------------- Crytek Engine 3 ------------------------- Unreal Development Kit
|
|
| |
Nick_Rimer | Дата: Воскресенье, 12 Октября 2014, 16:57 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| madsen, ну а спавнить в отрицательных координатах пробовал?
System -> Create object
Object to create - выбираешь объект, который надо спавнить Layer - номер слоя, на котором это будет происходить X - координата Х Y - координата Y
Если ты хочешь, чтобы объект спавнился за пределами экрана где-нибудь вверху и падал вниз, то ставь отрицательный Y. Для спрайта с точкой origin по середине поставь это расстояние чуть больше половины спрайта. Для спрайта 32х32 поставь спавн в координатах, например, (300, -20). Если надо снизу, то Y должен быть больше высоты твоего экрана. Если надо слева, то отрицательный Х. Если справа, то Х должен превышать твою ширину экрана.
Если тебе нужно рандомно генерить объекты за пределами экрана со всех четырёх сторон, можешь запилить, как вариант, такой рандом:
сначала ты проверяешь, чему равен floor(random(4)) Положим, что 0 - появление сверху, 1 - справа, 2 - снизу, 3 - слева. Теперь проверяем. 0: Х = floor(random(LayoutWidth+1)); Y = -(Sprite.Height/2 + 5). 1: X = LayoutWidth + Sprite.Width/2 + 5; Y = floor(random(LayoutHeight+1)). 2: X = floor(random(LayoutWidth+1)); Y = LayoutHeight + Sprite.Height/2 + 5. 3: X = -(Sprite.Width/2 + 5); Y = floor(random(LayoutHeight+1)) Вроде бы нигде не ошибся. Функция floor() нужна для правильного формирования пределов рандома в целочисленном формате.
Даже если у тебя стоит Destroy outside layout, то практика показывает, что объект не уничтожается сразу при создании за пределами экрана. Впоследствии же, когда он всё-таки снова попадёт за пределы экрана, он будет уничтожен.
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Воскресенье, 12 Октября 2014, 17:11 |
|
| |
madsen | Дата: Воскресенье, 12 Октября 2014, 18:01 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| не понял
ScirrA ConstrucT ------------------------- Unity 3D ------------------------- Crytek Engine 3 ------------------------- Unreal Development Kit
|
|
| |
Sanches | Дата: Воскресенье, 12 Октября 2014, 18:05 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Просто создавай объект во координатах, не попадающих на уровень. Либо меньше 0, либо больше ширины/высоты уровня.
|
|
| |
Nick_Rimer | Дата: Воскресенье, 12 Октября 2014, 18:26 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| madsen, а пытался ли вообще понять? Последнее китайское объяснение: СКАЧАТЬ (то же самое, что я объяснил, но в исходнике) Файл сделан на C2 r184 Срок хранения файла 30 дней
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Воскресенье, 12 Октября 2014, 18:26 |
|
| |
madsen | Дата: Воскресенье, 12 Октября 2014, 22:11 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Короче Объясните как сделать рандом от числа до числа? -_-
ScirrA ConstrucT ------------------------- Unity 3D ------------------------- Crytek Engine 3 ------------------------- Unreal Development Kit
|
|
| |
Nick_Rimer | Дата: Воскресенье, 12 Октября 2014, 23:12 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| madsen, я сто миллионов раз уже, кажется, писал на эту тему. Внимательно читай вот этот самый пост: ПОСТ Там выведенная мной формула даже выделена синим.
Теперь про особенности С2. Если СС создаёт случайные ЦЕЛЫЕ числа (1, 99, 40, 27...), то С2 работает хитрее. Он создаёт случайную ЦЕЛУЮ часть и добавляет к ней офигенной длины хвост ВЕЩЕСТВЕННОЙ части. Например, 25.34785691783568976... Однако гораздо чаще хочется получить всё-таки числа целые. Первый раз, когда я столкнулся с рандомом в С2, я не понимал, почему у меня не работает то, что всегда и везде работало.
Про это очень ВАЖНОЕ замечание я рекомендую почитать то, что я написал вот здесь: ПОСТ
Надеюсь, что после того, как ты всё это прочтёшь, ты-таки поймёшь, что такое рандом, и как его добиваться. С наилучшими пожеланиями!
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Понедельник, 13 Октября 2014, 08:22 |
|
| |