Камера от третьего лица в UDK: В UDK уже есть отличная камера от третьего лица. Осталось только заставить ее работать.
Сначала создадим класс своей игры. Назовем ее TPSGame.
Укажем что мы будем использовать свой PlayerController класс, а также свой Pawn класс. Дефолтный UTPawn заточен под игру от первого лица. Ставим значение bDelayedStart в false, чтобы игрок не ждал начала матча. Это нужно для однопользовательских игр.
Далее нужно изменить настройки в DefaultGame.ini.
Итак вкратце:
Сначала создадим класс своей игры. Назовем ее 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) класс описывающий режим камеры.
Использование статьи возможно только с указанием сайта первоисточника и сайта переводчика rusudk.ru
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.