Проблема с Xors3D
|
|
Kamskii | Дата: Среда, 03 Марта 2010, 22:05 | Сообщение # 1 |
Game ≠ Toy
Сейчас нет на сайте
| Решил попробовать Xors3D+Blitz3D и написать демку(вид от первого лица,ходьба и.т.д.). Но вот возникла проблема. Эта строчка кода Code xTurnEntity Player,0,-xMouseXSpeed,0 не работает-камера(а она привязана к игроку в виде пивота)не поворачивается. Я вывел на экран значение xMouseXSpeed-оно равно нулю, как ни крути мышку(даже как рубанок ). Не могу понять, где собака зарыта.
|
|
| |
Sky | Дата: Среда, 03 Марта 2010, 23:56 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Я могу ошибаться (с Xors3d работал слабо), но вроде функция MouseXSpeed относится к 2д - возможностям движка, то есть ставить перед ним "х" не нужно.
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Четверг, 04 Марта 2010, 04:58 | Сообщение # 3 |
Game ≠ Toy
Сейчас нет на сайте
| Quote (Sky) то есть ставить перед ним "х" не нужно. То же самое. Камера не крутится, скорость нулевая.
|
|
| |
Sky | Дата: Четверг, 04 Марта 2010, 07:58 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Kamskii, дай посмотреть на текст программы - может и помогу =-)
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Четверг, 04 Марта 2010, 21:36 | Сообщение # 5 |
Game ≠ Toy
Сейчас нет на сайте
| Sky, держи вот тут.
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 00:56 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Вух, придумал. Во-первых, в Xors3d всё-таки используется функция xMouseXSpeed(), а во-вторых, в модуле Player ты проводишь проверку на место положение курсора мыши, и если он выходит за границы экрана, то возвращаешь его в центр. Так вот, эту проверку нужно проводить после поворота объекта, а то у тебя получается, что курсор сначала становится в начальную точку (то есть его перемещение равно нулю), а потом происходит поворот объекта с этим нулевым параметром=-)))) Кстати, проверку положения курсора мыши можно заменить одной строчкой xMoveMouse(ScreenWidth/2,ScreenHeight/2) (думаю, так проще )... Если что не получится, отпишись=-))))
Sky (Fire Blood)
Сообщение отредактировал Sky - Пятница, 05 Марта 2010, 00:58 |
|
| |
Akyltist | Дата: Пятница, 05 Марта 2010, 01:08 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Quote If xMouseX<50 Then xMoveMouse(ScreenWidth/2,ScreenHeight/2) If xMouseY>718 Then xMoveMouse(ScreenWidth/2,ScreenHeight/2) If xMouseX>974 Then xMoveMouse(ScreenWidth/2,ScreenHeight/2) If xMouseY<50 Then xMoveMouse(ScreenWidth/2,ScreenHeight/2) xTurnEntity Player,0,-MouseXSpeed,0 Quote xMouseXSpeed-оно равно нулю эта функция возвращает передвижение мыши по х после последнего вызова)) Поэтому и 0 Почему бы сначала не сохранять разницу между текущим положением и центром экрана, ложить ее в переменную, а потом уже сбрасывать? Quote проверку положения курсора мыши можно заменить одной строчкой xMoveMouse(ScreenWidth/2,ScreenHeight/2) Тогда каk работать с интерфейсом типа кнопок? если все время сбрасывать на центр? Как совет резать в сторону не интерфейсных углов, и то есть выбирать правильный диапазон вида: [меньше x но больше y]
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 08:46 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| Quote Тогда каk работать с интерфейсом типа кнопок? если все время сбрасывать на центр? Akyltist, это просто пример работы с камерой с использованием Xors3d. Там интерфейса как такового нет. Да и к тому же, я считаю, что при работе с меню подобные проверки в-принципе не нужны, ибо если курсор выйдет за границы экрана в этот момент, то ни с игрой и ни с меню от этого ничего не станет (наоборот, это может привести к проблемам переключения из игры в Windows). А вот если произойдет выход курсора мыши за границы экрана во время игры, то это может привести к ошибкам работы камеры, а именно к её остановке... Quote Почему бы сначала не сохранять разницу между текущим положением и центром экрана, ложить ее в переменную, а потом уже сбрасывать? Я же говорил, что можно функцию поворота и проверки поменять местами, тогда получится, что он сначала повернет камеру, а потом уже сбросит. Единственное, что в это случае на экране всё-равно будет Quote xMouseXSpeed-оно равно нулю Добавлено (05.03.2010, 08:46) --------------------------------------------- А вот если кнопки будут в самой игре (дверь открыть например), то всё равно лучше будет организовать их активацию прицелом, который находится в центре экрана (если конечно эта игра не квест =-). В случае, если это игра всё-таки квест, то необходимость в таких проверках, конечно, имеется.
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 21:21 | Сообщение # 9 |
Game ≠ Toy
Сейчас нет на сайте
| Поменял местами-поворота как не было, так и нет. Кстати, в Блице данная процедура работала нормально.
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 21:29 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| А "х" перед MouseXSpeed поставил?
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 21:33 | Сообщение # 11 |
Game ≠ Toy
Сейчас нет на сайте
| Quote (Sky) А "х" перед MouseXSpeed поставил? Поставил.
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 21:33 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| А, и кстати, после xMouseXSpeed должны быть двойные скобки... Лично у меня без них мышь тоже не работает =-))))
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 21:39 | Сообщение # 13 |
Game ≠ Toy
Сейчас нет на сайте
| Sky, я уже чувствую себя клиническим дебилом, но все-таки не работает!
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 21:49 | Сообщение # 14 |
частый гость
Сейчас нет на сайте
| Нет уж, Quote клиническим дебилом начинаю чувствовать себя я. Сейчас попробую залить куда нибудь этот пример. Добавлено (05.03.2010, 21:49) --------------------------------------------- Ссылку удалил =-)))))
Sky (Fire Blood)
Сообщение отредактировал Sky - Пятница, 05 Марта 2010, 22:08 |
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 22:07 | Сообщение # 15 |
Game ≠ Toy
Сейчас нет на сайте
| Sky, удаляй, я сейчас гляну.
|
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 22:12 | Сообщение # 16 |
Game ≠ Toy
Сейчас нет на сайте
| Ура, работает! Правда, я не пойму, в чем разница между моим и твоим кодом-абсолютно ОДИНАКОВЫЕ, но твой вариант почему-то работает... То ли это у меня руки не из того места растут, то ли это с компьюетром что-то(в Unity3D тоже чудеса какие-то творятся).
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 22:16 | Сообщение # 17 |
частый гость
Сейчас нет на сайте
| Всегда пожалуйста =-)))))) Кстати, может проблема в файле xors3d.bb (то есть у нас разные версии Xors3d). Если не лень, попробуй свой файл xors3d.bb перенести в мой архив (только резервную копию файлов сделай =-))))
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 22:30 | Сообщение # 18 |
Game ≠ Toy
Сейчас нет на сайте
| С твоим заголовочным файлом проект не грузился-была ошибка именно в xors3d.bb(не помню где). С моим все пошло нормально.
|
|
| |
Sky | Дата: Пятница, 05 Марта 2010, 22:33 | Сообщение # 19 |
частый гость
Сейчас нет на сайте
| У меня было тоже самое с твоим заголовочным файлом. Ну тогда я не знаю в чем дело
Sky (Fire Blood)
|
|
| |
Kamskii | Дата: Пятница, 05 Марта 2010, 22:49 | Сообщение # 20 |
Game ≠ Toy
Сейчас нет на сайте
| Sky, я, если честно, пребываю в состоянии некой прострации Сейчас попробую Хорс обновить с офсайта.
|
|
| |