Сначала создадим класс своей игры. Назовем ее TPSGame.
Укажем что мы будем использовать свой PlayerController класс, а также свой Pawn класс. Дефолтный UTPawn заточен под игру от первого лица. Ставим значение bDelayedStart в false, чтобы игрок не ждал начала матча. Это нужно для однопользовательских игр.
class TPSGame extends GameInfo; defaultproperties { bDelayedStart=false; PlayerControllerClass=class'TPSPlayerController' DefaultPawnClass=class'TPSPawn' }Внимание! после того как мы отнаследовались от GameInfo карты от UT3 скорее всего с нашей игрой работать не будут. Можете попробовать отнаследоваться от UTDeathmatch или UTGame.
Далее нужно изменить настройки в DefaultGame.ini.
[Engine.GameInfo] DefaultGame=TPSGame DefaultServerGame=TPSGame PlayerControllerClassName=TPSPlayerControllerЛистинг файла TPSPawn.uc. Тут мы используем стандартные ассеты доступные в UDK для того, чтобы получить 3D модель робота.
class TPSPawn extends GamePawn config(Game); simulated function name GetDefaultCameraMode( PlayerController RequestedBy ) { return 'ThirdPerson'; } defaultproperties { Components.Remove(Sprite) Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment ModShadowFadeoutTime=0.25 MinTimeBetweenFullUpdates=0.25 AmbientGlow=(R=.01,G=.01,B=.03,A=1) AmbientShadowColor=(R=0.10,G=0.10,B=0.10) LightShadowMode=LightShadow_ModulateBetter ShadowFilterQuality=SFQ_High bSynthesizeSHLight=TRUE End Object Components.Add(MyLightEnvironment) Begin Object Class=SkeletalMeshComponent Name=InitialSkeletalMesh CastShadow=true bCastDynamicShadow=true bOwnerNoSee=false LightEnvironment=MyLightEnvironment; BlockRigidBody=true; CollideActors=true; BlockZeroExtent=true; PhysicsAsset=PhysicsAsset'CH_AnimCorrupt.Mesh.SK_CH_Corrupt_Male_Physics' AnimSets(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_AimOffset' AnimSets(1)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale' AnimTreeTemplate=AnimTree'CH_AnimHuman_Tree.AT_CH_Human' SkeletalMesh=SkeletalMesh'CH_LIAM_Cathode.Mesh.SK_CH_LIAM_Cathode' End Object Mesh=InitialSkeletalMesh; Components.Add(InitialSkeletalMesh); }Наконец файл TPSPlayerController.uc в котором мы указываем какой класс камеры использовать для камеры игрока.
class TPSPlayerController extends GamePlayerController config(Game); defaultproperties { CameraClass=class'TPSPlayerCamera' }Теперь собственно класс игровой камеры TPSPlayerCamera.uc. Метод FindBestCameraType возвращает камеру которую мы хотим использовать.
class TPSPlayerCamera extends GamePlayerCamera; protected function GameCameraBase FindBestCameraType(Actor CameraTarget) { return ThirdPersonCam; } defaultproperties { ThirdPersonCameraClass=class'TPSThirdPersonCamera' }Листинг TPSThirdPersonCamera.uc. Очень веселый листинг. =)
class TPSThirdPersonCamera extends GameThirdPersonCamera; defaultproperties { ThirdPersonCamDefaultClass=class'TPSThirdPersonCameraMode_Default' }Ну и наконец последний файл TPSThirdPersonCameraMode_Default.uc.
class TPSThirdPersonCameraMode_Default extends GameThirdPersonCameraMode_Default; var float FOV; function float GetDesiredFOV( Pawn ViewedPawn ) { return FOV; } defaultproperties { FOV=80.f; PawnRelativeOffset=(x=30,y=10,z=-40) BlendTime=0.3 }Компилим, запускаем и радуемся.
Итак вкратце:
- PlayerCamera это всего лишь обертка содержащая в себе все возможные типы камер которые у вас будут использоваться. В методе FindBestCameraType вы сможете выбирать тип камеры который нужно использовать в данный момент.
- GameCameraBase (в нашем случае GameThirdPersonCamera) это и есть класс описывающий функциональность камеры. Каждый тип камеры может иметь несколько режимов.
- GameThirdPersonCameraMode (в нашем случае GameThirdPersonCameraMode_Default) класс описывающий режим камеры.
23 комментария:
Спасибо!
Интересная статейка. А нет ли желания перевести например вот это
udn.epicgames.com/Three/MaterialsTutorial.html
или ещё какую-нибудь статейку отсюда
udn.epicgames.com/Three/UDKContentCreationHome.html
Там очень много терминов... Сложно понять многое...
Переводить нет никакого желания. Незнание английского (хотя бы технического, который не так сложен как кажется) рано или поздно заведет в тупик. Я учил английский очень просто - садился и заставлял себя читать английские тескты со словарем 2-3 часа в день. А сейчас есть Google Translate. =)
Привет. Только начал изучать UDK. Не совсем понятно как начать проект под single player. На оффе не могу разобраться что куда прописывать. Не подскажешь?
Single Player отличается от Multi Player только разными игровыми правилами. Смотри начало статьи там где создается TPSGame и TPSPlayerController.
я когда все зделал и запускаю в едиторе левел то камера просто летает по уровню(((
а в игре вообще ничего неизменилось(((
что зделать?
может я делаю ошыбку при компилировании???
Попробуй запускать свою карту не из эдитора.
ксли не из едитора то никаких изминений нет((((
все как было!
Буду дома, еще раз перепроверю. Я тут вносил небольшие изменения.
ок!
ну как там?
проверил?
у тебя работает?
Да. Все работает.
А откуда это? Это перевод?
спасибо, очень интересно и позновательно, а нет ли желанеия использовать видеоматериал) ну тобто делать видео уроки!
Это не перевод. Это мои художества. По видеоурокам я подумаю. Посоветуйте прогу для снятия видео с экрана чтоб без переконвертов на ютуб ложить. И приветствуются предложения по темам для новых статей.
Camtasia Studio
"Программа для создания презентаций и интерактивных обучающих видеоуроков. Camtasia Studio может осуществлять захват изображения экрана и сохранять эту информацию в видеофайл. Весь процесс записи происходит в режиме реального времени. Для максимального удобства в программе есть возможность создание интерактивного оглавления. С помощью Camtasia Studio можно создавать интерактивные файлы справки, проводить демонстрацию новых возможностей программ, записывать демонстрационные ролики приложений, компьютерных игр и т.д."
Рекомендую
Хотелось бы увидеть уроки по созданию уровня с нуля, по изменению стандартного UI
Я программер и по левел дизайну уроки не осилю. =)
У меня таже проблема .. камера летает как в режиме спектратора и даже HUD не рисуется .. уже и над ини файлами издевался .. таже фегня .. думаю камера таки изменилась а вот модель робата ..
Newman, нам как раз программера не хватает, не хотите ли поделиться опытом тут unreal-level.ru?
Неработает камера просто летает поуровню, всё сделал как в статейке
Вот на сайте игры The Ball есть скрипты для камеры от 3 лица но в них ошибка, при нажатии в игре "F" робот падает потом жмём оптять F он вообще изчезает оно ток оружие видно
у меня одна проблема,как мне сделать так что бы камера была немного ниже,что бы весь персонаж входил в обзор, а то видно только пол тела и еще чтоб была смещена немного левее чтобы персонаж был по центру
Здраствуйте! Спасибо за туториал! Я так понял
"PawnRelativeOffset=(x=30,y=10,z=-40)"
это Ваша собственная функция, и я хочу попросить Вас поподробней рассказать о ней, а то не получается от центровать положение камеры.
Отправить комментарий