Форум: "Игры";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизTDxInput в ДэлфиХ Найти похожие ветки
← →
Green_Templar © (2005-04-20 21:45) [0]Как делают стрельбу из автомата мышой? У TDxdraw есть метод onmousedown & onmouseup, а метод, который говорит, что кнопка зажата, нету :(
Кто-нибудь сталкивался с такой проблемой, что некоторые клавиатурные кнопки dxinput в ДэлфиХ одновременно не ловит? Вот у меня кнопки (A or D) and J and U одновременно не ловит :( В чём проблема?
В Dxinput есть поле Mouse. Dxinput не предлагает свой доступ к мыши, а использует unit Controls?
А где можно подчерпнуть кладязь инфы по TDxInput в Дэлфи?
← →
Домовенок (2005-04-20 22:52) [1]> Green_Templar (20.04.05 21:45)
> а метод, который говорит, что кнопка зажата, нету :(
Сделай переменную: MouseDown: Boolean; Когда происходит событие OnMouseDown присваивай ей значение True, а когда происходит OnMouseUp, присваивай значение False. А дальше уже исходи из значения этой переменной. Что тут сложного?
> Вот у меня кнопки (A or D) and J and U одновременно не ловит :( В чём проблема?
Наверное, ты как-то не правильно обрабатываешь нажатие клавиш. Приведи код.
> В Dxinput есть поле Mouse. Dxinput не предлагает свой доступ к мыши, а использует unit Controls?
Тут я вообще не понял о чем речь. Возможно потому что с DelphiX уже давно не работал :)
← →
Green_Templar © (2005-04-21 00:41) [2]>Что тут сложного?
Тогда при каждом OnDxtimer нужно смотреть, тру ли эта переменная, и если да, вызывать процедуру. Не сложно, но, кажется,сделать это ивэнтом было бы легче. Ну нет - так нет.
>Приведи код.
Не могу, СЛИШКОМ большой. Спрошу так: сколько клавиш ловит дхинпут одновременно? Давным-давно слышал, что одновременно можно словить максимум 6 кнопок, правда ли?
← →
Домовенок (2005-04-21 03:31) [3]> Спрошу так: сколько клавиш ловит дхинпут одновременно? Давным-давно слышал, что одновременно можно словить максимум 6 кнопок, правда ли?
Ничего про DXInput не знаю. Пробуй добавить в Uses Keyboard; и использовать функцию if IsKeyDown(..) then //... Одновременно так можно проверять нажатие сразу нескольких клавишь. А вот сколько именно точно сказать не могу.
← →
boalse © (2005-04-21 04:25) [4]Моё мнение - ну его в баню этот инпут. Также как и DXSpiteEngine. Из DelphiX я использую только DXDraw, DXImageList, DXSound, DXTimer. Остальное всё предпочитаю сам обрабатывать, под конкретную задачу.
← →
Green_Templar © (2005-04-21 11:25) [5]Домовёнок, IsKeyDown тоже не подходит - там ведь нельзя клавиши зажимать :)
Boalse - а чем ты пользуешься для инпута? Вот стрельбу из автомата ты бы как решил для мыши и клавы?
← →
Домовенок © (2005-04-21 15:50) [6]> IsKeyDown тоже не подходит - там ведь нельзя клавиши зажимать :)
Почему нельзя клавиши зажимать?
if IsKeyDown(VK_UP) then inc(y) else
if IsKeyDown(VK_Down) then dec(y);
if IsKeyDown(VK_LEFT) then dec(x) else
if IsKeyDown(VK_RIGHT) then inc(x);
Если зажать одновременно вверх и влево то Y будет увеличиваться, а X уменьшаться - одновременно.
← →
Sphinx © (2005-04-21 22:47) [7]> Green_Templar © (21.04.05 11:25) [5]
Почитай на XDev.ru статьи по DirectInput8 (если в С/С++ коде разбираешься хоть немного) и сделай всё сам, я к примеру сделал сам и теперь просто проверяю:if DIObject.Keys[DI_Esc] then Close;
приблизительный код, и события можно самому организовать на мыша...
короче совет...попробуй сделать сам :)
← →
boalse © (2005-04-22 06:22) [8]
> Green_Templar © (21.04.05 11:25) [5]
Вот стрельбу из автомата ты бы как решил для мыши и клавы?
Да также как предложил Домовенок (20.04.05 22:52) [1]
У объекта класса TAvtomat имеется булевское свойство fire. В стандартном событии OnMouseDown, или KeyDown, смотрю какая клавиша нажата. В первом случае либо Button=mbLeft либо mbRight, во втором случае получаю код клавиши и сравниваю его с тем, на котором у меня стоит стрельба. Если эти условия выполняются, меняю флаг TAvtomat.Fire в true. Аналогично в событиях OnMoseUp и OnKeyUp, только теперь меняю на false. При каждом игровом цикле обрабатывается событие, ну например TAvtomat.Go, в этом событии смотрим на флаг Fire, если он true, и прошло определённое время после вылета последнией пули, то создаём новую пулю - автомат стреляет! Помоему, всё гораздо проще чем в инпуте, главное гибко. Достаточно просто поменять один флажок, и автомат начинает стрелять, либо перестаёт.
← →
boalse © (2005-04-22 06:27) [9]В подтверждение моих слов, что всё нормально работает, можешь скачать мою игру: http://boalse.narod.ru/mf.htm, правда без исходников.
← →
Green_Templar © (2005-04-23 01:26) [10]"Cannot find keyboard.dcu", поделитесь пожалуйста на green_templar@rambler.ru!
← →
Sphinx © (2005-04-23 12:48) [11]> Green_Templar © (23.04.05 01:26) [10]
Пропиши правильно путь до файлаkeyboard.pas
и сделай Build проекту на всякий случай.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c