RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1   Вниз
  Печать  
Оптимизация столкновений
0 Пользователей и 1 Гость смотрят эту тему.
nazar79
Новичок


Репутация: 2
Offline Offline

Сообщений: 45

14 Февраля 2017 в 12:24
Делал игру по примеру и застрял на коллизиях.
Друзья, помогите с коллизиями.
Что нужно:
1) Зомби должны сталкиваться между собой. Сейчас они просто сбиваются в купу. Они должны быть твёрдыми что ли.
2) Так же с игроком. Он не должен проходить сквозь зомби.
3) По возможности, чтоб зомби не застревали в стенах.

Вот прикрепляю исходник.
 
Кто-тo
Ветеран форума
*****

Репутация: 81
Offline Offline

Сообщений: 1 084


Ответ № 1 14 Февраля 2017 в 13:47
Пример посмотреть не могу, но попробуй mp_linear_step(xgoal, ygoal, stepsize, checkall), только выстави checkall на true.

Если это не подходит, то тогда придётся руками использовать комбинацию следующих функций:
point_distance(xa, ya, xb, yb) - для определения дистанции между точками a и b.
point_direction(xa, ya, xb, yb) - для определения угла между точками a и b.
lengthdir_x(len, dir) и lengthdir_y(len, dir) - для определения точки на указанном угле и расстоянии от объекта.
place_empty(x, y) - для проверки на столкновение в полученной точке. Оно проверяет маски столкновений, а не столкновение с точкой.
place_meeting(x, y, obj) - если нужно чтобы (не) проходило через отдельные объекты, поскольку кое кто не догадался возвращать объект столкновения для последующего сравнения. Советую использовать один объект, а непроходимые объекты пусть будут наследниками этого объекта.

Одних этих функций должно хватить. Но я не уверен, поскольку в последний раз с Game Maker работал довольно давно.
Spartan121
Невыспавшийся
Завсегдатай
****

Репутация: 34
Offline Offline

Сообщений: 614


DragonGameStudios

Ответ № 2 16 Февраля 2017 в 22:38
В GMS есть при старте вкладка с туториалами, посмотри там пример TDS и управления для TDS, там используется фейковая масса для всех обьектов с отталкиванием и прочими штучками.

nazar79
Новичок


Репутация: 2
Offline Offline

Сообщений: 45

Ответ № 3 17 Февраля 2017 в 00:05
Пример посмотреть не могу, но попробуй mp_linear_step(xgoal, ygoal, stepsize, checkall), только выстави checkall на true.

Если это не подходит, то тогда придётся руками использовать комбинацию следующих функций:
point_distance(xa, ya, xb, yb) - для определения дистанции между точками a и b.
point_direction(xa, ya, xb, yb) - для определения угла между точками a и b.
lengthdir_x(len, dir) и lengthdir_y(len, dir) - для определения точки на указанном угле и расстоянии от объекта.
place_empty(x, y) - для проверки на столкновение в полученной точке. Оно проверяет маски столкновений, а не столкновение с точкой.
place_meeting(x, y, obj) - если нужно чтобы (не) проходило через отдельные объекты, поскольку кое кто не догадался возвращать объект столкновения для последующего сравнения. Советую использовать один объект, а непроходимые объекты пусть будут наследниками этого объекта.

Одних этих функций должно хватить. Но я не уверен, поскольку в последний раз с Game Maker работал довольно давно.
Спасибо, но сомневаюсь, что буду использовать данные функции.
Как по мне, то логичнее будет использовать mp_potential_step();
nazar79
Новичок


Репутация: 2
Offline Offline

Сообщений: 45

Ответ № 4 17 Февраля 2017 в 00:05
В GMS есть при старте вкладка с туториалами, посмотри там пример TDS и управления для TDS, там используется фейковая масса для всех обьектов с отталкиванием и прочими штучками.

Спасибо, посмотрю.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru