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

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Гонки на GM
Don_AlexeyДата: Среда, 02 Марта 2011, 20:22 | Сообщение # 41
заслуженный участник
Сейчас нет на сайте
ну вот тепере мне тоже всё понятно!

Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент.
Видео прохождение игр - Это мой сайт посвящённый прохождению игр.
Made_In_USSRДата: Среда, 02 Марта 2011, 20:27 | Сообщение # 42
заслуженный участник
Сейчас нет на сайте
На самом деле нужно просто немного поиграть в что-то похожее на то что ты делаешь. На эту мысль меня натолкнули раздумия на тему Most Wanted. Там же есть практически все что нужно автору темы. Просто нужно перенести это правильно в гм.

Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
Don_AlexeyДата: Среда, 02 Марта 2011, 20:37 | Сообщение # 43
заслуженный участник
Сейчас нет на сайте
Ну в общем ты прав!

Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент.
Видео прохождение игр - Это мой сайт посвящённый прохождению игр.


Сообщение отредактировал Don_Alexey - Среда, 02 Марта 2011, 20:40
Dva_KotaДата: Среда, 02 Марта 2011, 20:48 | Сообщение # 44
заслуженный участник
Сейчас нет на сайте
Made_In_USSR, тогда тебе нужно будет прописывать все точки куда нужно перемещать чекпоинт. Если делать несколько чекпоинтов то достаточно будет одной переменной вместо двух кодов, которые я писал выше. Думаю будет проще поставить несколько объектов, а еще проще прописать все чекпоинты через collision_line().

Делается это так (можно добавить и больше чекпоинтов):

Код в событии создания машины

Code
finish=0;

Код в шаге машины

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
StrategДата: Среда, 02 Марта 2011, 21:02 | Сообщение # 45
заслуженный участник
Сейчас нет на сайте
Чёт наверное с крутящейся картой сложности возникли! Не удобное так управление будет, теперь буду делать обычную!(((

DiamonD - мой сайт...
NeZnayuДата: Среда, 02 Марта 2011, 21:10 | Сообщение # 46
__танцуй!__
Сейчас нет на сайте
Dva_Kota, опять ты намудрил.
Quote (Dva_Kota)
тогда тебе нужно будет прописывать все точки куда нужно перемещать чекпоинт. Если делать несколько чекпоинтов то достаточно будет одной переменной вместо двух кодов, которые я писал выше. Думаю будет проще поставить несколько объектов, а еще проще прописать все чекпоинты через collision_line().

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

В создании считаем все чекпоинты, при столкновении машины с каждым прибавляем переменную и переносим чекпоинт далеко за карту. Если переменная = количеству - круг пройден, при пересечении финиша возвращаем все на место.


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Среда, 02 Марта 2011, 21:20
NeZnayuДата: Среда, 02 Марта 2011, 21:12 | Сообщение # 47
__танцуй!__
Сейчас нет на сайте
Упс, нечаянно, удалите это сообщение пожалуйста.

CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Среда, 02 Марта 2011, 21:21
Dva_KotaДата: Среда, 02 Марта 2011, 21:33 | Сообщение # 48
заслуженный участник
Сейчас нет на сайте
Теперь я понял как ты хочешь реализовать это. smile
Я сначала подумал что координаты всех чекпоинтов ты хочешь прописать в каком то объекте и так их расставлять.

В создании чекпоинта записываем его координаты в две переменные. При столкновении с машиной переносим чекпоинт за границу комнаты и увеличиваем переменную на 1. Есть еще одна переменная в которую при старте комнаты записывается количество чекпоинтов. Если столкнулись с последним чекпоинтом (первая переменная стала равна второй переменной) - круг пройден. возвращаем все чекпоинты в начальные координаты (мы их записали в событии создания для каждого чекпоинта). И, наверное, финишную линию нужно отдельным объектом сделать, который будет появляться когда все чекпоинты пройдены, а то если круг будет считаться пройденным когда прошел последний чекпоинт - чекпоинты встанут на свои места и опять произойдет столкновение.

Правильно я понял идею?


Новый пример инвентаря! /20.06.2012/

Energy Wars
Made_In_USSRДата: Среда, 02 Марта 2011, 21:45 | Сообщение # 49
заслуженный участник
Сейчас нет на сайте
Что это еще за извращения? И чего сложного вручную определить 5-10 координат на которых должен находиться чекпоинт (колижн_лайн разве не запросит в два раза больше координат?)? Все таки трассы будут не рандом генерированные.

Одного обьекта чекпоинта вполне достаточно. Если обьект находится в позиции чек1.х/чек1.у и есть столкновение с обьектом машина --> передвинуть чекпоинт в позицию чек2.х/чек2.у

Зачем писать витиеватый код со множеством условий, переменных и координат? Тем более что проверку на нахождение можно делать в событии столкновения обьекта чекпоинт, вообще не используя степ, и не нагружая приложение лишними вычислениями.

Добавлено (02.03.2011, 21:45)
---------------------------------------------

Quote (Strateg)
Чёт наверное с крутящейся картой сложности возникли! Не удобное так управление будет, теперь буду делать обычную!(((

Думай еще smile
Направление движения относительно центра ширины вида должны принести нужный результат.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
NeZnayuДата: Среда, 02 Марта 2011, 21:52 | Сообщение # 50
__танцуй!__
Сейчас нет на сайте
Dva_Kota, не совсем ) Все еще проще, смотри:

Есть два объекта для финишной линии:
ob_finish1
ob_finish2

Один объект чекпоинта:
ob_checkpoint
(во всех этих объектах нет вообще никаких действий)

При столкновении машины с ob_finish1:
if finish=0
{finish=1;
global.checkpoints=0;
with ob_checkpoint
{x=xstart;
y=ystart;}}

C ob_finish2:
if finish=1 && global.checkpoints=instance_number(ob_checkpoints)
{finish=0;
//добавляем круги
global.laps+=1;
global.checkpoints=0;
with ob_checkpoint
{x=xstart;
y=ystart;}}

Столкновение машины с чекпоинтом:
global.checkpoints+=1;//добавляем чекпоинт
//переносим за карту
with other
{x=-1000;
y=-1000;}

Все!


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Среда, 02 Марта 2011, 23:14
NeZnayuДата: Среда, 02 Марта 2011, 22:04 | Сообщение # 51
__танцуй!__
Сейчас нет на сайте
Я обновил предыдущее сообщение, сначала немного накосячил, получилось еще короче.

CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
Dva_KotaДата: Среда, 02 Марта 2011, 22:08 | Сообщение # 52
заслуженный участник
Сейчас нет на сайте
А при старте комнаты не нужно задавать переменную global.checkpoints=0? а то ты при столкновении ее на 1 увеличиваешь, а она у тебя не задана...
И зачем тут вообще нужен объект ob_finish1 ?

Я совсем забыл про переменные xstart и ystart. Спасибо что напомнил. smile


Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Среда, 02 Марта 2011, 22:10
Made_In_USSRДата: Среда, 02 Марта 2011, 22:12 | Сообщение # 53
заслуженный участник
Сейчас нет на сайте
Фу, теперь хоть понятно что к чему. А то пытался разобрать предыдущий вариант и не получилось. Была там какая то явная неувязка smile

Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
NeZnayuДата: Среда, 02 Марта 2011, 22:18 | Сообщение # 54
__танцуй!__
Сейчас нет на сайте
Quote (Dva_Kota)
А при старте комнаты не нужно задавать переменную global.checkpoints=0;

Да, нужно.
Quote (Dva_Kota)
И зачем тут вообще нужен объект ob_finish1 ?

Чтобы круг засчитывался только в одну сторону:



CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
Dva_KotaДата: Среда, 02 Марта 2011, 22:26 | Сообщение # 55
заслуженный участник
Сейчас нет на сайте
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
NeZnayuДата: Среда, 02 Марта 2011, 22:29 | Сообщение # 56
__танцуй!__
Сейчас нет на сайте
На картинке финиш будет засчитан только когда машина соберет все чекпоинты и переедет финишную линию слева-направо.

CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
Made_In_USSRДата: Среда, 02 Марта 2011, 22:31 | Сообщение # 57
заслуженный участник
Сейчас нет на сайте
Вот именно. Но если использовать только один образец обьекта чекпоинт... rolleyes
Тем более что в "не правильном" направлении трассу вполне возможно пройти будет проще чем в правильном... В общем потратить несколько секунд на отъезд до объекта финиш1 будет целесообразнее если сэкономленное время на неправильную езду окупится. Хотя такой вариант наверное уже для совсем извращенцев smile


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)


Сообщение отредактировал Made_In_USSR - Среда, 02 Марта 2011, 22:38
Dva_KotaДата: Среда, 02 Марта 2011, 22:32 | Сообщение # 58
заслуженный участник
Сейчас нет на сайте
тут не обязательно слева на право. Тут нужно чтобы сначала был пересечен объект ob_finish1, а потом ob_finish2. для этого не обязательно двигаться слева на право, можно и наоборот (я выше опимсал что произойдет при таком движении). Круг все равно нужно будет пройти, значит чекпоинты будут тоже все пройдены.

Новый пример инвентаря! /20.06.2012/

Energy Wars
NeZnayuДата: Среда, 02 Марта 2011, 22:37 | Сообщение # 59
__танцуй!__
Сейчас нет на сайте
Made_In_USSR, Dva_Kota,
Так а как должно быть? Вернее, что, по вашему, тут не правильно?


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
Made_In_USSRДата: Среда, 02 Марта 2011, 22:41 | Сообщение # 60
заслуженный участник
Сейчас нет на сайте
Quote (NeZnayu)
Так а как должно быть? Вернее, что, по вашему, тут не правильно?

Немного подправил пост чтобы обьяснить что я имел ввиду. А так в принципе все правильно. Я бы даже сказал блестяще, с учетом того что я бы до этого додумался нескоро, если бы вообще додумался smile

Добавлено (02.03.2011, 22:41)
---------------------------------------------
А еще можно создавать обьект финиш1 только после того как собраны все чекпоинты, тогда проблем не будет.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
Поиск:

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