Среда, 20 Ноября 2024, 02:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема с Xors3D
KamskiiДата: Среда, 03 Марта 2010, 22:05 | Сообщение # 1
Game ≠ Toy
Сейчас нет на сайте
Решил попробовать Xors3D+Blitz3D и написать демку(вид от первого лица,ходьба и.т.д.). Но вот возникла проблема. Эта строчка кода
Code

xTurnEntity Player,0,-xMouseXSpeed,0

не работает-камера(а она привязана к игроку в виде пивота)не поворачивается. Я вывел на экран значение xMouseXSpeed-оно равно нулю, как ни крути мышку(даже как рубанок happy ). Не могу понять, где собака зарыта.
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, держи вот тут. smile
SkyДата: Пятница, 05 Марта 2010, 00:56 | Сообщение # 6
частый гость
Сейчас нет на сайте
Вух, придумал. Во-первых, в Xors3d всё-таки используется функция xMouseXSpeed(), а во-вторых, в модуле Player ты проводишь проверку на место положение курсора мыши, и если он выходит за границы экрана, то возвращаешь его в центр. Так вот, эту проверку нужно проводить после поворота объекта, а то у тебя получается, что курсор сначала становится в начальную точку (то есть его перемещение равно нулю), а потом происходит поворот объекта с этим нулевым параметром=-)))) Кстати, проверку положения курсора мыши можно заменить одной строчкой xMoveMouse(ScreenWidth/2,ScreenHeight/2) (думаю, так проще smile )... Если что не получится, отпишись=-))))

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-оно равно нулю
smile biggrin

Добавлено (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
частый гость
Сейчас нет на сайте
У меня было тоже самое с твоим заголовочным файлом. Ну тогда я не знаю в чем дело wacko

Sky (Fire Blood)
KamskiiДата: Пятница, 05 Марта 2010, 22:49 | Сообщение # 20
Game ≠ Toy
Сейчас нет на сайте
Sky, я, если честно, пребываю в состоянии некой прострации wacko Сейчас попробую Хорс обновить с офсайта.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг