В данном уроке Вы узнаете, как реализовать перемещение в жанре FPS (шутеров от первого лица) в игровом движке Blender.
Использование скрипта
Данный скрипт очень прост в использовании и включает в себя ограничения угла обзора камеры. Нужны данные ограничители для того, чтобы камера переставала вращаться когда Вы смотрите прямо вверх или вниз. Этот диапазон легко регулировать изменяя всего две переменные.
Вы можете просто импортировать объекты в Вашу сцену или же создать все самостоятельно (заодно и разобравшись). При создании собственной сцены создайте новый текстовый документ в окне Text Editor, вставьте в него код скрипта и назовите его, к примеру, «mouselook.py». Вот, собственно, сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | from bge import render as r import math cont = bge.logic.getCurrentController() own = cont.owner mouse = cont.sensors["Mouse"] parent = own.parent #set speed for camera movement sensitivity = 0.05 #set camera rotation limits high_limit = 180 low_limit = 0 h = r.getWindowHeight()//2 w = r.getWindowWidth()//2 x = (h - mouse.position[0])*sensitivity y = (w - mouse.position[1])*sensitivity if own["startup"]: r.setMousePosition(h, w) own ["startup"] = False else: rot = own.localOrientation.to_euler() pitch = abs(math.degrees(rot[0])) if high_limit > (pitch+y) > low_limit: pitch += y elif (pitch+y) < low_limit: pitch = low_limit elif (pitch+y) > high_limit: pitch = high_limit rot[0] = math.radians(pitch) own.localOrientation = rot.to_matrix() parentRot = parent.localOrientation.to_euler() yaw = math.degrees(parentRot[2]) + x parentRot[2] = math.radians(yaw) parent.localOrientation = parentRot.to_matrix() r.setMousePosition(h, w) |
Запуск скрипта
Вам необходимо привязать скрипт к камере, которая в свою очередь привязана к игровому персонажу (в данном примере куб). Также, для камеры необходимо создать логическое свойство запуска (startup) установленное в значение TRUE. Скрипт поворачивает камеру, но так как она привязана к объекту (куб), то поворачивается и он. Для самого куба назначено стандартное управление движением (W,A,S,D).
Убедитесь, чтобы ось Z Вашего персонажа (куба) была направлена вверх. На изображении ниже Вы увидите два сенсора подключенных к файлу скрипта. Pulse Mode сенсора Always нужно установить в значение TRUE:
да когда этот паровоз наконец зоборят, сколько существует игровой двожок — столько и пишу это управление мышью…
also: http://www.blender.org/documentation/blender_python_api_2_71_release/bge.events.html
Откровенно говоря, я не понял ни слова.
есть её один геморой, с переназначением назначенных клавиш — тот ещё паровоз…
Спасибо за труд!
скачал файлик, открыл блендер, окркыл файлик (mouselook.blend), нажимаю клавишу ‘з’ (‘p’) и вижу вот такое »кино» (см. скрин шот). это только у меня такое происходит или ёще у кого ещё? спасибо
Только у тебя. Сбрось настройки блендера, может поможет.
не помогло. можешь скриншот своего блендера при таких же условиях (предыдущий пост) сделать ;)
Пожалуйста.
Спасибо, Братишка ;) (y) нужно мне ноут брать от nvidia :/
англоязычные пользователи, культурно послали меня и моё железо, очень далеко: одни сразу засоватовали нубук с nv идти покупать, другие занятца пересобиранием blender’а с неофицальными патчами и правкой исходников…
т.е. самый простой вариант отказатца от bge и использовать что-то другое, и тут-же возникает вопрос, а нужен ли blender — сколько игровых движков нативно (без export/import) .blend файлы? да и тупит он у меня, maya не тупит, а blender тупит (опять таки железо ;) )
да согласен он бесплатен и есть какаято магическая притягательность и вроде потенциал огромен (hello python coders) но с другой стороны чувствуется влияние линукс — такая недоделанность, простые весчи реализованы настолько завёрнуто…
Затенение (шрейдер) GLSL включить пробовал??
пробовал на НЕ интергигованной (intel’овской) видеокарте — и там всё ок
Я в скриптах не чего не понимаю,так-что просто гляжу на этот скрипт и не фига не понимаю(:cry:).Может скажете чего он значит.
Для лучшего понимания нужно подучить Python. И желательно немного знать английский. После знака # написан комментарий что эта часть кода делает.
одним питоном тут сыт не будешь, нужно bge api (лил что тут DOM) питон соусом заправить
http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts
http://wiki.blender.org/index.php/Dev:Contents
http://www.blender.org/documentation/blender_python_api_2_71_release/
Можно всё это изучать спокойно.
1. Открываешь консоль.
2. Делаешь что-либо в окне 3D вида(куб добавил, например)
3.Смотришь на консоль, как это действие выглядит на консоли.
Здесь главное — знать, что обычно делают главные переменные : лэйблы, бпишки и т. п.
Остальное приложится с описанным выше алгоритмом.(:smile:)
Изучение программирования — дело тонкое и неспешное. Питон ещё лёгок со своими кодовыми выражениями(хорошо, что не на C ++ пишем, а то были б не комменты, а сплошная истерика(:smile:))
Не понимаю, зачем контроллеру мыши подключать сенсор Always? Он в принципе ему ничего не дает.
И еще.
Сейчас сенсор мыши реагирует всегда, даже если мышь не двигают. Это происходит из-за строчки:
r.setMousePosition(h, w)
То бишь, сенсор реагирует как на движение мышкой, так и на перемещение курсора строчкой кода.
Не лучше ли будет убрать сенсор Always, а в конце добавить проверку:
if x != 0 or y != 0: r.setMousePosition(h, w)
Чтобы не получалось бесконечной рекурсии.
для старта хорошо выбирать вид из камеры и тогда запускать, иначе возможны глюки в том плане что камера не вращается, а куб не двигается.
и второй вопрос: https://blender3d.com.ua/sozdaniye-prostogo-futbola-v-bge/ как сказать мячу что он получает ускорение от столкновения с игроками и достаточное что бы отскочить от стен. То что Книжки читать это догадываюсь, но можно сразу на главу.
Честно, уже практически не помню тот урок, но если масса на помогает, то нужно крутить на вкладке физики параметры скольжения, отскока и т.д. При чем не только для мяча, а и для игрока.
Не смогу точнее сказать не попробовав.
Для игрока пробовал, он начинает носиться что бешеный, а мячик не очень сильно.
понимаю что конструкция должна получиться примерно следующая
игрок один правее мяча + столкновение = мяч получает ускорение влево от игрока один
и так еще три раза да плюс от второго игрока также.
Как работает оператор выбора на ПИТОНЕ?
Как работает оператор выбора на Python? Не понимаю вопрос…
СПАСИБООО! Долго в инете искал такой урок!
В общем разобрался как это всё работает, переписал скрипт. Жму run. Выдаёт ошибку, после запуска просит чтобы я глянул в консоль, а там фига:
bpy.ops.text.run_script()
Python script fail, look in the console for now…
И усё. Скачал вашу сценку, скачал сценку из забугорного источника, проблема таже.
Разобрался, надо было нажать старт в окне свойств, во вкладке рендер.
Здрасте.Я сегодня зарегистрировался и хочу сказать что вид из камеры можно сделать и без скриптов с актуатором мышь(mouse) связанный с сенсором мышь.
P.S благодарю за урок.
Спасибо тебе большое, но когда делался этот урок, актуатора еще не было (вроде) (:smile:)
А можно подробнее, как это сделать?
Например нашем персонажем будет куб.Выдели камеру потом куб нажми ctrl+p и и потдверди сделать родителем.Потом добавь кубу сенсор мышь и укажи ниже движение.Соедени сенсор мышь с актуатором мышь.Поменяй в актуатере с видимости на вид.В актуатере нажми на «использовать ось y».Нажми п и увидишь что при движении мышью куб крутится в лево и в право.Камере создаем теже сенсор и актуатор только для камеры нажимаем в актуаторе ось Х.Нажми 0 и будешь через камеру смотреть.Добавь в далеке кое какие меши чтоб было на что смотреть.И все.За граматику извеняюсь я из армении.(:smile:)В актуаторе можно еще менять угол,чувствительность и т.д.И еще подскажите как узнать о том что на мой коммент ответили.Заранее благодарш.
Большое спасибо за объяснения. Всё получилось)
ввел скрипт, на контролере установил питон, привязал к нему скрипт и… оп! ничего не произошло!!! сижу, туплю, пьюкофе. уже третья кружка) Что не так?)))
Понял как работает ваш скрипт. Вы забыли добавить кок-какую надпись в начале скрипта.
#Learn from men with hair on their chest. CGMasters.net
from bge import render as r
import math
cont = bge.logic.getCurrentController()
own = cont.owner
mouse = cont.sensors[«Mouse»]
parent = own.parent
#set speed for camera movement
sensitivity = 0.05
#set camera rotation limits
high_limit = 180
low_limit = 0
h = r.getWindowHeight()//2
w = r.getWindowWidth()//2
x = (h — mouse.position[0])*sensitivity
y = (w — mouse.position[1])*sensitivity
if own[«startup»]:
r.setMousePosition(h, w)
own [«startup»] = False
else:
rot = own.localOrientation.to_euler()
pitch = abs(math.degrees(rot[0]))
if high_limit > (pitch+y) > low_limit:
pitch += y
elif (pitch+y) < low_limit: pitch = low_limit elif (pitch+y) > high_limit:
pitch = high_limit
rot[0] = math.radians(pitch)
own.localOrientation = rot.to_matrix()
parentRot = parent.localOrientation.to_euler()
yaw = math.degrees(parentRot[2]) + x
parentRot[2] = math.radians(yaw)
parent.localOrientation = parentRot.to_matrix()
r.setMousePosition(h, w)
Спасибо вам, мне он очень помог!!!!
Какая-то надпись называется комментарий (:smile:)
Скрипты работают и без них.
Почему-то скрипт никак не хотел запускаться. Оказалось, что движок не понимает, что такое bge в 6-й строчке. Задача решается добавлением в самое начало такой строки: import bge. Это пишется перед словом from.
Не получается
Использую Linux Mint 17 Cinnamon x64 и blender 2.75a. Управление мышкой не работает и здесь, и тут https://blender3d.com.ua/text-v-blender-game-engine/ . Управление с клавы в порядке. Скорее всего проблема во взаимодействии blender и оконного окружения. Нагулить ничего путного по этой проблеме не получилось. Может есть у кого рецепт решения проблемы?
сделал все, как на скринах, только понять не могу, как запустить игру?
подскажите версию блендера? в которой этот скрипт работает.
О каких скриптах может идти речь, если вы не знаете где смотреть версию Blender?
Спасибо огромное!!!
видимо урок старый) сейчас же есть mouse > movement / And / Mouse > Look и выбераешь оси и мин макс
вот для наглядности
http://pixs.ru/showimage/1jpg_9018806_21271459.jpg
Совершенно верно!
Ребята, помогите! Скачал файл, открыл, проверил скрипт (нет косяков), запустил движок (English «P»), камера не крутится(( Проверил ещё разок ВСЁ, сенсоры, контролеры, но нет! От вращения мышью ничего не меняется, что делать?
Дякую!