ImageVerifierCode 换一换
格式:DOCX , 页数:56 ,大小:3.11MB ,
资源ID:18933424      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18933424.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实时策略游戏初学者工具包Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实时策略游戏初学者工具包Word格式文档下载.docx

1、这个初学者工具包包含示例代码,您可以从这段示例代码开始学习开发实时战略游戏,例如Hostile Worlds,它是使用UDK制作目前还在开发中的游戏。包含哪些内容?与平台游戏初学者工具包或竞速游戏初学者工具包不同;在这个初学者工具包中有大量代码和内容。它还有一些与实时策略游戏实际并不相关的高级功能,但是对开发的其他方面也会有帮助。 Platform abstraction - RTS 初学者工具包可以分辨出玩家正在使用什么平台玩游戏。根据玩家使用的平台,使用的玩家控制器和 HUD 类也会有所不同。但是,只是中断了对 PC 和 Console 平台类的支持。目前,只完全支持移动设备平台。 Cam

2、era - RTS 初学者工具包有一个指导您如何创建一个像鸟的眼睛视图相机一样的相机的示例。它可以支持平移、触摸平移和缩放。 Structures - RTS 初学者工具包中包含可以处理玩家构建的结构的示例代码。 Units - RTS 初学者工具包中包含可以处理玩家可以将命令发布到的单元的示例代码。 Skills - RTS 初学者工具包中包含可以处理单元的技能的示例代码。 Resource Management - RTS 初学者工具包中包含可以处理玩家资源的示例代码。 AI - RTS 初学者工具包中包含向您说明如何创建一个能够构建结构、单元并与您作战的敌人 AI 玩家的示例代码。 Up

3、grades - RTS 初学者工具包中包含向您说明如何为您的单元创建升级的示例代码。 Structure Upgrades - RTS 初学者工具包中包含向您说明如何创建可以将自己本身升级为高级形式的结构的示例代码。 Networking - RTS 初学者工具包已经在心里通过相互关联进行构建,这样为您设置了函数复制。 Documentation - RTS 初学者工具包使用与Javadocs相似的类型完整保存。 UI - RTS 初学者工具包有一个可以处理简单按钮的小型自定义 UI 码基数。代码结构 RTS 初学者工具包是一个大型的复杂项目,因此在您开始扩展和/或修改这个初学者工具包创建您

4、的游戏之前了解所有部分是重要的。如何发现“隐藏”在鼠标/手指后面的秘密?鼠标界面代码与鼠标界面开发工具包精华文章相比工作方式截然不同。在这个 RTS 游戏实例中,您实际上不希望距离远的单元选择起来困难,或者您可能希望在任何给定时间优先选择不同的单元。例如,您可能希望使单元比结构更重要,结构比资源点更重要。RTS 初学者工具包解决了由于创建代表屏幕上单元的大小的屏幕空间方框而产生的问题。要解决远处的单元的屏幕框太小的问题,可以将人造间距添加到框大小(但是,在开发过程中,由于相机类型这个问题并没有真正出现)。要解决优先级问题,首先遍历单元,然后是结构,接下来是资源。因为触摸已经在屏幕空间中捕获,所

5、以在此会对框范围内的点进行比较,找出鼠标/手指在什么上面。如果鼠标/手指没有触摸任何东西,那么可以断定它一定已经触及到世界。在这个代码段中,代码会遍历世界中的所有资源,同时为它们计算屏幕绑定框。UDKRTSMobileHUD.uc/ 为所有资源计算屏幕绑定框for (i = 0; i = 0.1f) OutBox.Min.X = -1.f; OutBox.Min.Y = -1.f; OutBox.Max.X = -1.f; OutBox.Max.Y = -1.f; return OutBox; ComponentsBoundingBox.Min = PrimitiveComponent.Bou

6、nds.Origin - PrimitiveComponent.Bounds.BoxExtent; ComponentsBoundingBox.Max = PrimitiveComponent.Bounds.Origin + PrimitiveComponent.Bounds.BoxExtent; / Z1 / X1, Y1 BoundingBoxCoordinates0.X = ComponentsBoundingBox.Min.X; BoundingBoxCoordinates0.Y = ComponentsBoundingBox.Min.Y; BoundingBoxCoordinates

7、0.Z = ComponentsBoundingBox.Min.Z; BoundingBoxCoordinates0 = HUD.Canvas.Project(BoundingBoxCoordinates0); / X2, Y1 BoundingBoxCoordinates1.X = ComponentsBoundingBox.Max.X; BoundingBoxCoordinates1.Y = ComponentsBoundingBox.Min.Y; BoundingBoxCoordinates1.Z = ComponentsBoundingBox.Min.Z; BoundingBoxCoo

8、rdinates1 = HUD.Canvas.Project(BoundingBoxCoordinates1); / X1, Y2 BoundingBoxCoordinates2.X = ComponentsBoundingBox.Min.X; BoundingBoxCoordinates2.Y = ComponentsBoundingBox.Max.Y; BoundingBoxCoordinates2.Z = ComponentsBoundingBox.Min.Z; BoundingBoxCoordinates2 = HUD.Canvas.Project(BoundingBoxCoordin

9、ates2); / X2, Y2 BoundingBoxCoordinates3.X = ComponentsBoundingBox.Max.X; BoundingBoxCoordinates3.Y = ComponentsBoundingBox.Max.Y; BoundingBoxCoordinates3.Z = ComponentsBoundingBox.Min.Z; BoundingBoxCoordinates3 = HUD.Canvas.Project(BoundingBoxCoordinates3); / Z2 BoundingBoxCoordinates4.X = Componen

10、tsBoundingBox.Min.X; BoundingBoxCoordinates4.Y = ComponentsBoundingBox.Min.Y; BoundingBoxCoordinates4.Z = ComponentsBoundingBox.Max.Z; BoundingBoxCoordinates4 = HUD.Canvas.Project(BoundingBoxCoordinates4); BoundingBoxCoordinates5.X = ComponentsBoundingBox.Max.X; BoundingBoxCoordinates5.Y = Component

11、sBoundingBox.Min.Y; BoundingBoxCoordinates5.Z = ComponentsBoundingBox.Max.Z; BoundingBoxCoordinates5 = HUD.Canvas.Project(BoundingBoxCoordinates5); BoundingBoxCoordinates6.X = ComponentsBoundingBox.Min.X; BoundingBoxCoordinates6.Y = ComponentsBoundingBox.Max.Y; BoundingBoxCoordinates6.Z = Components

12、BoundingBox.Max.Z; BoundingBoxCoordinates6 = HUD.Canvas.Project(BoundingBoxCoordinates6); BoundingBoxCoordinates7.X = ComponentsBoundingBox.Max.X; BoundingBoxCoordinates7.Y = ComponentsBoundingBox.Max.Y; BoundingBoxCoordinates7.Z = ComponentsBoundingBox.Max.Z; BoundingBoxCoordinates7 = HUD.Canvas.Pr

13、oject(BoundingBoxCoordinates7); / 找出左方、顶部、右方和底部坐标 OutBox.Min.X = HUD.Canvas.ClipX; OutBox.Min.Y = HUD.Canvas.ClipY; OutBox.Max.X = 0; OutBox.Max.Y = 0; / 遍历边界盒坐标 for (i = 0; ArrayCount(BoundingBoxCoordinates); / 检测最小的 X 坐标 if (OutBox.Min.X BoundingBoxCoordinatesi.X) OutBox.Min.X = BoundingBoxCoordin

14、atesi.X; / 检测最小的 Y 坐标 if (OutBox.Min.Y BoundingBoxCoordinatesi.Y) OutBox.Min.Y = BoundingBoxCoordinatesi.Y; / 检测最大的 X 坐标 if (OutBox.Max.X OutBox.Max.X = BoundingBoxCoordinatesi.X; / 检测最大的 Y 坐标 if (OutBox.Max.Y OutBox.Max.Y = BoundingBoxCoordinatesi.Y; / 检查边界盒是否在屏幕范围内 if (OutBox.Min.X 0 & OutBox.Max.

15、X HUD.Canvas.ClipX & OutBox.Max.X HUD.Canvas.ClipX) | (OutBox.Min.Y OutBox.Max.Y HUD.Canvas.ClipY & OutBox.Max.Y HUD.Canvas.ClipY) else / 限定边界盒坐标 OutBox.Min.X = FClamp(OutBox.Min.X, 0.f, HUD.Canvas.ClipX); OutBox.Max.X = FClamp(OutBox.Max.X, 0.f, HUD.Canvas.ClipX); OutBox.Min.Y = FClamp(OutBox.Min.Y

16、, 0.f, HUD.Canvas.ClipY); OutBox.Max.Y = FClamp(OutBox.Max.Y, 0.f, HUD.Canvas.ClipY);在这个代码段中,检测到触摸事件的时候, 这段代码会遍历单元(pawn)数组和结构数组。如果触摸地点在单元或结构的屏幕绑定框范围内,然后它被选中,随后注册它的 HUD 操作。UDKRTSMobilePlayerController.uc/ 检查我们是否触摸了任何游戏相关对象if (PlayerReplicationInfo ! UDKRTSTeamInfo = UDKRTSTeamInfo(PlayerReplicationIn

17、fo.Team); if (UDKRTSTeamInfo ! UDKRTSMobileHUD = UDKRTSMobileHUD(MyHUD); if (UDKRTSMobileHUD ! / 我们触摸的是否是一个 pawn? if (TouchEvent.Response = ETR_None & UDKRTSTeamInfo.Pawns.Length 0) UDKRTSTeamInfo.Pawns.Length; if (UDKRTSTeamInfo.Pawnsi != None & classUDKRTSMobileHUD.static.IsPointWithinBox(TouchLoc

18、ation, UDKRTSTeamInfo.Pawnsi.ScreenBoundingBox) & TouchEvents.Find(AssociatedActor, UDKRTSTeamInfo.Pawnsi) = INDEX_NONE) UDKRTSTeamInfo.Pawnsi.Selected(); UDKRTSTeamInfo.Pawnsi.RegisterHUDActions(UDKRTSMobileHUD); TouchEvent.AssociatedActor = UDKRTSTeamInfo.Pawnsi; TouchEvent.Response = ETR_Pawn; br

19、eak; / 我们触摸的是一个结构? UDKRTSTeamInfo.Structures.Length UDKRTSTeamInfo.Structures.Length; if (class.static.IsPointWithinBox(TouchLocation, UDKRTSTeamInfo.Structuresi.ScreenBoundingBox) &, UDKRTSTeamInfo.Structuresi) = INDEX_NONE) UDKRTSTeamInfo.Structuresi.Selected(); UDKRTSTeamInfo.Structuresi.Register

20、HUDActions(UDKRTSMobileHUD); TouchEvent.AssociatedActor = UDKRTSTeamInfo.Structuresi; TouchEvent.Response = ETR_Structure;选择结构/单元后按钮显示在 HUD 上的方式?在 RTS 初学者工具包中,按钮被称为 HUD 操作。HUD 操作是在 UDKRTSHUD.uc 中定义的结构体。在这个代码段中,您可以看到 HUD 操作只定义了贴图和一组 UV 坐标贴图。将这些变量显示在虚幻编辑器中,这样就允许游戏开发者们设置这些值。在游戏中使用其他四个变量执行其他函数,我们将会在后续内容

21、中进行说明。/ HUD 上的 HUD 操作struct SHUDAction var() Texture2D Texture; var() float U; var() float V; var() float UL; var() float VL; var EHUDActionReference Reference; var int Index; var bool PostRender; var delegate IsHUDActionActiveDelegate;然后,在另一个叫做 SAssociatedHUDAction 的结构体内使用 HUD 操作结构体。这些将 HUD 操作的数组与

22、actor 相关联。/ HUD 上与 actor 相关联的 HUD 操作struct SAssociatedHUDAction var Actor AssociatedActor; var array HUDActions;当用户选择结构/单元(通过在移动设备版本中触摸结构/单元)的时候,在结构/单元上调用函数 RegisterHUDActions()。然后该函数会将相关 HUD 操作注册到 HUD。在这个代码段中,Portrait 变量是 SHUDAction,它可以定义在很多 RTS 游戏中常见的角色画像。因此,这段代码会设置可以通知游戏其他地方如何进行这项 HUD 操作的参数变量,一个可

23、以存储一些元数据和后期渲染布尔变量的索引变量(稍后进一步说明)。只要 HUD 操作设置完成,就会进行注册。UDKRTSPawn.ucsimulated function RegisterHUDActions(UDKRTSMobileHUD HUD) local SHUDAction SendHUDAction; if (HUD = None | OwnerReplicationInfo = None | HUD.AssociatedHUDActions.Find(, Self) != INDEX_NONE | Health = 0) return; / 注册相机中心 HUD 操作 if (Portrait.Texture ! SendHUDAction = Portrait; SendHUDAction.Reference = EHAR_Center; SendHUDAction.Index = -1; SendHUDAction.PostRender = true; HUD.RegisterHUDAction(Self, SendHUDAction);这个代码段会描述注册 HUD 操作时会发生什么。它会在 AssociatedHUDActions 数列内进行搜索,看看是否应该将其插入到中间, 进行这项

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1