Скрипт вращения камеры мышкой в BGE

В данном уроке Вы узнаете, как реализовать перемещение в жанре 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).
mouselook
Убедитесь, чтобы ось Z Вашего персонажа (куба) была направлена вверх. На изображении ниже Вы увидите два сенсора подключенных к файлу скрипта. Pulse Mode сенсора Always нужно установить в значение TRUE:
mouselook

источник урока

comments powered by HyperComments

О сайте

На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.

Контакты

Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:

Email:
info@blender3d.com.ua

Следите за нами

Подписывайтесь на наши страницы в социальных сетях.

На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.

Помимо уроков по Blender, Вы сможете найти готовые 3D-модели и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.