миха | Дата: Суббота, 11 Января 2014, 10:35 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Представим объект, летящий по направлению 270 со скоростью 10. Необходимо сделать так, чтобы когда он врезался в obj_16_wall, скорость уходила в ноль, но тут возникает проблема. При использовании стандартного события collision, объект теряет скорость либо не долетая несколько пикселей до obj_16_wall, либо уже влетев внутрь него на те-же несколько пикселей. Я уйму всего перепробовал, в итоге получился отвратительно гигантский код, который хоть по идее и должен помогать, по сути не помогает. Все остается так-же. Прошу помочь в общем... хотелось бы, чтобы все было "пиксель в пиксель". Чтобы было понятнее, этот код я написал в Step. Размер спрайта "объекта" 32х32, "центр" спрайта в центре Цитата if collision_point(x,y+26,obj_16_wall,0,0) or collision_point(x+16,y+26,obj_16_wall,0,0) or collision_point(x-16,y+26,obj_16_wall,0,0) { if collision_point(x,y+16,obj_16_wall,0,0) || collision_point(x+15,y+16,obj_16_wall,0,0) || collision_point(x-15,y+16,obj_16_wall,0,0) { speed=0 } else for(i=0;i>10;i+=1) { if collision_point(x,y+16+i,obj_16_wall,0,0) || collision_point(x+15,y+16+i,obj_16_wall,0,0) || collision_point(x-15,y+16+i,obj_16_wall,0,0) { y+=i speed=0 }} }
|
|
| |
Quad69 | Дата: Суббота, 11 Января 2014, 13:11 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| В столкновении с стеной такое: Код if !place_free(x+speed,y+speed) //Если в позицию которую он пападёт что-то есть { move_contact_solid(direction,speed) speed=0
} Примерно
|
|
| |
миха | Дата: Суббота, 11 Января 2014, 19:47 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| я так раньше делал. Мне не нравится то, что при использовании данной функции перед приземлением объект замедляется.
|
|
| |
Quad69 | Дата: Воскресенье, 12 Января 2014, 00:50 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| Цитата миха ( ) перед приземлением объект замедляется Если использовуешь функцию gravity, то вот такой код: Код if !place_free(x+speed,y+speed) //Если в позицию которую он пападёт что-то есть { move_contact_solid(direction,speed) gravity=0 } Но я точно не знаю как это делать. Нужен исходник
|
|
| |