| 
				
				Пожалуйста, помогите со столкновениями в GMS
				 |   |  
| Xen | Дата: Понедельник, 27 Июня 2016, 12:47 | Сообщение # 1 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Ребят, помогите написать код для столкновения прямоугольного объекта с миром на основе ds_grid. Ранее я использовал такой код:
 
 Цитата //Controls & Collisions if keyboard_check(ord('A')) and canl {  x-=3.3;  image_index+=.2 } if keyboard_check(ord('D')) and canr {  x+=3.3;  image_index+=.2 } if(keyboard_check(vk_space) && land==true) {  vspeed=-12; } if(keyboard_check_released(ord('A')) or keyboard_check_released(ord('D'))) {  image_index=0; }
  if keyboard_check(ord('A')) turn=-1 if keyboard_check(ord('D')) turn=1
  //collisions if (check_block(x-8,y+1) || check_block(x+8,y+1))  {  land = 1  gravity = 0  vspeed = 0  y=floor(y/32)*32  } else  {  land = 0  gravity = .5  } if (check_block(x-8,y-64) || check_block(x+8,y-64))  {  vspeed = 0  y=ceil(y/32)*32  }
  if (ds_grid_get_max(obj_world.layer1,(x-8) div 32,(y-48) div 32,(x-8) div 32,(y) div 32))  {  canl=false  x+=3.3  } else canl=true if (ds_grid_get_max(obj_world.layer1,(x+8) div 32,(y-48) div 32,(x+8) div 32,(y) div 32))  {  canr=false  x-=3.3  } else canr=true 
  check_block прост:
 Цитата return ds_grid_get(obj_world.layer1, argument0 div 32, argument1 div 32) 
  Было бы здорово, если бы кто-то предложил менее багованное решение. Заранее благодарю.
  Давайте дружить! Не будете дружить? А вы знаете, что у меня есть? Смотрите, смотрите, граната! Теперь будете?
 |  
| 
 | 
 |    |  
| TLT | Дата: Понедельник, 27 Июня 2016, 14:04 | Сообщение # 2 |  
 
 
Сейчас нет на сайте 
 
 | Что не нравится в этом варианте так и не сказал. В чём проблема?
  Дао, выраженное словами, не есть истинное Дао.
 |  
| 
 | 
 |    |  
| Xen | Дата: Понедельник, 27 Июня 2016, 15:12 | Сообщение # 3 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Цитата TLT (  )  Что не нравится в этом варианте так и не сказал. В чём проблема?  Прости-прости :D
  Итак, перечень багов: 1.При большой скорости падения персонаж пролетает через блок и застревает в земле. 2.Если у стены зажать клавишу "по направлению к стене", персонаж останется висеть у стены. 3.Если потолок спускается лесенкой вниз, при зажатой клавише персонаж может двигаться по этой лесенке, свисая с потолка и не падая.
  А также много других, из чего я сделал вывод: нужно кардинально другое решение.
  Давайте дружить! Не будете дружить? А вы знаете, что у меня есть? Смотрите, смотрите, граната! Теперь будете?
 
 Сообщение отредактировал Xen - Понедельник, 27 Июня 2016, 15:13  |  
| 
 | 
 |    |  
| Tymonr | Дата: Понедельник, 27 Июня 2016, 16:09 | Сообщение # 4 |  
 
With OpenSource forever♥ 
Сейчас нет на сайте 
 
 | Xen, используй физическое тело и приложение силы, а не велосипеды
  Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.   Как правильно задавать вопросы в технических форумах
 |  
| 
 | 
 |    |  
| Xen | Дата: Понедельник, 27 Июня 2016, 18:34 | Сообщение # 5 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Цитата Tymonr (  )   используй физическое тело и приложение силы, а не велосипеды   Данный вариант уже рассматривался, он не годится.
  Ребят, в данном случае я знаю, о чём говорю. Пожалуйста, не подвергайте сомнениям мои слова, а помогите с решением проблемы. Заранее спасибо.
  Давайте дружить! Не будете дружить? А вы знаете, что у меня есть? Смотрите, смотрите, граната! Теперь будете?
 
 Сообщение отредактировал Xen - Понедельник, 27 Июня 2016, 21:19  |  
| 
 | 
 |    |  
| Minskii | Дата: Вторник, 28 Июня 2016, 17:55 | Сообщение # 6 |  
 
участник 
Сейчас нет на сайте 
 
 | Код if place_metting(x+speed,y,o_block) { speed=0 } if place_metting(x-speed,y,o_block) { speed=0 } if place_metting(x,y+speed,o_block) { speed=0 } if place_metting(x,y-speed,o_block) { speed=0 }  Вот тебе и коллизии  
  Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров.   Java/Kotlin, C#, C++.   Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
 |  
| 
 | 
 |    |  
| Xen | Дата: Четверг, 30 Июня 2016, 08:17 | Сообщение # 7 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Увы, не годится. Я чётко дал понять - ds_grid, а не объекты.
  Добавлено (30 июня 2016, 08:17) --------------------------------------------- Ладно, похоже, нормальной помощи от вас не дождёшься. Быстрее будет самому придумать. Вопрос снят.
  Давайте дружить! Не будете дружить? А вы знаете, что у меня есть? Смотрите, смотрите, граната! Теперь будете?
 
 Сообщение отредактировал Xen - Четверг, 30 Июня 2016, 08:18  |  
| 
 | 
 |    |     
		
		 
 |