关键词不能为空

当前您在: 主页 > 英语 >

UDK入门教程

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-01 02:04
tags:

-

2021年3月1日发(作者:安蒂亚)


UDK


入门教程


--


第 一章:第一节



建立一个空工程


-




第一步:


< /p>


首先,我们从



主页下载最新版(此文以< /p>


UDK-2010-01


版为例)



安装完成后,我们找到


UDK-2010-01

文件夹,对其复制粘贴创建一个副本,将目录名改成你喜欢的名字,比如我创建


为< /p>


KingdomWorld


,以后文章都以


KingdomWorld


为例。



(


以下步骤将对其进行大量修改,创建副本的目的是为了保留原版


)



第二步


2.1.


进入


KingdomWorldDevelopm entSrc


目录,找到


UTGameContent


文件夹将其全部删除。



2.2.


进入


KingdomWorldDevelopmentSrcUTGame


目录,


删除



以 及


Classes


文件夹下面的所有文件,


是保留


Classes


文件夹。



2.3.


进入


KingdomWorldDevelopmentSrcUTGameClasses


目录,创建一个


do_not_


,键入以下内容



1.



class do_not_delete extends object;



2.


defaultproperties


3.


{


4.


}


复制代码



创建此文件的目的是因为让


UTGame


目录顺利编译成


UTGame.u


文件,


因为


UDK


免费版的原因,


启动编辑器和游戏

< p>
他会自动寻找


UTGame.u


文件,所以此包无 法全部删除(除非你有源代码级授权,就可以修改


UTGame


目录指向)




第三步



进入


KingdomWorldUTGameContent


目录,删除所有文件

< p>



文件和


Kingdo mWorldUTGameContentUIUI_Fonts_


文件除外,这两个是 系统需要的底层


pak


包,字体和空


场景,最好别删。




第四步



由 于我们已经删除了所有关于原始的


UTGame


的资源和代码文 件,


现在的文件夹已经相对于来说是非常干净的了,



么,我们需要重新制作一个类似于


c++


里面的


main


函数,因为


UTGame


目录已经被我们咔嚓掉了。他的引用不到。



4.1.


来到


KingdomWorldDevelopme ntSrc


目录,创建文件夹


KWGame,

< br>在其创建


Classes


文件夹



4.2.


进入


KingdomWorl dDevelopmentSrcKWGameClasses


目录



4.3.


创建一个

< p>


,键入以下内容



1.



class KWInfo extends GameInfo;



2.


3.


4.


5.


6.


DefaultProperties


{




//


设置角色控制类





PlayerControllerClass=class'erController'


}


复制代码



4.


创建一个



,键入以下内容



1.



class KWPlayerController extends GamePlayerController;



2.


DefaultProperties


3.


{


4.


}


复制代码



第五步



我们已完成了创建了我们自己 的初始化函数


KWInfo


和控制类函数


KWPlayerController,


那么我们需要吧编辑器的引用


指向他们。



5.1.


进入


KingdomWorldUTGameConfig


目录。< /p>




5.2.


打 开



文件。找到


[fo]


中的



tGame


并修改成< /p>


DefaultGame=


tServerGame

< p>
并修改成


DefaultServerGame=


ControllerClassName


并修改成


Play erControllerClassName=erController



第六步



在这里,我们基本完成了整个 目录的精简,只留下我们需要的部分了,最后,我们需要对整个工程进行优化,去掉不


存 在和不需要的包的引用。加入我们的引用目录。



6.1.


进入


KingdomWorldUTGameConfig


目录。




6.2.< /p>


打开



文件。找到


[Engine]


中的



tPacka ges


并修改成


ModEditPackages=KWGam e(



ModEditPackages


最前面的


;


去掉


)


6.2.2.


删除


+EditPackages=UT GameContent


这句



6.2 .3.


找到


[rdUser]


中的


MyDocumentsSubDirName


并修改成

< p>
MyDocumentsSubDirName=KWGame



========2010-01-29


修改新增

==============


6.3.


打开

< p>


文件。找到


[raction]

< br>中的



Name


并修改为


UISkinName=tSkin



6. 4.


打开



文件。找到

< br>[]


部分。



6.4.1.



[]


部分改为如下


(


其实就是吧


UTGame


改成


Engine,


并且去掉前缀


UT)



1.



[]



2.


ConsoleClassName=e


3.


EditorEngine=orEngine


4.


UnrealEdEngine=alEdEngine


5.


DefaultOnlineSubsystemName=SubsystemPC


6.


UseStreaming=True


7.


ScoutClassName=


8.


GameViewportClientClassNa me=ewportClient


9.


;DefaultPostProcessName=FX_Process


10. bOnScreenKismetWarnings=true


11. TimeBetweenPurgingPendingKillObjects=30


12. TinyFontName=nt


13. MediumFontName=MultiFont'UI_Fonts__Medium'


14. LargeFontName=MultiFont'UI_Fonts_..MF_Large'


15. SubtitleFontName=MultiFont'UI_Fonts__Medium'


16. AllowShadowVolumes=False


17. LocalPlayerClassName=layer


18. MaxParticleResize=1024


19. MaxParticleResizeWarn=10240


20. DemoRecordingDevice=cDriver


21. bEnableColorClear=TRUE


复制代码



(


例如


ConsoleClassName=ole


改为


ConsoleClassName=ole)


6.4.2.


找到


[oreClient]


部分删除节点所有文件,新增一行



+PlayerD ataStoreClassNames=Store_OnlinePlayerData


如下:



1.



[oreClient]



2.


+PlayerDataStoreClassNames=Store_OnlinePl ayerData


复制代码




6.4.3.


找到


[Store_Onli nePlayerData]


改为如下


(


其实就是吧


UTGame


改成


Eng ine,


并且去掉前缀


UT)



1.



[Store_OnlinePlayerData]



2.


ProfileSettingsClassName= ProfileSettings


3.


FriendMes sagesProviderClassName=Provider_OnlineFriendMessag es


4.


FriendsProviderClassNa me=Provider_OnlineFriends


复制代码




6.4.4.


找到


[pPackages]

改为如下



1.



[pPackages]



2.


3.


4.


5.


6.


7.


8.


9.


bSerializeStartupPackages FromMemory=TRUE


bFullyCompressStartupPackages=FALSE


Package=DefaultUISkin


Package=EngineMaterials


Package=EngineSounds


Package=EngineFonts


Package=EngineBuildings


-Package=SoundClassesAndModes


复制代码




6.4.5.


找到


[esToForceCookPerMap ]


去除所有节点。




6.5.


打开



文件。找到


[nfo]


部分。



6.5.1.


找到


EmitterPoolClassPat h


并修改为


EmitterPoolClassPath=


6.5.2.


找到


DecalManage rClassPath


并修改为


DecalManagerCl assPath=



7.


删除


KingdomWorldUTGameConfig


下所有

< p>
UT


开头的


ini


文件,


并且重新进入编辑器,


就会自动生成


U T


开头的


ini



========2010-01-29


修改新增


==============



总结:



至此,你已经完成

< p>
UDK


目录的精简,并且删除了


UTGame


的全部内容,在接下来的章节,我会一步步介绍如何在这


个精简工程 中,全部制作属于自己的东西



这时候你打开

< br>UDK


编辑器,可能需要等待一会的时间,因为他在重新编译一些东西,耐心等待 一下就可以了。




下一章节预告【跟 着楼主做游戏之】《建立一个空工程


-


下》建立一个空的


VS


工程,并且调试


KWGame

< p>
项目。



(请大家提前安装


vs2008


或者


vs2005


,最 好使用


vs2008



vs2003< /p>


是不可以的,因为有个脚本调试插件,他只能在


vs2008


或者


vs2005


中运行)



另外本文的大部分内容,阅读者最好有一定的编程基础,多以代码为例讲解。






UDK


入门教程


--


第一章:第二节



建立一个空工程


-





如果你确定看完了


《建立一个空工程


-


上》


这篇,并且没有问题,那么接着和我学习把。




第一步:



首先确保机器已经安装


vs2008(


或者

vs2005


,以后文章都以


vs2008


为例


),


然后安装


nFrin ge


(nFringe


的最新版


/? title=Tools:UnrealScript_Studio:Releases


可以在这里找到


,



前附件传的是< /p>



也是截止发帖时候的最新版,此插件有


3 0


天使用限制,我先看大家的下载次数吧,至少


30

< p>
天内我暂时不会公开破解补丁


)



第二步:



2.1.

< br>打开


VS2008


,选择左上角菜单中的【文件】


--


【新建】


--


【 项目】



2.2.


选择


UnrealEngine 3 Licensees Project


2. 3.


检查【创建解决方案的目录】的勾是否已被去掉。



2.4.


位置填写为



安装目录


:KingdomWorldDevelopmentSrcKWGa me


2.5.


名称为


KWGame(


注意大小写


),


点击确定


.


2.6.


打开目录


Ki ngdomWorldDevelopmentSrcKWGameKWGame


将其所 有文件剪切至


KingdomWorldDevelopmentSrcKWGame


2.7.


打开目录


KingdomWo rldDevelopmentSrcKWGame


删除


KWG ame


文件夹


(


此时里面那个文件夹应 该没有文件,都被你剪切到上面



)


2.8.


打开目录


KingdomWorldDevelopm entSrcKWGame


使用


vs2008

< br>打开



工程




第三步:



3.1.


选择左上角菜单中的【项目】


--


KWGame


属性】



3.2.


设置如下参数。




General




Game


中的


Target Game



UnrealEngine 3 Mod


UCC Path




安装目录


:


Reference Source Path




安装目录


:KingdomWorldDevelopmentSrc


Build




Script Outputs


中的


Manually set UCC output directory




安装目录


:KingdomWorldUTGameScript


Debug




Start Action


中的


Start Game Executable




安装目录


:


Load map at startup


为你的地图文件名,如我们为默认上次没删的


< /p>


则填写为


EnvyEntry


Start with speacified game




勾上


Enable unpublished mods


勾上


Open log window at postions


并且设置为


0 Left,0 Top



第四步:



4.1.


进入目录


KingdomWorldDevelopm entSrcKWGame


,将


Classes


文件夹改名为


Classes1


4.2.

< p>


vs2008


里选中


K WGame


工程点击右键,选择【添加】


--

< br>【新建文件夹】




4.3.< /p>


讲其文件夹名命名为


Classes


4 .4.


关闭


vs2008


,进入目录< /p>


KingdomWorldDevelopmentSrcKWGame

< br>,删除


Classes


文件夹,将


Classes1


改名回


Classes

< br>(


因为在上篇文章里这个文件夹下有


2

< br>个文件,先改名是为了防止


vs2008


里创建同名文件 夹失败


)


4.5.


打开目录


KingdomWorldDevelopmentSrcKWGame


使用


vs2008


打开



工程



4.6.


< p>
vs2008


里选中


KWGame


工程中,选中


Classes


目录,点击右键,选择【 添加】


--


【添加现有项】



选择


KingdomWorldDevelopmentSrcKWGa meClasses


目录下的





(上篇教程中创建)




4.7.



vs2008


里选中


KWGame


工程


(


选择工程路径不是


Classes< /p>


文件夹


)


点击右键,选择【添加】


--


【添加现有项】



选择


KingdomWorldUTGameConfig


目 录下的





(< /p>


特别注意添加文件的时候,


在窗体那里添加按钮旁


边有个小三角,选择添加为链接)




总结:



至此,你可以在


VS2008


中调试你的


UDK

项目了,在下面章节中,我们将会对这个工程继续讲解。来做一个类似大菠萝的视角的游戏。





UDK


入门教程


--


第二章:第一节



创建一个自定义视角的游戏


-




在以上的章节中,我们已经创建了一个可以调试的

< br>UDK


空环境,并且保证除了底层


Engine


部分,其他的资源都已经剔除掉了,在这里,


我们接着开发属于自己的游 戏。





我 们先吧制作好的场景(可以参考其他教程或者等待其他人更新场景制作教程,在此系列就不涉及大部分

< p>
UDK


编辑器部分的操作,本系


列留给程序员)放 入


KingdomWorldUTGameContentMaps

中。



附带一个我随便制作的场景:




进入


KingdomWorldDevelopmentSrcKW Game


目录,打开



工程。

< p>


修改工程属性的


Debug


Start Action


中的


Load map at startup< /p>



1001(


地图名

)



保存


(ctrl+s)


好后,我们可以在工程里按下菜单里的【调试】


--


【启动调试】


(F5)


来看效果。



如果能正确显示如上画面后,代表你的


vs


工程配置没有问题了。



接下来我们需要按下键盘的



键,呼出控制台,输入


exit


并按下回车退出游戏界面




要注意的是,这时候虽然游戏关闭了,但是你的


VS


工程并没有关闭,



我 们需要点击菜单里的【调试】


--


【停止调试】


(Shift+F5)


来停止工程。




现在我们在


vs

工程里双击打开


Classes


里的



进行编辑。



可以发现,我们编写的


KWPlayerController

类实际上继承了


GamePlayerController


类。




GamePlayerCo ntroller


类是做什么的呢?(具体我们可以参考


API


手册


,


文章末尾的附件)



其实是一个角色控制类。这么说吧,比如像在控制台里面的命令,鼠标,键 盘的操作,全部都在这个控制类。



你可以吧他看成一个


Input


控制类。



所以,当你的鼠标点击的时候,我们可以在这个类里编写代码来实现你需要的功能。



在学习写第一个类的时候,我们可以加一小段调试代码,从而观察环境里的这个类是否被 运行。



3.1.


新增一个

< p>
PostBeginPlay


方法



1.



simulated event PostBeginPlay()



2.


3.


4.


5.


{




ginPlay();




`Log(


角色控制类运行



}


复制代码




新增代码后的效果:




我们通过手册可以看到


ayerController


的父类是


Controller



Controller


中,则有一个


simulated


event


PostBeginPlay

,所以我们可以重写,他也会被自动调用


(


这是

< p>
UDK



uc


脚本


机制


)


其实追溯源头应该是



,而在此类有一个


event PostBeginP lay();


在他继承的类中重写,则会被自动调用。



而大部分类的主父类都集成了它,基本上类在运行后,都会首次寻找是否有

PostBeginPlay


方法来执行。你可以吧他看做这个类的构造函


数吧。



因为重写了他,因为我们并不知道继承 的这个类的上面那些乱七八糟类里同样方法里做了一些什么事情,所以我们试用


supe r


来调用父类


的这个函数。在后面再插入我们自己需要编写的代 码。













< p>



DefaultProperties





< p>


PlayerControllerClass






经< /p>









< p>


erController


里。所以这里我们新 做的控制类则会被调用。



在这里说一下,由于我们在



里修改的


[fo]


中的


DefaultGame


指向到



类,那么


KWInfo


你可以


看做整个游戏的


main


函数。




PlayerControllerClass


是默认的用户控制类的指针


(


其他指针可以参考


API


,后面也会对一个个指针进行讲解)


而我们需要做的就是新建一个类继承他,然后在


main


里绑定他。



现在,我们可以按下


F5


,看一下左边日志窗口的提示信息。




如果你的界面如上图所示,那么你的游戏已经成功调用了


erController


类。



很激动吧。你已经完成了你的第一个类的编写,并且通过


VS

< p>
已经调试出结果了。



还记得我们之前的步骤吗? 按下键盘上的



键呼出控制台,输入


ex it


,并且在


vs


里点击停止调试就可 以回到我们的界面来继续编码。




现 在你已经基本搭建好一个良好的


UDK


编写代码环境了,在下一 章节,我们将会继承一个新的


Camera


类,通过

< p>
KWInfo


来绑定,来实


现我们自己的游戏界面 的视角。



本文附带源码:



文章中所说的


API


手册:

/Unreal+Script+






UDK


入 门教程


--


第二章:第二节



创建一个自定义视角的游戏


-




在上一章节中,我们对自定义的


GamePlaye rController


类进行了调用,那么接着遨游我们的虚幻之旅吧。




第一步:


< p>
我们先把制作好的角色模型(可以参考其他教程或者等待其他人更新模型制作教程,在此系列就不涉 及大部分


UDK


编辑器部分



的操作,


本系列留给程序员)


放入


KingdomWorldUTGameContentCharactersHeroesAchi lles


中。


(KingdomWorldUTGameCo ntent


后的路径


随便你定义,你直接放在

< br>Content


里也行,这样做的目的仅仅是便于管理而已)


附带一个我随便制作的模型:




第二步:



打开工程。在


Classes


文件夹里添加一个


KWCamera


类。并编写如下代码



1.



class KWCamera extends Camera;



2.


3.


4.


5.


6.


simulated event PostBeginPlay()


{




ginPlay();




`Log(


摄像机类运行



}


复制代码




我们编写了一个继承了摄像机类的的类,从而完成我们自己的摄像机视角。




第三步:



找到我们之前编写的



文件,在


Defa ultProperties


内添加一行



1.






CameraClass=class'KWCamera'



复制代码




这里要特别说一下,


DefaultProperties


可以 当做是每个类的函数初始化的地方,这里是不需要分号来换行的



通过


CameraClass=


来赋值指针为我们编写的类从 而重载。




这时候可以通过


F5


来调试一下,看看日志窗口


`Log(


摄像机类运行



这句话是否正确执行。




在控制台输入


e xit


退出游戏界面,记得在


vs


里停 止工程,我们来做一个出生类。




第四步:



打开工程。在


Classes


文件夹里添加一个


KWPawn


类。并编写如下代码



1.



class KWPawn extends GamePawn;



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.


42.


43.


44.


45.


46.


47.


48.


49.


50.


51.


52.


53.


54.


55.


56.


57.


simulated event PostBeginPlay()


{




ginPlay();




`Log(


出生类运行



}



simulated function name GetDefaultCameraMode( PlayerController RequestedBy )


{




`Log(


开始获取默认摄像机模式





`Log(


设置为

< p>
Isometric


模式





return 'Isometric';


}



defaultproperties


{


//


删除场景内原有的元素



(Sprite)


//


创建 动态环境光照对象


--


用于


Initi alSkeletalMesh


对象


(


使用


LightEnvironment


成员赋值


)


Begin Object Class=DynamicLightEnvironmentComponent Name=InitLightEnvironment




ModShadowFadeoutTime=0.25




MinTimeBetweenFullUpdates=0.2




AmbientGlow=(R=.01,G=.01,B=.01,A=1)




AmbientShadow Color=(R=0.15,G=0.15,B=0.15)




LightShadowMode=LightShado w_ModulateBetter




ShadowFilterQuality=SFQ_High




bSynthesizeSHLight=TRUE


End Object



//


添加进组件库



(InitLightEnvironment)



//


创建骨骼模型



Begin Object Class=SkeletalMeshComponent Name=InitialSkeletalMesh




CastShadow=true




bCastDynamicShadow=true




bOwnerNoSee=false




//


使用组件库里动态创建的环境 光照对象


InitLightEnvironment




LightEnvironment=InitLightEnvironment;




BlockRigidBody=true;




CollideActors=true;




BlockZeroExtent=true;




//


物理引擎包





//PhysicsAsse t=PhysicsAsset'Achilles_es_Full_Apa'




//


动画包


--


序号


0




//AnimSets(0)=AnimSet'Achi lles_es_Full_Aas'




//


动画模板





//AnimTreeTem plate=AnimTree'Achilles_es_Full_Aat'




//


模型文件





SkeletalMesh= SkeletalMesh'Achilles_es_Full_Amesh'


End Object



//Mesh

< br>来自


GamePawn


的基类成员


(


貌似是设置出生角色


)


Mesh=InitialSkeletalMesh;


//


添加进组件库



(InitialSkeletalMesh);


}


复制代码




这段代码我说明两个地方。



一个是< /p>


defaultproperties


里面的成员,这个我是参考 原本的


UDK-


文件复制过


来。并且 我对如上代码做了相应的注释。由



于我提供的资源包里只有模 型文件。所以其他资源的属性我都注释掉了。




另外一个是


simulated function name GetDefaultCameraMode( PlayerController RequestedBy )


这个方法会在


Camera


启动后 调用得到。



之所以我传入


return 'Isometric';


是因为通过观察


< br>里面的


UpdateViewTarget


方法,并没有 这么一个字符串,所以我是随便写的,你也可以随便写一个,在后面我们继承的


Came ra


类中,重写



UpdateVie wTarget



法取得值来进行处理。所以这里的

< p>
'Isometric'


你改成


'xx','yy ','bb'


都可以




第五步:



找到我们之前编写的



文件,在


DefaultPropertie s


内添加两行



1.






bDelayedStart=false



2.




//


设置出生类



3.




DefaultPawnClass=class''


复制代码




DefaultPawnClass


绑定到我们修改的


Pawn


里,这里不做多说明。



< p>
特别说明下


bDelayedStart


成员变量


,bDelayedStart


来自继承的


GameInfo


类(有兴趣的可以去



里看这个变量调用的一些地方做了什么)


bDelayedSt art


在此刻是非常重


要的,因为我们重写了游戏,而不是使 用游戏内的


Kismet


来进行绑定,那么此时游戏内是没有< /p>


Pawn


的,我们需要告诉引擎来调用我们


的出



生类,而不是等待,那么,把他设置成


False


,游戏引擎将不再等待角色的产生,不再延迟而立即产生了我们的< /p>


Pawn


(当然,如果


你需要游戏做过场 动画或



者摄像机漫游的时候,以及在登陆界面的时候


-


后面说,可以做一个方法来设置他的值将他设置为

True




< br>这时候,我们进行调试,可以发现我们编写的类已经全部正确调用,并且通过键盘的


WSAD


键进行移动后,发现我们设置的角色已经绑


定我们的 摄像机一起移动了。




第六步:



现在我们已经成功了部署整 体架构,还记得我们之前的那个


'Isometric'


吗?我 们现在就得来处理它,完成最后一步,实现自己的摄像机模


式。




找到我们之前编写的



文件,对继承的


Camera


类点右键,选择转到定义 。



(


或者打开


)



按下键盘的


Ctrl+F

< p>
找到


UpdateViewTarget


方法,复 制进我们的



因为我们要在中间部分修改,所以不好直接调用< /p>


ViewTarget()


了。




找到


switch( CameraStyle )


部分,添加我们前面定义的那个


' Isometric'



case



1.



/************* ************************************************** **



2.


3.


4.


5.


6.


7.


8.


9.


10.


11.


12.


13.


14.


15.


16.


17.


18.


19.


20.


21.


22.


23.


*


自定义摄像机模式开始


< p>
******************************************** *********************/



//


从自定义的


Pawn



(KWPawn)



GetDefaultCamer aMode


传来




case 'Isometric':




//


修改摄像机位置





= (-55.0f


*DegToRad) * RadToUnrRot;




= (0





*DegToRad) * RadToUnrRot;




=


(30.0f



*DegToRad) * RadToUnrRot;





//


修改摄像机的位置和角色的偏移





Loc.X = on.X - 64;




Loc.Y = on.Y - 64;




Loc.Z = on.Z + 156;



//


距离位置









//


设置缩放





Pos = Loc - Vector(Rot) * FreeCamDistance;




on = Pos;




on = Rot;




break;


/******************* **********************************************


*


自定义摄像机模式结束


< p>
******************************************** *********************/


复制代码





由于复制过来的代码使用了一个成员变量


= DefaultFOV;


所以,在


Camera


类里,找到赋值他的地方添加进我们重写的


KWCamera


类里。添加


DefaultProperties


方法 。这样方便我们以后如果对


这个值进行修改而不动底层的东西。



1.



DefaultProperties



2.


{


3.




DefaultFOV=90.f


4.


}


复制代码




/************************************************* ****************


*


* UpdateViewTarget()


方法介绍



*


*


这个类继承了基类的


Camera


摄像机类


.


*


当这个类创建的时候,则会自动调用基类


GamePawn


的虚方法


GetDefaultCa meraMode(


需要重载


)(ps.


其实


UE3



,

没有虚函数


,


他们


extends



,


都属于重写


,


本身他就有这方法


,


可以进基类的


uc


文件看他怎么写的


).


*


如果想自己创建新的摄像机模式,则需要重载

< p>
GamePawn



GetDefaultCam eraMode


的方法


.


* /** Camera Mode */var Name CameraStyle;


* Camera


类里的


Camer aStyle


成员变量,就是通过


GamePawn

< p>


GetDefaultCameraMode


实 现的。


(ps.


我觉得这个方法名用


S et


更合


适,不过他不是方法,是需要继承的,所以

< p>
Get


也没错


)


*


我在继承的


GamePawn



(KWPawn)


里返回了


Isometri c,


那么


,


我们在


里,找到


UpdateViewTarget


方法,将其复制过来


(



实 也可以不复制,复制的好处是原始的摄像机模式保留


)


*



switch( CameraStyle )


的地方添加对


Isometric


的处理(


Isometric


随便定义,不过你怎么


ca se


的就在你定义的


Pawn


里怎么< /p>


Get


*


在这个类里可以设置



*


这是一个可以简单使用且有品质保证的摄像机类上的基本功能,增加或者说是扩展了另一款同等级


GameCamera


的功能



****************************************** ***********************/



我大概说下我的自定义视角里面的代码含义。




首先是


Rot

在这里我们固定摄像机角度进一个或多或少等角的固定角度之内。


(Pitch Roll Yaw


你可以理解为三个面的旋转方式,就类似


UD K


里面的


旋转三跟线)




然后是


Loc

在这里我们定义一个默认的摄像机位置距离


Pawn(


我们 的角色


)


的位置。




最后是


Pos = Loc



Vector(Rot) * FreeCamDistance;


它做的是以现在的摄像机旋转作为方向矢量然后借着



FreeCamDistance


来加大。



FreeCamDist ance


在父类定义中默认值是



256.0 f





最后,当我们按下


F5


进行调试,就可以发现我们可以通过键盘的


WSAD


键来控制角色进行行走了,并且已经固定为斜


45


度角了。



如果你想修改你的视角,那么对


'Iso metric'


里的代码进行修改。



如果你想添加多种视角,那么添加这里的


case


进行处理,然 后在继承了


Pawn


类的


KWPawn


类里控制


GetDefaultCameraMode


的返回


值来进行完成。




总结:



我 们已经通过修改完成了使用自己的视角来进行游戏,在下一章节中,我们将重写我们的控制方法,使用鼠标来进行 角色的移动。并且初


步谈谈关于


HUD


(界面渲染)。






UDK


入门教程

--


第二章:第三节



自定义角色 控制方式


-




在前面的教程中,我们已经把我们创建的角色放入置我们的场景之中了。


< p>
现在,我们将重写我们的控制方式,使用我们自定义的方式来控制我们的角色。



第一步:


< br>我们先把制作好的鼠标指针模型


(可以参考其他教程或者等待其他人更新模型制作 教程,


在此系列就不涉及大部分


UDK


编辑器



部分的操作,本系列留给程序员)放入


KingdomWorldUTGameContentEffect


中。


(KingdomWorld


UTGameContent


后的路径随便你定义,你直接放在


Content

里也行,这样做的目的仅仅是便于管理而已)



附带一个我随便制作的模型:




第二步:



2.1.

< br>打开工程。在


Classes


文件夹里添加一个


KWHud


类。并编写如下代码



1.



class KWHud extends GameHUD;



2.


3.


4.


5.


6.


7.



simulated event PostBeginPlay()


{




ginPlay();




`Log(


界面类运行



}


复制代码




我们编写了一个继承了界面类的的类,在这里我们可以在渲染事件里做一些东西(比如


U I


,文字等)




2.2.


接着,我们添加一个方法



1.



function vector2D GetMouseCoordinates()



2.


{


3.




local Vector2D mousePos;


4.




local UIInteraction UIController;


5.




local GameUISceneClient GameSceneClient;


6.




UIController = ontroller();


7.




if ( UIController != None)


8.




{


9.






GameSceneClient = lient;


10.





if ( GameSceneClient != None )


11.





{


12.







mousePos.X = osition.X;


13.







mousePos.Y = osition.Y;


14.





}


15.



}


16.



return mousePos;


17. }


复制代码




/************************** ****************************************


*


* GetMouseCoordinates()


方法介绍



*


*


这是我们自己定义的一个方法。



*


通过这个方法返回一个


vector2D


* vector2D


包含了我们鼠标在当前场景中的正确位置。



*


其实就是


ontroller().osition;


****************************************** ************************/



通 过这个方法,我们可以随时取得当前鼠标的位置(在后面用到)




第三步:



找到我们之前编写的



文件



声明如下变量



1.



var Vector2D



PlayerMouse;



2.


var Vector



MouseHitWorldLocation;


3.


var Vector



MouseHitWorldNormal;


4.


var Vector



MousePosWorldLocation;


5.


var Vector



MousePosWorldNormal;


6.


var vector



StartTrace;


7.


var Vector



EndTrace;


8.


var vector



RayDir;


9.


var Vector



PawnEyeLocation;


10. var Actor




TraceActor;


复制代码


-


-


-


-


-


-


-


-



本文更新与2021-03-01 02:04,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/685140.html

UDK入门教程的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文