forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Ограничение по координатам (http://forum.boolean.name/showthread.php?t=4269)

Valet 27.08.2007 21:21

Ограничение по координатам
 
День добрый.

Скажите, как можно сделать ограничение движения изображения по координатам. Мне не нужно, что бы картинка игрока улетала за пределы экрана. Ходим клавишами. Как только Х или У стали меньше\больше заданного значения - остановка... Это я сделал, но после возобновить движение уже не получается...

If avatar_x>1 And avatar_x<800
IfKeyDown(KEY_LEFT) avatar_x=avatar_x - 3
IfKeyDown(KEY_RIGHT) avatar_x=avatar_x + 3


Еще подскажите, как сделать такое столкновение с непроходимым объектом.

Заранее спасибо.

XenuS 27.08.2007 21:34

Re: Ограничение по координатам
 
вот пример для 2Д:
If avatar_x>0 And avatar_x<800
IfKeyDown(KEY_LEFT) avatar_x=avatar_x - 3
IfKeyDown(KEY_RIGHT) avatar_x=avatar_x + 3
if avatar_x<=0 then avatar_x=1
if avatar_x>=800 then avatar_x=799
можно так обойти проблему.....

Valet 27.08.2007 21:43

Re: Ограничение по координатам
 
о. спасибо. так и обойду...

XenuS 27.08.2007 21:46

Re: Ограничение по координатам
 
ща, в первый раз одну важную вещь не заметил...
вот прально:
If avatar_x>0 And avatar_x<800
IfKeyDown(KEY_LEFT) avatar_x=avatar_x - 3
IfKeyDown(KEY_RIGHT) avatar_x=avatar_x + 3
endif
if avatar_x<=0 then avatar_x=1
if avatar_x>=800 then avatar_x=799

Valet 27.08.2007 23:24

Re: Ограничение по координатам
 
Хорошо, а как сделать остановку при соприкосновении? Мне это для создания уровня нужно... Препятствия.

dimanche13 27.08.2007 23:31

Re: Ограничение по координатам
 
Это назывется "коллизия". А сделать так, проверять при каждом шаге координты своего объекта, потом смотреть не влетел ли в другой объект, если влетел, то отодвинуться.

Valet 27.08.2007 23:38

Re: Ограничение по координатам
 
Хм... жаль, что только так... Спасибо.

dimanche13 27.08.2007 23:42

Re: Ограничение по координатам
 
То что я писал раньше это "коллизия по факту". Когда уже столкнулся.
Можно сделать "опережающую коллизию". То есть посмотреть будущее место твоего объекта, если там уже есть объект, то не идти туда, а если нет ,то идти. Блин, как-то мутно объяснил. Но вроде все так. Пошел я спать. ;)

moka 27.08.2007 23:45

Re: Ограничение по координатам
 
Я сделал бы так:
Код:

PlayerX#=100
PlayerSpeed#=3
IKdLeft=KeyDown(KEY_LEFT)
IKdRight=KeyDown(KEY_RIGHT)
PlayerX:+(IKdRight-IKdLeft)*PlayerSpeed
If PlayerX<0 PlayerX=0
If PlayerX>200 PlayerX=200

PlayerX - Координата игрока.
IKdLeft - Переменная к которой привязываем нажате кнопки Влево.
IKdRight - Переменная к которой привязываем нажате кнопки Вправо.
Логически: Если нажата кнопка, то переменная будет 1, если не нажата то 0, и вот такая форма "IKdRight-IKdLeft" очень удобна, и умнажаем её на скорость перемещения. А дальше простые ограничения ;)


Часовой пояс GMT +4, время: 04:19.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot