当前位置: 首页 > news >正文

淮安新网站制作广州公司注册多少钱

淮安新网站制作,广州公司注册多少钱,企业电子邮箱格式,音乐介绍网站怎么做文章目录 一、地形制作1.1 地形制作流程1.2 关卡白盒1.3 场景美化1.4 优化场景 二、触发结构三、玩家指引#xff08;函数封装#xff09;3.1 项目拆解3.2 功能实现3.2.1 绘制UI界面3.2.2 UI的读取显示和刷新3.2.3 交互功能3.2.4 最终实现 四、NPC对话系统4.1 项目拆解4.2 UI… 文章目录 一、地形制作1.1 地形制作流程1.2 关卡白盒1.3 场景美化1.4 优化场景 二、触发结构三、玩家指引函数封装3.1 项目拆解3.2 功能实现3.2.1 绘制UI界面3.2.2 UI的读取显示和刷新3.2.3 交互功能3.2.4 最终实现 四、NPC对话系统4.1 项目拆解4.2 UI内容读取和显示4.3 NPC聊天的统一入口4.4 使用锁确保线程安全 五、物品使用5.1 项目拆解5.2 火焰效果实现5.2 简易使用5.3 靠近后自动使用 六、商店系统6.1 项目拆解6.2 物编准备6.3 功能实现6.3.1 锻造钥匙6.3.2 打开宝箱 七、装备限制自定义键值传递信息7.1 项目分解7.2 物编准备7.3 功能实现7.3.1 装备拾取7.3.2 装备丢弃7.3.3 显示特效 八、野怪刷新数组字典、自定义键值简化存储8.1 数据初始化8.2 自定义刷怪函数8.3 刷怪机制 九、行为树自定义事件传递信息9.1 游戏初始化9.2 行为树分敛9.3 AI实现9.3.1 近卫AI9.3.2 治疗师AI 十、简单状态机10.1 游戏初始化休眠状态10.2 战斗状态10.3变身状态10.4 死亡状态 十一、护送任务11.1 项目分解11.2 任务开启11.3 任务执行11.4 任务结束11.5 UI设计 十二、收集任务12.1 游戏初始化12.2 功能实现 Y3编辑器文档1编辑器简介及菜单栏详解文件、编辑、窗口、细节、调试Y3编辑器文档2场景编辑地形编辑、物件放置Y3编辑器文档3物体编辑器Y3编辑器文档4触发器1界面及使用简介、变量作用域、入门案例Y3编辑器教程5触发器进阶使用镜头、UI、表格、函数库、排行榜、游戏不同步Y3编辑器教程7界面编辑器 参考官方教程《中级触发课程》 一、地形制作 1.1 地形制作流程 在进行游戏场景的开发时需要对接上下游岗位的各种需求了解制作的全局安排以保证整个项目的方向不产生偏差最终的成品符合目标预期。整个游戏场景开发的流程结构包括以下几个步骤 策划确认场景需求、画面表现风格、地形变化、镜头参数等各种细节以便在正式制作场景地图时有所准备。原画师根据需求提供概念设计为3D美术师提供制作场景资源的基础。3D美术师会根据概念设计制作3D建模与材质地编整合素材导入引擎并完成地图内的摆放调试、灯光和渲染效果。程序优化游戏性能和玩法实现目标所需的体验。 1.2 关卡白盒 关卡白盒Blockout是游戏开发中的一个重要概念它指的是使用简单的3D几何形状通常是白色或单色的块状物构建的基本游戏内草图用于快速测试关卡的基本结构和游戏玩法。 通常在制作场景美术前需要和策划对接关卡设计文档并共同配合在编辑器中搭建关卡白盒。通过关卡白盒可以快速验证对应的玩法和关卡体验以及是否能达到预期的游戏目标及时调整游戏的设计减少在后期大幅修改导致进度被延缓的可能。 视频中正在制作的游戏叫做“大罗”玩家需要在黑暗中寻找道路并净化地图各处被腐蚀的怪物。而高低视野差本身是玩法的一环怪物或战利品会藏匿其中。这些影响玩家体验的地形布置必须严格按照策划量化的标准来进行调整。 1.3 场景美化 在整个地图的白盒阶段完成后接下来就正式开始场景美术的部分了。在这个阶段我们可以跳过原画和3D制作的环节直接根据文案对故事的背景设定或者策划提供的场景分为参考到编辑器中寻找所需的资产。但我们依然需要逐步拆解出画面所需的元素比如场景是在寒带还是热带、故事发生的时间、树木植被的种类、岩石山体的状态等等。然后可以在资源管理中浏览和下载模型以及在物编中创建自定义装饰物。 在挑选时要保证模型的风格尽量统一避免造成画风上的割裂对视觉上的体验造成负面影响。使用材质相近但是造型不同的模型可以制作出不同的效果比如不同山体的轮廓或植被的覆盖。同时利用组合装饰物的功能将搭建好的小景别或建筑等打包成一个装饰物。除此之外还可以使用投射物和材质变化等物编设置给装饰物增加更多细节。 准备好素材之后就是围绕着关卡开始拼积木了。从体积较大的装饰物开始再一步步地优化画面的表达。 除此之外场景设计还需要大量的美术知识构图的技巧、空间关系、远景里的拉伸、大气透视等需要不断地进行练习和积累才能做出更好的作品。 1.4 优化场景 提高游戏帧数降低游戏运行所需的性能场景BUG模型碰撞效果降级 比如使用地形编辑中的植被笔刷大面积覆盖密度较高的草地可能会导致游戏的帧数显著下降。所以使用装饰物中的植被来铺设场景。另外经常容易出现玩家角色卡死在地图边缘或者装饰物以及单位的附近等需要较为细致地去处理这些碰撞体积。 大量不合理的放置灯光等也容易造成游戏渲染方面的压力掉帧、卡死等。应该先处理好最主要的光源再进一步去优化漫反射的影响等。有时候为了游戏的体验不得不做出一些妥协寻找效率与效果的平衡。一切以输出最终成品为目标不断地进行改进养成良好的创作习惯和培养规范的开发意识能极大的提高生产效率避免不必要的麻烦。 二、触发结构 当我们玩游戏时我们可以看到和体验到不同的游戏场景互动甚至不同玩家的不同故事。使用Y3编辑器我们可以在ECA中实现所有这些游戏效果无论是简单的拿起武器还是多人支线任务。有时候ECA可能看起来相当长和复杂但它们通常可以分解为三种简单的编程结构顺序、选择和循环。 顺序结构按顺序执行一系列操作是编程中最基本和默认的模式。 比如当玩家第一次进入游戏时会先播放动画视频然后弹出初学者指南几秒钟后将显示一个关闭按钮最后玩家可以单击以关闭指南。在大逃杀游戏中地图通常会随着时间的推移而缩小迫使每个玩家彼此靠近这也是顺序结构。 选择结构根据条件执行不同的操作。例如检查玩家是否持有正确的钥匙来打开门或者在大逃杀游戏中检查玩家是否活着以及是否是最后剩下的玩家。选择结构使用if-then-else逻辑来实现。 循环结构重复执行一组操作直到满足特定条件。Y3编辑器提供了多种循环类型包括指定次数循环、条件循环和遍历数组循环 这三个结构看起来非常简单但是组合起来可以创建非常复杂的程序几乎可以解决所有的问题实现所有的游戏效果。例如我们可以使用选择结构和循环结构来计算AOE伤害首先循环所有在范围内的单位然后使用选择结构即if语句来检查单位的情况如果单位是友方单位我们会为其添加增益效果如果该单位是敌方单位我们会对其进行真正的伤害。 三、玩家指引函数封装 3.1 项目拆解 在许多游戏中玩家指引都是必不可少的一部分它能够快速的帮助玩家熟悉核心玩法并在需要时随时查看。通常玩家指引会以弹窗的形式出现但也可以是更传统的电子书形式或更为详细的教程。在设计玩家指引时需要考虑易用性、可访问性和自适应性确保玩家可以轻松查看和使用指引。 下面将以一个交互式UI的形式为玩家创建一个实用的玩家指引将包括翻页、隐藏和取消的交互功能以及快捷键操作方式。为了提高信息的组织性和易读性需要将内容分成不同页面显示方便玩家快速找到需要的信息并遵循常见的游戏UI设计规范如从左到右阅读按钮在左边内容在右边。 根据以上需求我们要制作的玩家指引UI应该是全局可见的并且允许被修改玩家在点击这四个标题时不应有任何限制以便可以自由的查看。这些功能可以分为三个部分内容预设、UI的读取显示和刷新、交互。 3.2 功能实现 3.2.1 绘制UI界面 UI界面需要包括一个底板、四个标题、四个标题文本、一个页面和一个页面文本。由于我们希望玩家能够点击标题来查看内容因此我们需要为这四个标题添加相应的事件。 我们需要将UI上显示的所有内容存储在变量中以方便调用这通常是游戏初始化的一部分。我们可以设置一个全局变量TitleText字符串数组来存储标题文本再设置一个全局数组变量PageText来存储与标题对应的页面文本。 3.2.2 UI的读取显示和刷新 设置UI的初始状态默认打开UI时会显示四个标题和起始页内容所以需要将四个标题控件文本内容设为titleText[1]到titleText[4]将pageText控件的文本内容设为pageText[1]。新建函数库函数实现刷新功能 在函数库中创建一个名为“刷新UI”的新函数创建全局变量page表示我们应该向玩家显示的页数比如点击标题3时page3使用变量page作为索引来获取相应的内容即pageText[page]然后将其设为pageText控件的文本内容 创建四个触发器来刷新UI。 3.2.3 交互功能 这部分我们将添加两个功能来使UI交互更加友好。第一个是点击标题时的显示效果比如当玩家点击titleText1时titleText1的控件将显示不同的颜色让玩家清楚的知道自己点选了什么。 为了实现这种视觉效果需要在UI上添加一个半透明的控件SelectEffect这个控件的大小与标题控件相同用来覆盖在标题上以改变其视觉效果。由于交互效果与点击标题和刷新UI的效果相结合我们可以在函数刷新UI中进行添加 添加UI隐藏功能通过点击开关按钮或按下H键玩家能够隐藏或显示整个UI。 3.2.4 最终实现 两个函数库函数 按下隐藏图标swich或按下H键时显示/隐藏界面 对于游戏来说UI是不可或缺的一部分。在这里我们只是创建了一个简单的指引但它同样可以作为一个冒险日志、任务日志、主菜单、RPG中角色信息概览以及竞技游戏中的排行榜等等。UI是我们想要高密度表达信息的绝佳载体。 四、NPC对话系统 4.1 项目拆解 NPC在游戏中有许多用途包括推进故事情节、作为玩家的伙伴、物品商店、生命恢复点数等。与NPC互动是一种广泛使用的游戏机制。在本教程中我们将实现与NPC交谈的效果。玩家将能够接近或单击以与NPC进行对话并能随时关闭对话。 为了简化NPC对话系统的开发我们使用统一的对话界面模块来适配所有NPC以提高效率和保持界面一致性。我们希望玩家能够以多种方式与NPC互动因此我们需要函数库功能以此通知编辑器在玩家靠近NPC或单击NPC时显示对话界面。最后我们需要确保对话界面不会重复触发例如当我接近NPC1时会弹出MPC1的聊天界面此时单击NPC2其聊天界面不应该弹出。整个项目功能可拆解为三个部分 4.2 UI内容读取和显示 需要在物体编辑器中设置所有NPC的聊天内容为此添加一个自定义属性“Talk”来存储每个NPC的聊天文本。设计对话界面它至少应该包括背景、NPC图标、文本和退出按钮。 自定义一个带有参数NPC的函数使对话界面能够读取和显示正确的信息 设置字符串类型的局部变量TalkKey为键值-字符串自定义键值-NPC的字符串值为talk。 4.3 NPC聊天的统一入口 创建一个统一的NPC聊天入口函数“NPC与英雄对话”当英雄与NPC对话时将NPC信息写入聊天对话框并显示给玩家。我们还需要设置退出机制使用循环计时器每秒检查英雄和NPC之间的距离以及退出按钮的状态。   设置进入区域事件和点击事件的触发器当玩家控制的英雄靠近NPC或者玩家点击了一个非英雄单位NPC且距离小于400时都触发对话函数展示对话界面。 这里有一个bug如果区域大于400比如450。那么英雄一进入就开始计算距离这时候肯定是大于400马上就删了计时器distance也删了界面直接关闭。所以得设置事件区域小于350最好计时器也不要马上执行。 4.4 使用锁确保线程安全 为了确保玩家与NPC交互对话时无法再次重新开展新的对话可以在展示对话界面之前创建一个布尔变量“ChatState”来跟踪聊天。当玩家触发点击NPC或者靠近NPC时会触发对话机制ChatStateTrue说明正在聊天中并打印信息提示“你已经在对话中”。 此时只有玩家离开NPC太远或者点击退出按钮这两种情况会退出对话此时应设置ChatStateFalse。这时玩家可以进行新的对话重复展示对话UI和监测UI的逻辑。 当玩家退出时结束对话并解锁对话状态 不用锁的时候可以不删计时器用了之后退出谈话必须删还没搞懂为什么。 今天我们介绍了如何制作NPC聊天系统。我们可以接近NPC或者在一定范围内点击NPC与它交谈。我们可以单击退出或离开以结束聊天。我们还介绍了如何设置锁以确保线程安全。当大量同类型的操作出现时我们需要在这些机制中找到共点并使用函数库进行封装。它是游戏开发中不可或缺的一部分。这里我们以NPC聊天系统为例演示如何在游戏制作中使用封装。封装还可以在很多地方使用比如在多个分支的文字冒险游戏中或者在不同枪械的子弹以及伤害系统中。 五、物品使用 5.1 项目拆解 今天我们将介绍如何通过不同的方法实现使用物品的效果。我们可以点击物品栏中的物品来使用可以单击UI来使用也可以靠近物品自动使用例如跑酷游戏中的金币最终都会对它们进行整合以传输给必要且唯一的执行结构。这种结构是所有游戏的组成部分由此延伸出玩家操作层、系统命令层和执行层的基本概念。 物品使用过程分为两个阶段玩家触发物品使用和使用物品后的效果所以我们需要一个统一的入口来进行触发封装火焰技能。前两种方法很容易就能实现因为编辑器中本身就内置了这些功能只需要在物体编辑器和UI编辑器中进行设置对于第三种方法我们需要设计一个计时器检测周围环境在有物品交互对象时立即使用物品。根据我们的需求我们可以将项目分解为三个部分 5.2 火焰效果实现 在函数库中封装火焰技能并使用参数Point来确定火焰的位置。火焰效果有上升和爆炸两个阶段 火焰上升使用后一秒外观层显示火焰技能。为了让火焰技能飞向天空的效果更加逼真我们希望这种上升效果的速度会逐渐降低设置两个变量来存储火焰的速度和高度每帧速度减去2。火焰爆炸速度为0时等待0.3秒创建火焰炸裂效果。 设置了火焰爆炸高度之后我为其添加得爆炸声没了真是醉了。 5.2 简易使用 自定义火焰技能在技能触发器设置施法完成后调用函数库函数”火焰技能“ 自定义物品照明石并为其添加主动技能火焰技能。这样点击物品就会自动使用火焰技能。注意应该设置指示器类型无、索敌目标无只在点自动释放。 为玩家添加“火焰技能”按钮并为其添加鼠标点击事件 5.3 靠近后自动使用 创建帧计时器检测周围环境使用变量itemGroup作为单位特定范围内的所有物品当其中包含星星时自动使用。为了保证每颗星星只使用一次需要为物品添加锁即used标签。 六、商店系统 6.1 项目拆解 在本节课中我们将以多种形式的货币与商店进行互动达成购买和兑换的目的。我们先使用货币购买物品随后锻造获得钥匙最后使用钥匙打开宝箱总结起来就是 用货币购买物品使用货币购买三块铁锭、一份说明书和一个工具包。这里需要给商人添加物品来实现购买功能。以物易物当玩家拥有所有锻造材料时点击铁匠得锻造工具让铁匠锻造钥匙。 视觉上呈现为锻造成功物品栏中获得一把钥匙。但在游戏背后我们需要开启物品栏搜索功能满足条件的情况下删除相应数量的铁锭、设计图和工具包创造一把钥匙。当材料不足时给予提示。 使用新物品触发对应效果玩家使用钥匙打开宝箱。 6.2 物编准备 在物体编辑器中创建铁锭、设计图、工具箱、锻造工具、钥匙和宝箱这几个物品并设置其商店属性比如库存、购买所需资源等。接着创建商店老板、铁匠铺铁匠以及宝箱兑换铺三个单位勾选“作为商店”表示可以出售物品。将铁锭、设计图、工具箱添加到商店中铁匠铺添加锻造工具。玩家打开宝箱后会获得金币所以我们需要在宝箱内写入获得金币的触发。 6.3 功能实现 6.3.1 锻造钥匙 下面实现锻造事件玩家点击使用锻造工具感觉过程可以简化 物品堆叠数必须大于要减去的数量设置堆叠数才有效否则只能进行删除操作。 物品只有一个时只能删除设置堆叠数-1无效物品有N个设置堆叠数-N无效只能直接删除物品有N个设置堆叠数-M且MN设置有效。 6.3.2 打开宝箱 必须是单位类型才能播放动画所以创建的宝箱不应该是物品而应该是建筑类型。开完宝箱可以保留在地图上也可以删除它。如果要删除需要播完动画再删除也就是创建一个2s的计时器。 在游戏中玩家与商店之间的互动不一定都是买卖行为。无论是武器锻造、物品合成还是密室逃脱中通关钥匙的获取等操作它们的实现逻辑都与商店交易的实现逻辑相同。 七、装备限制自定义键值传递信息 装备限制是RPG类型游戏中常见的机制比如我们规定玩家只能携带一把武器、一件护甲或者在FPS游戏中玩家当前只能持有一把武器切换另一把武器时就需要放下当前持有的武器。 7.1 项目分解 在本节课中我们为角色设置了两种武器和两种护甲玩家角色最多可以持有一件武器以及一件护甲。武器的特效是随着玩家单位的移动在玩家单位的手腕位置会产生一个拖尾效果护甲一的特效则是周期性的在玩家单位所在点出现寒冰刺护甲二的特效是一个紫色的电球围绕着玩家单位不断旋转。 当玩家装备物品时角色身上将会出现对应的特效用于表示穿戴状态当玩家手动丢弃物品时则删除对应的特效。如果是玩家已经拥有某类型装备并再次拾取时由于装备限制所以会自动触发系统丢弃。系统丢弃是静默的不会通知玩家不更新玩家状态因此不会有特效或其他游戏效果被改变。所以整个项目可分为四部分数据存储、装备拾取和丢弃、特效。 7.2 物编准备 首先在物编中定义好各个装备的模型、名字、图标等然后使用自定义值功能为每个装备添加一个type属性用于标识装备的类型weapon、armour在物编器-魔法特效中创建两种武器特效在投射物中创建两种护甲特效。最后并为武器装备添加projectType属性表示装备对应的特效。 闪电和充能两种武器特效魔法特效 寒冰刺和紫色电球两种护甲特效投射物 7.3 功能实现 7.3.1 装备拾取 当玩家单位拾取物品后使用两个局部变量unit和item分别缓存玩家单位和玩家获得的物品使用局部变量type缓存该物品的类型如果玩家没有此类型装备则为其装备上且为玩家单位添加type标签值为type表示装备了此类型物品。发送自定义事件根据item的类型生成相应的特效。如果玩家具有type标签且值也为type表示具有同类物品将其丢弃并将此物品打上systemdiscard标签在后续处理中用于标识此物品是系统丢弃。 单位和物品上的所有属性都是全局变量所以可以通过添加自定义键值的方式来为其添加自己需要处理的变量通过发送和接收自定义键值可以完成全局信息的传递。 特效分敛根据自定义事件传递的物品和type参数分敛到不同类型的特效创建函数执行对应的效果。 7.3.2 装备丢弃 当单位失去物品时使用unit和item缓存失去物品的单位和被丢弃的物品。根据item的自定义值systemdiscard判断丢弃类型自动丢弃则清除标记手动丢弃则删除玩家单位中的自定义值和对应的特效。 在拾取物品时通过发送自定义键值——unit的type信息给创建物品特效事件后者根据接收的type信息创建对应的特效。物品手动丢弃时删除unit的type键值物品特效也随之被删除。 7.3.3 显示特效 武器特效给装备单位添加对应的魔法特效并用秒计时器轮询装备是否被删除若删除则移除特效。 护甲一特效每秒检测一次特效将在每秒计时器到时后立即生成并在两秒后将其销毁。 护甲二特效创建投射物特效使用角度变量angle实现电球围绕单位旋转的效果使用计时器每隔0.03秒更新电球位置 八、野怪刷新数组字典、自定义键值简化存储 野怪刷新机制有三个步骤 设置野怪刷新区域并存储刷怪数据例如刷怪数量和类型设计刷怪函数根据刷怪数据执行刷怪设定刷怪机制即游戏初始化或者怪物被消灭10秒后刷怪两个触发器 8.1 数据初始化 放置四个区域作为刷怪点并存入要刷敌人的数据包括面向角度、数量和单位类型等。在本例中我们应避免创建12个全局变量去储存刷题数据这种低效做法而是给每个刷怪点创建自定义键值。 自定义键值是一种特殊的全局变量由主索引和一个键组成类似python里的字典。在触发器中选择数据类-通用-键值即可启用自定义键值填入主索引和键就行。 新建触发器创建游戏初始化事件使用一个数组变量spawner来存储四个刷怪区域这样可以使用循环指令一次命令数组内所有刷怪点做动作。最后给各个区域设置自定义键值包括敌人角度、数量和类型完成数据初始化。 区域数组还能有字典数据比我想象的高级啊。 8.2 自定义刷怪函数 上一步我们放置了区域并利用自定义键值存储了刷怪数据。下面创建函数库函数以刷怪区域作为参数根据其刷怪数据执行刷怪命令。在动作中新建一个循环来创建单位循环次数为刷怪数量。最后为此区域添加自定义键值unitGroup单位组将刷出的怪物添加到此单位组中便于后续判定。 8.3 刷怪机制 游戏初始化刷怪遍历刷怪点数组都执行一遍刷怪函数即可 怪物全灭10s后刷怪将死亡的单位从该区域单位组中移除并判断单位组数量是否为0若是则新建一个十秒的计时器之后执行刷怪函数。 注意这里不要使用变量来记录刷怪点的单位组执行删除操作。因为这样删除的只是这个新的变量而不是刷怪点的单位组属性。怪会越刷越多的。 在刷怪函数中每个生成的怪都使用homeSpawner键记录了其对应的刷怪点刷怪点的unitGroup中也记录了其生成的怪物。所以任意单位死亡时我们获取该单位所属区域并将该区域的单位组中的这个怪物删除。如果该区域没有怪物了则10秒后再刷新。除了刷怪你也可以创建补给刷新点、矿石刷新点等要素加入进你的游戏里给地图更多乐趣与复玩性。 九、行为树自定义事件传递信息 游戏中的AI指的是通过模仿真实玩家的操作使单位拥有智能化行为比如人机对战模式、自由行走的NPC、系统托管的友军、对战中的敌兵以及玩家的召唤物等等。游戏AI的实现主要有两种方法一种是行为树一种是状态机本节课将介绍行为树的方法。 行为树即是用树状结构分支使AI能根据条件执行不同行为如走、跑、跳、攻击让单位通过模拟真实玩家的行动而拥有“智能”行为增强玩家的参与感。 9.1 游戏初始化 本节课需要实现的游戏AI的是两种小怪近卫和治疗师。近卫只会在警戒区域Area AI内进行活动敌人靠近治疗师时进行攻击生命值过低时向治疗师靠拢。治疗师固定位于Area AI区域的中心位置优先治疗自己满血则治疗血量最低的近卫无需治疗时则攻击敌人。 初始化前需要创建一个全局变量比如unitPlayer来存储玩家角色创建一个全局变量单位组来存储敌方单位。通过动作“玩家-选择单位”让玩家选中自己的主控单位。为了更沉浸的游玩体验使用“镜头 - 跟随单位”功能让玩家的视角能始终跟随在自己的英雄上。 9.2 行为树分敛 游戏开始0.1秒后每隔1秒遍历一次敌方单位组每次遍历所有单位根据敌方单位类型近卫和治疗者对其应用对应的行为树。 判断完单位类型后怎么通知他们去执行不同的AI行为呢我们可以通过发送自定义事件和接收自定义事件来完成信息的传递。参数必须是变量不支持数组。比如行为树是针对某单位执行那么就需要将单位作为参数传递出去。 在Y3编辑器中我们可以选择自定义事件-发送自定义事件-新建事件-增加参数参数类型选择单位然后选择获取事件中的单位如下图所示 9.3 AI实现 9.3.1 近卫AI 9.3.2 治疗师AI 新建一个单位类型局部变量unit存储通过“自定义事件AI_Healer”发送过来的单位。使用函数MinHP unit获取当前最需要治疗的友军。 如果MinHP unit返回空空友军都是满血判断自己身边是否有敌人如果有就使用飞弹攻击它没有则在警戒区域的中心不动以方便巡逻的守卫保护自己。如果MinHP unit不为空则停止当前的动作这里并非使用‘技能’来实现治疗所以为了防止治疗者边攻击边治疗需要先停止攻击动作并对其进行治疗。为了让这种动作更具真实感我们可以播放对应的动画动作并为治疗效果添加一个特效。 这里治疗师攻击范围是多少就设置unitPlayer距离多少才攻击超了会拉脱。另外写逻辑又麻烦。 MinHP unit函数新建一个变量unit用于存储最低生命的单位初始为空单位。设置两个局部变量分别表示单位组中最低血量百分比和当前遍历单位目前的血量百分比。 十、简单状态机 状态机指的是游戏角色拥有多种状态属性比如行走、跳跃、战斗、休眠、死亡等在多种状态下可以进行切换。举个例子角色在行走时如果遇到敌人将会从行走状态切换至战斗状态。各类游戏中的Boss战就可以使用状态机的方法来完成。 本节课我们制作的Boss有4种状态休眠、战斗、变身、死亡。一开始Boss处于休眠玩家进入警戒区域后Boss进入战斗状态。当其血量低于50%时进入变身状态其外形和技能都将发生变化。Boss在变身状态下获得攻击吸血回血到一定数值后Boss重新切换回战斗状态。若玩家死亡将在初始位置点进行复活继续进行战斗。 10.1 游戏初始化休眠状态 在Y3编辑器中点击事件管理为游戏设置四个自定义事件休眠、战斗、变身、死亡。当Boss需要切换某一状态时通过发送和接收特定的自定义事件来通知Boss进行状态切换。 当游戏开始后Boss首先处于休眠状态我们向其发送自定义事件“休眠”。设置一个布尔值局部变量作为切换Boss状态的开关初始为FalseTrue表示需要切换状态。接下来我们利用计时器循环监测根据玩家单位是否有进入Boss的警戒区域进行状态的判定。 为什么这里要加一个状态切换开关呢直接根据在不在警戒区判断要不要战斗不行么 10.2 战斗状态 利用计时器循环监测玩家单位是否存活、是否在警戒区域中以及状态开关是否打开。如果玩家单位存活那么Boss与之进行对战。设置一个实数类型的局部变量Proportion HP表示Boss当前血量百分比用于判断是否要切换到变身状态。 Proportion HP 0.5: 设置bool True并发送自定义事件“变身”Proportion HP 0.5: 使用技能1火焰技能CD50s与玩家进行对战。技能CD先进行自我累计达到50则重置为0并释放技能。 如果玩家存活那么继续判断玩家单位是否离开警戒区域。如果离开那么Boss恢复至休眠状态即打开状态开关使其等于True并发送自定义事件“休眠”。最后判断状态开关如果等于True则删除计时器和Boss单位否则不做任何动作。 火焰技能参数为技能释放点point创建一个火焰预警的投射物用来提示玩家此处位置将会发生火焰爆炸。3秒过后创建火焰爆炸的投射物如果玩家在技能释放点附近则对玩家造成真实伤害。 10.3变身状态 闪电技能 10.4 死亡状态 Boss死亡 玩家死亡 十一、护送任务 本章介绍如何设计护送任务。护送任务中玩家需要保护NPC角色或物体免受伤害直到终点。本案例中当雷姆接近NPC时任务信息UI就会弹出如果我们拒绝任务UI就会消失如果我们再次进入该区域任务信息UI将再次弹出。 接受任务后在不同的任务阶段UI会显示不同的信息。玩家可以点击按钮来隐藏或取消隐藏UI。当马车单位活着到达终点时任务就完成了。如果马车单位死亡玩家可以回到NPC并重新接受任务。 11.1 项目分解 根据我们的需求我们可以将功能分为四个部分 任务分配需要与任务NPC进行互动显示任务UI并允许玩家选择是否接受任务。任务执行需要护送一辆车到终点汽车需要能够自己向终点移动。当汽车被摧毁时重置任务当汽车到达特定区域时刷出敌人任务结束当汽车到达终点时完成任务任务提醒UI在任务的每个阶段显示任务的详细信息追踪任务进程 创建任务NPC和任务区域并设计UI以展示任务信息。UI包含三个基本部分任务描述、是和否两个选项。你也可以添加人物肖像、打勾和交叉的图片使UI更漂亮。然后为这两个选项添加UI事件accept quest和reject quest。 11.2 任务开启 使用三个触发器来实现玩家接受或拒绝任务的逻辑。 NPC region event当玩家进入NPC区域时弹出一个带有任务信息的UI。quest accepted如果玩家接受任务我们将隐藏任务信息UI并发送任务开始自定义事件告诉下一阶段触发器开始执行任务并关闭NPC region event触发器搜索触发器-开启/禁用。quest rejected如果玩家拒绝任务隐藏任务信息UI并保持触发NPC region event。 11.3 任务执行 任务执行阶段可以分为三个阶段起点至战斗点、战斗点战斗、战斗点至终点。首先在地图上绘制点和路径当玩家接受任务时即发送自定义事件Quest starts创建需要在起点护送的汽车并将其存储在变量npc_Car中。 任务开始后向npc_Car发布移动命令使其沿着Path1移动。实时监控npc_Car是否存活以及是否到达战斗点。 如果npc_Car死亡任务失败移除计时器并发送自定义事件QuestFail。如果到达战斗点移除计时器并发送自定义事件Quest Stage2 Starts并为此事件添加自定义参数PARAM1将其设为npcCar。 npcCar作为一个局部变量只能在当前触发器中调用不能在其他触发器中使用但我们仍需要在接下来的触发器中用到它因此我们需要用自定义事件传递参数。 我一开始设置车为建筑单位结果无法移动。。。切换成生物单位也不行只能重新创建一个生物单位的马车。 11.4 任务结束 本次护送任务设计成可以多次尝试的任务所以任务失败时可以重复领取即当收到自定义事件quest fail时再次打开触发器NPC region event。 11.5 UI设计 任务提醒UI包括显示/隐藏切换按钮、背景图片、提醒标题和提醒信息有四种状态 默认状态任务开始前游戏初始化和任务失败时处于默认状态可以显示诸如“没有任务正在进行”之类的信息。 stage1显示“护送汽车到指定目的地” stage2显示“打败所有的敌人保护马车” stage3显示“这里不安全快点到目的地去” 在任务的不同阶段UI应该显示相应的信息我们需要在相应的触发器中进行设置例如在quest stage1的触发器中UI应该处于stage1状态小部件文本显示stage1的信息。 最后我们需要设置UI的切换按钮。创建一个布尔变量UI_State来存储UI的状态true表示UI是可见的false表示隐藏用于判定和控制UI的状态。 护送任务是一个基于目标的任务他也可以是一个狩猎任务、一个逃跑任务或者同时与NPC约会的任务他们可能看起来不同但它们都具有相同的底层结构即从一种状态切换到另一种状态。就护送任务本身而言汽车的行进路径可以延伸到MOBA游戏中生成士兵的路径通过添加友方和敌方AI他可以从护送任务升级为进攻和防御战争。 十二、收集任务 游戏中的收集任务重点在于如何将游戏内容抽象为数据并实现计数逻辑。比如杀死一定数量的敌人、收集特定数量的物品等。本章案例中雷姆在探险时遇到了石林遗迹需要完成三个任务才会打开大门进入遗迹 对小怪累计造成500点伤害考验战斗力。收集五颗魔法石击杀掉落考验体能。完成前两个任务后任务3也就完成了将获得额外奖励。 12.1 游戏初始化 我们设置三个接任务的区域玩家进入到对应区域即会弹出相应的任务面板。每个任务都分为三个阶段即未开始、执行中、任务完成所以可以使用自定义键值state来表示任务状态三个键0,1,2分别对应三种状态。 游戏初始化后设置一个类型为单位的全局变量unit Player存储玩家单位。为了防止玩家误选到其他单位可以为玩家关闭鼠标点选、框选以及选中玩家单位。一开始隐藏三个任务面板后续触发任务时再显示。 12.2 功能实现 任务一伤害统计函数如下 设置触发事件“任意单位受到伤害事件”然后设置两个单位类型的局部变量表示承受伤害的单位和施加伤害的单位。设置一个整型局部变量Int Damage存储本次伤害值设置一个整型全局变量Damage存储累计伤害值。判断施加伤害的单位是否是玩家单位若为真那么累计玩家单位对敌人造成的伤害值 任务一触发机制 2. 任务二当玩家进入任务区域2且task2的state0时开启任务2其state设为1并显示任务2面板提示文本设为0/5。设置一个整数变量number统计收集到的魔法石数量然后利用计时器实时监测玩家物品栏里魔法石的数量 任务3前面触发过程一样循环检测任务一和任务二的触发和完成情况。
http://www.w-s-a.com/news/773861/

相关文章:

  • 英文互动网站建设南宁住房和城乡建设局网站
  • 威海微网站建设乐清建网站哪家强
  • 网站和app的开发成本saas系统开发教程
  • ps切片工具做网站大气简洁网站
  • 网至普的营销型网站建设wordpress邮箱验证插件下载
  • 找权重高的网站方法张家港早晨网站建设
  • WordPress数据库添加管理员关键词优化举例
  • 河南国基建设集团--官方网站wordpress qode
  • 做农村电子商务的网站有哪些内容静态网站模板古典
  • 导航网站设计方案个人网站推广方法
  • 网站排名易下拉教程防wordpress花园
  • 计算机网站建设 是什么意思现在网站建站的主流语言是什么
  • php网站跟随导航西安百姓网免费发布信息网
  • 濮阳做公司网站html5 特效网站
  • ppt设计器怎么打开深圳seo网络推广营销
  • 建设银行网站用360浏览器建设信用卡中心网站
  • 创建公司网站 教程广州建设局
  • 详述网站建设的过程简答题ui培训设计怎么样
  • 动易网站官网ppt主题大全素材
  • 怎样用eclipse做网站可以做宣传图的网站
  • 哪里可以做游戏视频网站做网站平台应该注意哪些
  • 网站后期推广是谁来做网页制作步骤作答题
  • 全屋装修设计定制整装成都网站优化多少钱
  • html5购物网站模板一个网站两个数据库
  • 个人网站怎么做微信支付网站建设项目介绍
  • 建网站合同网站适配移动端和PC端
  • 网站建设培训机构哪里好html5开发wap网站
  • 免费自助建站源码学而思网校官网
  • 中国最大的网站制作公司青海省高等级公路建设管局网站
  • 建设网站对服务器有什么要求吗wordpress去除更新提示