Суббота, 21 Декабря 2024, 00:57

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (Game Maker)
LordZickДата: Суббота, 22 Января 2011, 20:27 | Сообщение # 661
участник
Сейчас нет на сайте
Спасибо! Я уменьшил и всё!


TheApKoTДата: Суббота, 22 Января 2011, 20:58 | Сообщение # 662
GML ProgrammeR
Сейчас нет на сайте
LordZick, удачи в игрострое! Рад помочь). thumb

Посоветуйте, где скачать VB6 :C
TheApKoTДата: Суббота, 22 Января 2011, 21:24 | Сообщение # 663
GML ProgrammeR
Сейчас нет на сайте
Теперь мой вопрос: как сделать проверку, свободно ли расстояние над объектом? Не над центром, а именно над объектом?

Посоветуйте, где скачать VB6 :C
Dva_KotaДата: Понедельник, 24 Января 2011, 10:25 | Сообщение # 664
заслуженный участник
Сейчас нет на сайте
Не совсем понятно что значит "расстояние над объектом"...
Наверное тебе нужно это:
Quote
place_empty(x,y) Возвращает истину, если с экземпляром объекта, помещённым в точку с координатами (x,y) не происходит вообще никаких столкновений.


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

Energy Wars
GameMixДата: Понедельник, 24 Января 2011, 10:43 | Сообщение # 665
старожил
Сейчас нет на сайте
Dva_Kota, наверное, Apelsinoviy_kot "расстояние над объектом" имел ввиду, чтобы проверялось не только столкновение с центром спрайта объекта, но и с любой частью его маски.

Steel Standoff - 2D аркада.
Мои статьи
TheApKoTДата: Понедельник, 24 Января 2011, 11:01 | Сообщение # 666
GML ProgrammeR
Сейчас нет на сайте
аТнОтХоАн, нет. Ну, допустим, есть квадратик, 32х32. Расположенный в 50х50. И нужно проверить, есть ли над ним объект, пускай даже край того объекта находится в Хх60. Надеюсь, понятно? wink

Посоветуйте, где скачать VB6 :C
GameMixДата: Понедельник, 24 Января 2011, 12:41 | Сообщение # 667
старожил
Сейчас нет на сайте
place_meeting не пойдет?

Steel Standoff - 2D аркада.
Мои статьи
TheApKoTДата: Понедельник, 24 Января 2011, 13:00 | Сообщение # 668
GML ProgrammeR
Сейчас нет на сайте
аТнОтХоАн, не, оно проверяет на определенный объект.

Посоветуйте, где скачать VB6 :C


Сообщение отредактировал Apelsinoviy_kot - Понедельник, 24 Января 2011, 13:01
Dva_KotaДата: Понедельник, 24 Января 2011, 13:08 | Сообщение # 669
заслуженный участник
Сейчас нет на сайте
Все равно ничего не понятно... Тебе нужно проверить столкновение, но только если второй объект имеет меньшую глубину? Или глубина здесь не при чем?

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

Energy Wars
TheApKoTДата: Понедельник, 24 Января 2011, 13:11 | Сообщение # 670
GML ProgrammeR
Сейчас нет на сайте
Короче говоря... Допустим, из центра первого объекта вверх идет линия. И если второй объект линию пересечет, то она должна остановиться на втором. Если по другому, то нужна проверка столкновения с линией.

Посоветуйте, где скачать VB6 :C
Lord_FДата: Понедельник, 24 Января 2011, 13:21 | Сообщение # 671
Любопытный Игродел
Сейчас нет на сайте
ну тогда collision_line тебе в помощь! Блин, как я не догадался сам про линию((

Добавлено (24.01.2011, 13:21)
---------------------------------------------
Помоему пишется collision_line(x1,y1,x2,y2)


[quote]Ничто не истина, всё дозволено[/quote]
TheApKoTДата: Понедельник, 24 Января 2011, 13:25 | Сообщение # 672
GML ProgrammeR
Сейчас нет на сайте
Lord_F, и что это такое? Я просто раньше с линиями не сталкивался.

Посоветуйте, где скачать VB6 :C
GameMixДата: Понедельник, 24 Января 2011, 13:32 | Сообщение # 673
старожил
Сейчас нет на сайте
У меня collision_line(x1,y1,x2,y2) глючит - при столкновении гг с линией даже на маленькой скорости, проверка происходит с запозданием <_<. То есть, гг успевает проскочить ее на 10 пикселей.

Steel Standoff - 2D аркада.
Мои статьи
Dva_KotaДата: Понедельник, 24 Января 2011, 13:58 | Сообщение # 674
заслуженный участник
Сейчас нет на сайте
аТнОтХоАн, нужно проверять в end step

p.s.: я, почему-то подумал что это TDS, из-за этого не сразу понял что значит "над объектом".

Добавлено (24.01.2011, 13:55)
---------------------------------------------
А вообще можно сделать так: Проверять столкновение через place_meeting(x,y,obj) вот таким образом в шаге врага (проверять есть ли под ним игрок):

Code
if (place_meeting(x,obj_игрок.y,obj_игрок))
{
//что делать если под врагом игрок?
}

Добавлено (24.01.2011, 13:58)
---------------------------------------------
но здесь условие будет выполняться и если второй объект находится под первым. Если это имеет значение, добавь еще одну проверку: сравнивай игрики:

Code
if (y-obj_игрок.y)<0


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

Energy Wars


Сообщение отредактировал Dva_Kota - Понедельник, 24 Января 2011, 13:56
Lord_FДата: Понедельник, 24 Января 2011, 15:10 | Сообщение # 675
Любопытный Игродел
Сейчас нет на сайте
Quote (Apelsinoviy_kot)
Lord_F, и что это такое? Я просто раньше с линиями не сталкивался.

collision_line - это проверка на столкновение какого-то объекта с отрезком, концы которого находятся в указанных точках. Больше инфы - F1.


[quote]Ничто не истина, всё дозволено[/quote]
TheApKoTДата: Понедельник, 24 Января 2011, 20:41 | Сообщение # 676
GML ProgrammeR
Сейчас нет на сайте
Lord_F, а подробнее? Как применять?

Посоветуйте, где скачать VB6 :C
Dva_KotaДата: Вторник, 25 Января 2011, 09:11 | Сообщение # 677
заслуженный участник
Сейчас нет на сайте
Функция выглядит так:
collision_line(x1,y1,x2,y2,obj,prec,notme)

Тебе нужно

Code
collision_line(x,y,x,0,obj_который_должен_быть_над_данным_объектом,true,true)

Но, я думаю, это не та функция, которая тебе нужна - здесь проверка выполнится только в том случае, если второй объект будет над центром первого (хотя бы часть объекта будет над центром первого). Т.е. если небольшая часть второго объекта, будет над "краем" первого - будет считаться что он еще не над ним.
Хотя можно и с помощью этой функции сделать проверку, но нужно проверять два раза - одна линия слева от объекта, другая - справа. Но если второй объект значительно меньше первого этот способ не подойдет - второй объект при движении может "проскочить" линию и функция не сработает.

делать нужно так (если центр спрайта первого объекта находится в центре):

Code
collision_line(x-ширина_оъекта/2,y,x-ширина_оъекта/2,0,obj_который_должен_быть_над_данным_объектом,true,true)
collision_line(x+ширина_оъекта/2,y,x+ширина_оъекта/2,0,obj_который_должен_быть_над_данным_объектом,true,true)


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

Energy Wars
TheApKoTДата: Вторник, 25 Января 2011, 11:50 | Сообщение # 678
GML ProgrammeR
Сейчас нет на сайте
Quote (Dva_Kota)
collision_line(x,y,x,0,obj_который_должен_быть_над_данным_объектом,true,true)

А дальше что? Работает как if?


Посоветуйте, где скачать VB6 :C
Lord_FДата: Вторник, 25 Января 2011, 12:30 | Сообщение # 679
Любопытный Игродел
Сейчас нет на сайте
Quote (Apelsinoviy_kot)

А дальше что? Работает как if?

да.

Quote (Dva_Kota)
делать нужно так (если центр спрайта первого объекта находится в центре):
collision_line(x-ширина_оъекта/2,y,x-ширина_оъекта/2,0,obj_который_должен_быть_над_данным_объектом,true,true)
collision_line(x+ширина_оъекта/2,y,x+ширина_оъекта/2,0,obj_который_должен_быть_над_данным_объектом,true,true)

Тогда уж лучше collision_rectangle()


[quote]Ничто не истина, всё дозволено[/quote]
Dva_KotaДата: Вторник, 25 Января 2011, 12:56 | Сообщение # 680
заслуженный участник
Сейчас нет на сайте
Да, лучше. Но лучше, я думаю, то что я предлагал выше - через place_meeting(x,obj_игрок.y,obj_игрок). Хотя не знаю что будет быстрее работать.

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

Energy Wars
Поиск:

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