Dead space камера крутится

Игра, при всех ее достоинствах, поражает только одним — страшно неудобной камерой. За все время прохождения, я так и не смог к этому привыкнуть. Да, считается, что это усиливает атмосферу и позволяет реализовать такие фичи, как, например, хэлс-бар на позвоночнике. Может быть и так, но, по-моему в виде от первого лица атмосфера была бы еще более ужасающей. А оригинальный интерфейс можно было бы реализовать так, как это было реализовано в Star Wars Republic Commando. Помните? Там в роли интерфейса выступал шлем, который вдобавок отлично пачкался кровью и потом красиво "отмывался" спустя несколько секунд.

Особенно напрягает, что подобное расположение камеры (сзади-сбоку) становится модным. Из последних игр точно такая же камера присутствует в Dark Sector, и, скорее всего, такая же камера будет и в Mafia II, что вообще страшно огорчает.

Внимание! Этот документ ещё не опубликован.

Здравствуйте, меня зовут Михаил.
Сегодня я расскажу Вам как добавить в Вашу игру на Unreal Engine вид камеры от третьего лица как в Dead Space.
По ссылке можете посмотреть, что у нас должно получится под конец урока: http://www.youtube.com/watch?v=Pi4zodq9S1w
Всё реализовано на Unreal Script. И так приступим.

Если Вы надумали создать вид от третьего лица в вашей игре с помощью Unreal Script, то Вы наверняка владеете минимальными навыками программирования на Unreal Script.
Если Вы только решили начать изучать Unreal Script то вот ссылка на уроки:
xgm.ru/p/udk/57593
чтоб все не читать ознакомьтесь с разделами (готовимся творить и перегрузка функций)
в разделе готовимся творить Вы найдете информацию как создать папку вашего проэкта
и названия программ которые необходимы для наиболее эффективного написания кода.
В разделе перегрузка функций Вы найдете примеры контроллера, павна и типа игры и общие принцыпы их работы.

Мы создали основу для вашего персонажа, при этом тип игры и класс павн в данном уроке изменятся не будут, все функции по управлению камерой будут содержатся в контроллере.
За персонажа мы берем стандартного робота, но можно заменить его кем угодно.
Теперь нужно придумать какие функции будет выполнять камера, за основу я взял камеру из Dead Space.

— камера выглядывает из за плеча
— при прицеливании камера приближается ближе к персонажу и смотрит вдоль правой руки
— при отпущенной мышке камера просто крутится вокруг персонажа причем всегда смотрит на него же. И немного сдвинута назад ось вращения камеры
— при ходьбе и отпущенной мышке персонаж идет по направлению камеры
— при прицеливании и ходьбе персонаж идет вдоль камеры прицеливаясь

Теперь приступим к коду
Главная функция которая изменяет позицию и повороты камеры это

Добавим эту функцию в наш контроллер.

И так у нас есть контроль над камерой, но мы еще не задавали поворотов и позиции для нее.
Теперь нужно сделать проверку на существование павна, чтобы точно знать, что не будет никаких казусов.

Откомпилируйте скрипты и в редакторе.
Камера все еще от первого лица, но продолжим.
Сейчас мы реализуем переключатель прицеливания, при нажатии на правую клавишу мыши включится один режим камеры а при отпускании клавиши включится другой режим.
Для этого используем функции:

Дорбавим это в код

Если скомпилируете и запустите игру то заметите, что при нажатии на правую клавишу мыши из пушки уже не вырывается молния, это значит, что мы заменили своими функциями StartAltFire и StopAltFire
стандартные унреаловские и можно внутри этих функций реализовать свою собственную стрельбу или анимации персонажа при прицеливании.

Теперь мы будем менять значение переключателя FlagCamera, в функции GetPlayerViewPoint, в зависимости от его значения будут срабатывать режимы камеры (прицеливание и обычное состояние)

Вот и создали два режима камеры прицеливание и обычное состояние, в дальнейшем можно разделить эти режимы на под режимы например прицеливание + бег.

Теперь создадим две переменные с плавающей точкой

Еще мы впишем функцию UpdateRotation для обновления TurnRot и YawRot

Теперь нужно сделать персонажа видимым и убрать версию пушки для первого лица.
Сделать персонажа видимым

Вроде бы все приготовления закончены и можно приступить к самой интересной части, непосредственно к части где мы управляем камерой.
Первым делом нужно добавить счетчик поворота камеры.
Создадим переменную YawRotSch типа float
И добавим фрагмент кода

Следующим этапом будет отодвигание камеры немного назад, эта точка будет смещенной осью вращения камеры.

Вектор направления персонажа вычисляется как вращение по оси Yaw (мах 65536) деленное на 10430(то же что один радиан 65536 / 6,28) и получится угол в радианах который мы берем с обратным знаком.
И от всего этого берется синус или косинус в зависимости от оси перемещения.
В УДК немного по другому вычисляются градусы и радианы

Если Вы откомпилируете и запустите игру то увидите, что камера на мышь не реагирует но зато при нажатии и отпускании правой клавиши мыши камера стает немного сзади персонажа.

Так же добавим фрагмент кода который будет использовать углы поворота TurnRotSch
и YawRotSch

Теперь Расшифруем.
Здесь выполняется перемещение камеры вокруг персонажа с определенным радиусом,
Радиус подбирается какой понравится, я выбрал множитель 60.
Как это работает:
Перемещение камеры происходит учитывая прошлое значение out_Location
Вот фрагмент

out_location.x и out_location.y позиция камеры в горизонтальной плоскости
out_location.z её позиция в вертикальной плоскости
и она движется, как бы описывая сферу.

В Dead Space в обычном режиме камера отклоняется немного правее персонажа, это можно реализовать следующим фрагментом кода

Скомпилируем, и видим, что уже что то нарисовывается.
Теперь займемся режимом прицеливания.
В режиме прицеливания камера смотрит вдоль руки и приближенная к персонажу.

Добавим еще фрагмент кода.

Теперь введем переменную с плавающей точкой out_sch
И фрагмент кода

Добавим фрагмент кода

первая строчка реализует поворот камеры к персонажу со смещением по вертикали на vect(0,0,50),
значение подбирал примерное, чтоб камера смотрела на голову.
Вторая строчка это поворот камеры по вертикали на накопленный в out_sch градус.
Так же нужно добавить смещение в правую сторону камеры для выглядывания из за спины
И вращение по горизонтали.

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

Скомпилируем и смотрим, что почти похоже на то что нам нужно, осталось реализовать переходы между режимами.
Для переходов между режимами введем две Булевы переменные FlagStopCamera и FlagStartCamera
И две переменные типа rotator FireRot и StopRot;
В defaultproperties для переменных FlagCamera и FlagStopCamera
присвоим значение true
FlagCamera нужен, чтоб при включении игры автоматически включался режим обычной камеры
Еще введем фрагмент кода в обычный режим камеры

Еще добавим фрагмент кода в конец обычной камеры

FireRot – сохраняет в себе углы поворота камеры которые присваиваются персонажу
StopRot — тоже сохраняет углы поворота для использования их в режиме прицеливания
Flagstartcamera – после первого использования сразу отключает флаг что прошлым был режим прицеливания камеры

Так же в начало режима прицеливания добавим код

В конец режима прицеливания добавим кусок кода
FireRot = Pawn.Rotation; — сохраняет углы поворота камеры
FlagStopCamera = true; — говорит обычному режиму, что прошлым был режим прицеливания
FlagStartCamera = true; — при повторном прицеливании говорит режиму прицеливания, что прошлым был режим прицеливания и что ненужно делать переход.
Так же добавим высоту для камеры, чтоб она смотрела как из за головы.

Если откомпилируем и запустим то увидим, что у нас есть вид камеры от третьего лица. Досвидания.

Очередь просмотра

Очередь

  • Удалить все
  • Отключить

Хотите сохраните это видео?

  • Пожаловаться

Пожаловаться на видео?

Выполните вход, чтобы сообщить о неприемлемом контенте.

Понравилось?

Не понравилось?

Текст видео

Mouse sluggish or slow? This is the sensitivity fix on how to get rid of the mouse lag in Dead Space.

UPDATED: November 6, 2017 (see the "UPDATE" line at the very end of this description box).

How to Improve Your Games’ Graphics and/or Performance via the Nv >
If you’re using ATI-AMD cards:

You turn on Vsync in AMD’s Catalyst control panel. Here’s how to find it:

"Open the AMD vision engine control center, click the gaming tab along the left side, click 3d application settings and scroll down until you see the words ‘wait for vertical refresh.’" — Razaice

1. Turn on AMD Catalyst’s "wait for vertical refresh."
2. Tun off vsync in Dead Space’s option.

Added Oct 12, 2015:

If the video didn’t help you, try these:

1. Download FRAPS (spelled that way; dunno why it’s in all caps) from: http://www.fraps.com/. See if it really is a mouse lag issue and not a framerate one. If your FPS drops to 34 and below, then your PC might not be able to handle the game.

2. Defrag your hard drive—Sometimes if you’ve installed too many games at one time, your HDD becomes so fragmented, stuttering occurs.

3. It’s been a long time since I’ve played this game but check to see if this game has "Mouse Smoothing" as an option. Tick and untick it and see which setting (enabled/disabled) suits you the most.

4. Your mouse acceleration setting may be what’s causing you problems. Try this fix: http://www.tomshardware.com/faq/id-19.

5. Lastly, see my Nv control panel.)

Isaac does move sluggishly compared to most third-person characters. This is a design feature. Remember Resident Evil 1 and how the sluggish controls made the game scarier? It’s kind of like that.

UPDATE: If the option is available and you’ve an Nvidia card and the option is available, set the control panel’s Vsync setting to "Fast" and see if the game performs better. That has worked wonders for me.


[an error occurred while processing the directive]
Карта сайта