Проблема с управлением
|
|
миха | Дата: Вторник, 01 Ноября 2011, 17:12 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Quote if keyboard_check(ord("W")) and shift=0 and collision_point(x,y-10,obj_block,1,1)<1 {y-=4}
if keyboard_check(ord("S")) and shift=0 and collision_point(x,y+10,obj_block,1,1)<1 {y+=4}
if keyboard_check(ord("A")) and shift=0 and collision_point(x-10,y,obj_block,1,1)<1 {x-=4}
if keyboard_check(ord("D")) and shift=0 and collision_point(x+10,y,obj_block,1,1)<1 {x+=4}
Очень странно. У меня никогда не возникало проблем, связанных с управлением персонажа в TDS. А сейчас я вынужден изменить управление, и изменя его получил такую фигню: игрок слишком поздно останавливается перед obj_block, входит внутрь блока до самого центра спрайта.
|
|
| |
LunarPixel | Дата: Вторник, 01 Ноября 2011, 17:16 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| У тебя везде коллизия проверяется со сдвигом на 10, а ты учел размер спрайта?! т.е. если у тебя точка отсчета спрайта в позиции 0:0, а спрайт размером 32 на 32, то вправо и вниз смещение на 10 даст точку в позиции 22, которая находится на самом спрайте игрока, а не за его приделами.
|
|
| |
миха | Дата: Вторник, 01 Ноября 2011, 17:42 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, поставил 20. То же самое, разве что игрок, приближаясь к препятствию немного снижает скорость.
|
|
| |
LunarPixel | Дата: Вторник, 01 Ноября 2011, 17:44 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| миха, размер спрайта героя у тебя какой?
|
|
| |
миха | Дата: Вторник, 01 Ноября 2011, 18:03 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, все с этим разобрался, там проблема была в другом. Ответь пожалуйста на другой вопрос: У меня есть пуля, и есть танк. Эта пуля должна удаляться только при столкновении с тем танком, в котором нет игрока (переменная in_tank в таком танке имеет значение 0).И тут вот такая проблема:яв событии collision у танка прописал код типа этого: Quote if in_tank=0 with other {instance_destroy()} И теперь пуля при выстреле застрявает в танке, и танк не может ехать, хотя должна лететь дальше. (танк твердый, а пуля нет).
|
|
| |
LunarPixel | Дата: Вторник, 01 Ноября 2011, 18:07 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| миха, если ставишь в событие столкновения код, то столкновение начинает работать с твердыми объектами. Можешь сначала рисовать пулю, а когда она выходит за пределы танка, то тогда делать её объектом. Можешь при выстреле делать танк не твердым, пока пуля не пролетит. Можешь просто пулю создавать дальше танка, или уменьшить у танка маску.
|
|
| |
миха | Дата: Вторник, 01 Ноября 2011, 18:16 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| Quote Можешь сначала рисовать пулю, а когда она выходит за пределы танка, то тогда делать её объектом Если честно, не знаю как это сделать, можно код?
|
|
| |
LunarPixel | Дата: Вторник, 01 Ноября 2011, 18:23 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Попробуй создать объект пули без спрайта. А в событии Draw рисуй спрайт пули, через draw_sprite(sprite,0,x,y) Так же при создании пули запускай alarm на секунду, например. И когда эта секунда истечет, тогда через sprite_index ставь пули спрайт.
|
|
| |
миха | Дата: Вторник, 01 Ноября 2011, 19:07 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, не получается :(! Попроще никак сделать не получиться?
|
|
| |
LunarPixel | Дата: Вторник, 01 Ноября 2011, 19:13 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| миха, вот примерчик: http://zalil.ru/31975707
Всё работает, а если сразу поставить на объект пули спрайт пули, то пуля не пролетит через квадратик.
|
|
| |
миха | Дата: Пятница, 04 Ноября 2011, 08:30 | Сообщение # 11 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, ага. Все вроде бы ясно. Не знаю что у меня могло не получиться НО: дело в том, что object0 у меня в комнате много. Я прописал в коллизион у пули с object0 удаление, и все работает только на больших дистанциях. Нельзя ли вместо аларма сделать другую проверку? Я поонимаю, что можно уменьшить аларм до такой степени, что пуля получит спрайт прямо около object0, но тогда стоит object0 немного двинуться в сторону пули, и она удалиться. Вот.
|
|
| |
LunarPixel | Дата: Пятница, 04 Ноября 2011, 08:50 | Сообщение # 12 |
старожил
Сейчас нет на сайте
| миха, ну тогда убери аларм и в степе у пули проверяй расстояние до породившего её танка, если оно больше определенного значения, тогда ставим пуле спрайт.
|
|
| |
миха | Дата: Пятница, 04 Ноября 2011, 11:28 | Сообщение # 13 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, юзать idы?
|
|
| |
LunarPixel | Дата: Пятница, 04 Ноября 2011, 11:29 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| миха, ну да
|
|
| |
миха | Дата: Пятница, 04 Ноября 2011, 13:40 | Сообщение # 15 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, спс
|
|
| |