| 
				
				Проблема с 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, я, если честно, пребываю в состоянии некой прострации   Сейчас попробую Хорс обновить с офсайта.
 |  
| 
 | 
 |    |