forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Bomberman_Standard_Edition (http://forum.boolean.name/showthread.php?t=79)

Fant 18.03.2006 11:27

Блин! нет ничего хуже, чем когда тебя игнорируют!
Это тонкий намек на то, что мне можно удалять тему и забить на бомбера? :'((

tormoz 18.03.2006 13:25

Цитата:

2) Есть баги, которые трудно мне исправить, то если кто-нить из форума великодушно сможет разобраться, то я буду только рад!
Описание:
Сейчас игра запускается в режиме "случайное расставление пробиваемых кубиков"
Так вот: Если попытаться клавишей f2-f6 (любой из них) добавить приз на игровую локацию, игра полностью зависнет.
При этом если загрузить карту с кубиками, то бага не происходит и призы добавляются отлично.

Что нужно: Сделать так, что бы при добавлении приза на локацию, не происходило зависание игры.

Пока что все! очень надеюсь, что мне помогут с этим вопросом

Если ты про это, то тут тебе НИКТО не в состоянии помоч.
Это примерно то же самое. что :
Я варю борщ, а он гад очень невкусный выходит. Что мне делать ?

Где-то ты накосячил в коде, а вот где - только тебе искать. ;)

Fant 18.03.2006 14:14

Ладно! С багом помутю что-нить! А как реализовать (я даже представить не могу) хождение игрока не на 1 клетку (при нажатии клавиши вперед) а сразу на 5 или на 10 (при этом что бы это мягко было)

tormoz 18.03.2006 15:45

Покажи кусок кода, который у тебя двигает на одну клетку

Fant 18.03.2006 15:49

Код:

Function fnUpdatePlayer(spd#=1)
       
;for each прееделать так
; движение игрока
        KEY_MOVE_LEFT = KeyHit(75)
        KEY_MOVE_UP = KeyDown(72)
        KEY_MOVE_RIGHT = KeyHit(77)
        KEY_MOVE_DOWN = KeyDown(76)
       
        If (KEY_MOVE_UP=1)
        MoveEntity player\obj,0,0,spd#
        End If
       
        If (KEY_MOVE_LEFT=1 )
        TurnEntity player\obj,0,90,0
        End If
       
        If (KEY_MOVE_RIGHT=1 )
        TurnEntity player\obj,0,-90,0
        End If
       
        If (KEY_MOVE_DOWN=1)
        MoveEntity player\obj,0,0,-spd#
        End If

Как такого перепещения на "клетку нет" ! просто движение!

axel186 18.03.2006 16:39

не уверен, но может надо сделать spd#=5 или скока там надо...

tormoz 18.03.2006 17:58

Меняй значение spd#
или делай так:

Код:


If (KEY_MOVE_UP=1)
For i=1 to step_player

MoveEntity player\obj,0,0,spd#

Next
End If

step_player - количество шагов

Fant 18.03.2006 20:21

Цитата:

Originally posted by tormoz@18.3.2006, 16:58
Меняй значение spd#
или делай так:

Код:


If (KEY_MOVE_UP=1)
For i=1 to step_player

MoveEntity player\obj,0,0,spd#

Next
End If

step_player - количество шагов

Не совсем понял где логика!
А где же мы используем step_player?

Fant 18.03.2006 20:26

Цитата:

Originally posted by axel186@18.3.2006, 15:39
не уверен, но может надо сделать spd#=5 или скока там надо...

Так не получится! Игрок должен двигаться не быстро, а плавно...

jimon 18.03.2006 22:07

в твоем методе перемещения нельзя задать точное перемещение на определеную позицию (чето не то сказал)

если игрок просто двигается - делай как щас
а когда надо двигатся на определеное количество
то доежай до ближайшого блока тем методом которым ты щас пользуешся и дальше двигай игрока на растояние к примеру половину длины кубика, до тех пор пока он не доедет до той точки в которой должен остановится :)

Fant 18.03.2006 22:30

Цитата:

Originally posted by jimon@18.3.2006, 21:07
в твоем методе перемещения нельзя задать точное перемещение на определеную позицию (чето не то сказал)

если игрок просто двигается - делай как щас
а когда надо двигатся на определеное количество
то доежай до ближайшого блока тем методом которым ты щас пользуешся и дальше двигай игрока на растояние к примеру половину длины кубика, до тех пор пока он не доедет до той точки в которой должен остановится :)

Если честно, но ничего не понятно (почти)

То есть я должен при нажатии "вперед" передвигать игрока на "фиксированную" координату... ?

tormoz 19.03.2006 00:20

Цитата:

KEY_MOVE_LEFT = KeyHit(75)
KEY_MOVE_UP = KeyHit(72)
KEY_MOVE_RIGHT = KeyHit(77)
KEY_MOVE_DOWN = KeyHit(76)

If* KEY_MOVE_UP=1 AND mov=0
For i=1 To step_player
* mov=10 ; чем выше число, тем больше плавность движения
Next
EndIf

If mov>0
* MoveEntity player\obj,0,0,spd#
* mov=mov-1
End If

*

step_player количество клеток
spd подбери, чтобы при step_player=1 игрок двигался на одну клетку

Если и сейчас непоймешь, то ничем помочь больше не могу :)

Обрати внимание на KEY_MOVE_UP = KeyHit(72)

Fant 24.03.2006 21:19

Цитата:

Originally posted by tormoz@18.3.2006, 23:20
Цитата:

KEY_MOVE_LEFT = KeyHit(75)
KEY_MOVE_UP = KeyHit(72)
KEY_MOVE_RIGHT = KeyHit(77)
KEY_MOVE_DOWN = KeyHit(76)

If* KEY_MOVE_UP=1 AND mov=0
For i=1 To step_player
* mov=10 ; чем выше число, тем больше плавность движения
Next
EndIf

If mov>0
* MoveEntity player\obj,0,0,spd#
* mov=mov-1
End If

**

step_player количество клеток
spd подбери, чтобы при step_player=1 игрок двигался на одну клетку

Если и сейчас непоймешь, то ничем помочь больше не могу :)

Обрати внимание на KEY_MOVE_UP = KeyHit(72)


Все никак не доберусь что бы напечатать:
Не идет так,tormoz, моя мечта это keyDown а при keyhit устанешь ее клацать. Насчет мягкости - ничего твой вариант, но хотелось бы "мягче", а mov в твоем коде отвечает не за мягкость, а за количество пройденных клеток (разумеется чем >mov тем > пройдено и нем мягче! Но это не совсем то, что мне нужно!

Есть ли еще варианты как можно сделать мягкое передвижение игрока на 1 клетку с использованием keydown ?

tormoz 25.03.2006 01:24

Ты хочешь и рыбку съесть и на трамвае уехать :)

Для плавного передвижения с помощью кейдовн по клеточному уровню нужно написать намного более сложный код.
Просто заюзай несколько дополнительных переменных.
Контролируй нахождение игрока на клетке(центре) и введи переменные плавного набора скорости и остановки

Maxus 25.03.2006 17:15

А не проще по вектору перемешать объек из клетки в клетку?


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

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