Результаты поиска
| |
Dva_Kota | Дата: Четверг, 03 Марта 2011, 13:18 | Сообщение # 201 | Тема: Художник пытается освоить GML |
заслуженный участник
Сейчас нет на сайте
| В справке написано про prec и notme в первом абзаце на той же странице где и collision_point(), перед функциями.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 23:04 | Сообщение # 202 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Мы просто друг друга не правильно поняли. Made_In_USSR, Чекпоинты тут для того, чтобы нельзя было сильно срезать трассу (если пр краям трассы нет "заборчика"), их нужно расставлять, в основном, на поворотах. Есл у тебя трасса окружена забором, то вообще будет достаточно двух объектов ob_finish1 и ob_finish2 - один поставить на финише, другой на середине трассы. NeZnayu, а мы с тобой друг друга не поняли вот в чем: я говорил про то как сделать чтобы вообще ни при каких условиях нельзя было проходить трассу в обратном направляении, а ты говоришь про то, как сделать чтобы это просто было не выгодно и в этом небыло смысла (придется проходить один лишний круг чтобы начали засчитываться круги в обратном направлении). У меня вопросов больше нет (по крайней мере пока что).
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 22:42 | Сообщение # 203 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Мне кажется что объект ob_finish1 и переменная finish здесь лишние, т.к. они никак не влияют на направление прохождения кругов. Если нужно только в одну сторону чтобы засчитывались круги, то либо тот громоздкий код писать который я в начале предлогал (он мне не нравится), или при пересечении чекпоинтов присваивать переменной новое значения, проверяя предыдущее, как я предлагал выше, в посте №44 (но этот вариант тоже не очень удобный т.к. нужно для каждого экземпляра прописывать). Получается что твой вариант самый простой и удобный в использовании.
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Среда, 02 Марта 2011, 22:43 |
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 22:32 | Сообщение # 204 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| тут не обязательно слева на право. Тут нужно чтобы сначала был пересечен объект ob_finish1, а потом ob_finish2. для этого не обязательно двигаться слева на право, можно и наоборот (я выше опимсал что произойдет при таком движении). Круг все равно нужно будет пройти, значит чекпоинты будут тоже все пройдены.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 22:26 | Сообщение # 205 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Quote (Made_In_USSR) Чтобы круг засчитывался только в одну сторону: Это не поможет. Вот смотри: (в начале, как я понимаю, finish=0) мы едем не вперед, а назад, пересекаем ob_finish2 - ничего не происходит, пересекаем ob_finish1 -> finish=1; потом проезжаем круг, пересекаем obj_finish2 и нам засчитывается круг. По этому я в начале и писал тот сложный код с двумя переменными. А так как тут все равно чекпоинты - все равно придется целый круг проходить чтобы он засчитался. Правда в любую сторону. Или я опять что-то не так понял?
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Среда, 02 Марта 2011, 22:27 |
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 22:08 | Сообщение # 206 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| А при старте комнаты не нужно задавать переменную global.checkpoints=0? а то ты при столкновении ее на 1 увеличиваешь, а она у тебя не задана... И зачем тут вообще нужен объект ob_finish1 ? Я совсем забыл про переменные xstart и ystart. Спасибо что напомнил.
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Среда, 02 Марта 2011, 22:10 |
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 21:33 | Сообщение # 207 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Теперь я понял как ты хочешь реализовать это. Я сначала подумал что координаты всех чекпоинтов ты хочешь прописать в каком то объекте и так их расставлять. В создании чекпоинта записываем его координаты в две переменные. При столкновении с машиной переносим чекпоинт за границу комнаты и увеличиваем переменную на 1. Есть еще одна переменная в которую при старте комнаты записывается количество чекпоинтов. Если столкнулись с последним чекпоинтом (первая переменная стала равна второй переменной) - круг пройден. возвращаем все чекпоинты в начальные координаты (мы их записали в событии создания для каждого чекпоинта). И, наверное, финишную линию нужно отдельным объектом сделать, который будет появляться когда все чекпоинты пройдены, а то если круг будет считаться пройденным когда прошел последний чекпоинт - чекпоинты встанут на свои места и опять произойдет столкновение. Правильно я понял идею?
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 20:48 | Сообщение # 208 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Made_In_USSR, тогда тебе нужно будет прописывать все точки куда нужно перемещать чекпоинт. Если делать несколько чекпоинтов то достаточно будет одной переменной вместо двух кодов, которые я писал выше. Думаю будет проще поставить несколько объектов, а еще проще прописать все чекпоинты через collision_line(). Делается это так (можно добавить и больше чекпоинтов): Код в событии создания машины Код в шаге машины Code if (finish=0) { if (collision_line(x1_1,y1_1,x2_1,y2_1,igrok,0,0)) { finish=1; } } else { if (finish=1) { if (collision_line(x1_2,y1_2,x2_2,y2_2,igrok,0,0)) { finish=2; } } else { if (finish=2) { if (collision_line(x1_3,y1_3,x2_3,y2_3,igrok,0,0)) { finish=0; } } } } Здесь нужно написать координаты трех прямых, которые являются чекпоинтами (последняя - финишная линия)
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Среда, 02 Марта 2011, 20:49 |
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 17:29 | Сообщение # 209 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| чекпоинты - те же самые "финишные линии". Только они по всей трассе стоят (на каком-то расстоянии друг от друга). Ты что, в гонки не играл никогда ? Делаешь переменную, ставишь ей значение 0. Допустим у тебя 3 чекпоинта, один из которых является финишной линией (который под номером 3). При пересечении первого чекпоинта проверяешь равна ли переменная 0. Если равна - ставишь ей значение 1. У второго проверяешь равна ли переменная 1. Если равна 1 то присваиваешь ей значение 2. у третьего чекпоинта проверяешь равна ли переменная 2. Если равна 2 то увеличиваешь количество кругов на 1 и присваиваешь переменной значение 0.Добавлено (02.03.2011, 17:29) --------------------------------------------- Получается что ты должен будешь обязательно для завершения круга пройти через все чекпоинты в определенной последовательности.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 15:51 | Сообщение # 210 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Или чекпоинты или код который я предложил или еще что-нибудь. Ставить кучу чекпоинтов тоже не всегда рационально, но если в игре можно съезжать с трассы то, думаю, без них не обойтись.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 02 Марта 2011, 13:17 | Сообщение # 211 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Нет, это не вариант: то же самое о чем говорили выше - можно будет ездить туда-сюда и будут постоянно засчитываться круги. Хотя можно поставить один объект там где финиш, а второй ровно на середине круга
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Вторник, 01 Марта 2011, 22:43 | Сообщение # 212 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Quote (Made_In_USSR) Или я где то не доучился и переменная с булевым значением автоматически воспринимает "не" как противоположное булевое значение? Quote (из справки) !: отрицание, преображает истину в ложь и наоборот (0 в 1, 1 в 0) Да, "!" меняет true на false и наоборот. присвоение вида a=!a часто используется. меняет значение булевой переменной на противоположное. Quote (Made_In_USSR) И еще интересно где же можно еще кроме шага делать проверку через колижн_лайн Я не много не правильно выразился. Выполнять код нужно в шаге, но не просто так. а предварительно проверяя, столкновение только что произошло (в этом шаге) или происходит уже не первый шаг подряд. Для этого можно ввести еще одну переменную, в начале присвоить ей значение false (Столкновения нет). Например будет это переменная col=false. В шаге проверяем столкновение если оно произошло - проверяем переменную, если она равна false выполняем наш код и меняем переменную на true. А когда столкновение перестанет происходить - меняем переменную обратно на false. Таким образом код будет выполняться только в момент столкновения, а не каждый шаг. Думаю кодом будет понятнее чем словами: Code if (collision_line(x1,y1,x2,y2,igrok,0,0)) { if (!col) { if (f2=true) { f2=false; круг+=1; } else { f1=!f1; } } col=true; } else { col=false; }
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Вторник, 01 Марта 2011, 21:35 | Сообщение # 213 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Quote (Strateg) В случае с двумя линиями ничто не мешает отъехать назад и пересечь обе линии еще раз. Придется поломать голову дольше 10-ти минут smile Посмотри внимательно код, который я предлагаю для двух линий. Тут не получится просто отъехать назад: Круг засчитывается только если f2=true при пересечении финишной линии. Это условие станет истиной только когда при пересечении линии перед финишем переменная f1=false. В начале f1=false, но если ты пересечешь финишную линию когда f2=false эта переменная поменяет свое значение на противоположное и круги не будут засчитываться ( f2=false при пересечении финишной линии возможно только когда ты поедешь в обратном направлении, когда опять поедешь правильно и пересечешь линию финиша - опять переменная примет свое значение) Хотя если эти коды выполнять в шаге то работать будет не правильно... Нужно перед каждым кодом поставить проверку, чтобы он выполнялся один раз в момент столкновения с линиями, а не каждый шаг когда есть столкновение.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Понедельник, 28 Февраля 2011, 16:15 | Сообщение # 214 | Тема: Гонки на GM |
заслуженный участник
Сейчас нет на сайте
| Думаю одной линии будет не достаточно. Если только одна будет, то можно ездить по ней туда-сюда и будут засчитываться круги. Думаю тут нужно или делать чекпоинты по всей трассе, или делать две линии: одна финиш, другая перед финишем. Создаем переменную, две переменные, например f1 и f2. При пересечении линии которая перед финишем код: Code if (f1=false) { f2=true; } при пересечении линии финиша такой код: Code if (f2=true) { f2=false; круг+=1; } else { f1=!f1; } Это всё коды в объекте "машина". Если не понятно с collision_line() можешь просто объекты там поставить, вместо линий. Только ставь их не совсем рядом, а на таком расстоянии, чтобы между ними машина помещалась. По поводу вращающейся карты: я думаю оба варианта хорошие. p.s.: этот код я не проверял, но думаю что будет работать как нужно.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Воскресенье, 27 Февраля 2011, 22:54 | Сообщение # 215 | Тема: Пак вопросов. |
заслуженный участник
Сейчас нет на сайте
| 2. перед выводом окна сообщения создай рядом объект с этим спрайтом или нарисуй его в драв у какого-то объекта.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Пятница, 25 Февраля 2011, 17:36 | Сообщение # 216 | Тема: Художник пытается освоить GML |
заслуженный участник
Сейчас нет на сайте
| Ну, например, по маске столкновений проверяется нажатие кнопок мышки "на объекте". Если маска будет прямоугольник, а спрайт - круг, то событие будет происходить пр нажатии в любой точке этого прямоугольника, т.е. не только на самом круге, а при точной проверке произойдет только при нажатии на самом круге, т.к. маска будет такой же формы.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Пятница, 25 Февраля 2011, 10:46 | Сообщение # 217 | Тема: Рандомное движение |
заслуженный участник
Сейчас нет на сайте
| Если именно код нужен, посмотри эту статью про частицы, очень полезная: http://gmakers.ru/index.php?topic=284.0
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 23 Февраля 2011, 15:12 | Сообщение # 218 | Тема: Energy Wars |
заслуженный участник
Сейчас нет на сайте
| ок, сделаю вариант с большей скоростью для всех: и для игрока и для врагов. На сколько скорость увеличить?
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 23 Февраля 2011, 14:18 | Сообщение # 219 | Тема: Energy Wars |
заслуженный участник
Сейчас нет на сайте
| Quote (Apelsinoviy_kot) Сложновато. Добавить бы адреналина... А можно подробнее?
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Dva_Kota | Дата: Среда, 23 Февраля 2011, 12:06 | Сообщение # 220 | Тема: Energy Wars |
заслуженный участник
Сейчас нет на сайте
| V1talik30, а в полноэкранном режиме тоже обрезается? Apelsinoviy_kot, Ты прямо из архива запускал, не распаковывая? Если да, то это из-за внешних ресурсов.Добавлено (23.02.2011, 12:06) --------------------------------------------- Еще интересует такой вопрос: не слишком ли игра сложная? И кто что посоветует изменить/убрать/добавить?
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
|