3D游戏开发套件指南(入门篇,转自Unity官方平台公众号)

原文地址:

https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247493655&idx=1&sn=090dd09b2e3845e35fdf97be4e71ce6e&chksm=fe1ddcbcc96a55aa1581dfdb23831d24eb4b0c64795c5bcb92eea5faa25ebe32d97bed803cba&mpshare=1&scene=1&srcid=07102tXxX6HNWr0CnA30N3qE#rd


我们为大家介绍过Unity Brighton的内容团队推出的2D游戏开发套件今天将介绍最新的3D游戏开发套件不论是使用2D还是3D游戏开发套件,都可以在不编写任何代码的情况下,通过设置与拖放便能快捷的实现游戏创意。


指南简介

本指南将引导开发者设置一个空的场景,使用3D游戏开发套件开始创建新的关卡。 这将帮助开发者了解如何使用游戏开发套件创建游戏。3D游戏开发套件中已经包含一个完整的游戏, 其中包含本开发套件中所有功能的相关示例。


你可以访问Asset Store资源商店下载3D游戏开发套件:

https://assetstore.unity.com/packages/essentials/tutorial-projects/3d-game-kit-beta-115747?_ga=2.94214488.479042256.1529570335-948560049.1527241650


创建新场景

首先我们创建一个新场景。3D游戏开发套件中已含有一个工具可以自动创建一个新的默认场景,其中包含我们的英雄Ellen和移动、攻击所需要的元素以及地面元素。


点击Unity浏览器顶部菜单Go to Kit Tools (访问套件工具),选择Create New Scene(创建新场景)。



输入新场景名称。



点击创建,新创建的场景中,将包含:地面,Ellen、UI元素和游戏菜单。



点击编辑器顶部菜单Play(播放)按钮。



我们的玩家角色Ellen控制方式如下。


移动

W, S, A, D

跳跃

Space

近战

左键单击

摄像机控制

鼠标滑动

暂停

ESC


添加移动平台

我们将为场景添加移动平台。所有可交互对象都能在项目的Prefabs > Interactables目录中找到。

 

添加MovingPlatform的步骤如下:

  • 找到项目窗口,打开Assets > 3DGameKit > Prefabs > Interactables。

  • 左键单击并拖拽MovingPlatform 对象到场景视图中。


 

  • 使用Transform工具来将平台平移(W)、旋转(E)和缩放(R)到合适的位置。



  • 在编辑器顶部点击Play。

 

MovingPlatform 目前是静止的。我们要让它动起来:

  • 在场景视图中的MovingPlatform 上找到End Point(终点)工具。


 

  • 查看检视窗口。

  • 找到Simple Translator 组件。

  • 使用Preview Position (预览位置)上的滑块来查看平台的移动位置。



  • 在Simple Translator 组件,勾选Activate。



点击Play,MovingPlatform 将向上移动,并在到达设定路径顶端时停下。

 

我们要让这个平台来回移动,首先选中MovingPlatfrom :

  • 查看检视窗口,找到Simple Translator 脚本。

  • 将Loop Type(循环模式)设为Ping Pong(乒乓球模式)。



点击Play,MovingPlatform 会向上移动到顶部再向下移动。它会移动到任意被设定为End Point的位置。

使用指令开门


在3D游戏开发套件中,游戏指令(Game Commands)能发送信号给Unity中的其它对象,让它们执行动作。

 

在这里我们将使用压力板(Pressure Pad)来打开一扇门。首先添加门对象到场景中:

  • 在项目窗口中,打开Prefabs > Interactables。

  • 找到DoorSmall 并拖入场景视图中。



对象上会有很多辅助图示。我们可以通过调整让对象上只显示用于操作物体或者放置物体的Transform工具。

  • 在层级窗口选中DoorSmall对象,查看检视窗口。

  • 点击Simple Translator组件上的箭头图标,折叠组件信息。


 

这样就只会显示对象的Transform工具,使用Transform工具来放置DoorSmall 对象。

 

现在我们添加压力板:

  • 在项目窗口中,打开Prefabs > Interactables。

  • 找到PressurePad 对象并点击拖入场景视图中。

  • 使用Transform工具将其放到门口附近。



现在将PressurePad和DoorSmall连接起来,从而在Ellen踩到压力板的时候,大门会打开。

  • 在层级窗口点击选中PressurePad对象。



  • 在层级窗口中,点击拖拽DoorSmall对象到PressurePad对象上Send on Trigger Enter 组件的Interactive Object(交互对象)属性栏中。



这时在场景视图中,会出现一个白色带箭头的线,显示PressurePad和DoorSmall之间的连接关系。


 

点击Play,当Ellen踩上压力板时,压力板会发光,下降并使门口打开。

敌人对象

在开发套件中,有三个预制敌人对象Chomper、Spitter和Grenadier。它们可以在Prefabs > Characters > Enemies > […..]目录下找到。

 

Chomper是个近战敌人;Spitter是远程敌人,能造成远距离伤害;Grenadier是Boss级敌人,有着特别的攻击模式,混合着远程伤害、近战伤害和盾形防御三种行动方式。



首先将Chomper放入场景中,与Ellen交战:

  • 在项目窗口中,打开Prefabs > Characters > Enemies > Chomper。

  • 将Chomper拖入场景视图中。

  • 使用Transform工具来移动Chomper的位置。


 

在Chomper前会出现一个大型深蓝色半圆,这是它的探测半径(Detection Radius)。当Ellen走入这个区域中时,Chomper会追逐并攻击Ellen。

 

现在我们减少Chomper的视野区域,在层级窗口中选中Chomper对象。

  • 在检视窗口中,找到Chomper Behaviour 组件。

  • 点击Player Scanner (玩家扫描器)旁的小箭头展开它。


 


  • 将Detection Radius的数值设为3。



现在要让Chomper只能看到前方的物体:

  • 拖动Detection Angle(探测角度)滑块,将数值设为180。



现在Chomper只能看到它前方的物体,能看到的距离也更短了。


注意:如果想要从场景视图中移除这个辅助图示,折叠Chomper Behaviour 组件即可。

  • 点击Play,让Ellen在Chomper附近奔跑。


  

Chomper会探测到Ellen,但只会原地跑动。我们要告诉Chomper它所能移动的地方,于是我们加入NavMesh Surface(寻路网格面)。


  • 在层级窗口中点击Plane对象。


 

  • 在检视窗口中,点击Add Component,搜索NavMeshSurface。


 

 

  • 在脚本上点击键盘的回车键,添加组件到Plane对象上。

  • 找到NavMesh Surface组件,设置Agent Type(代理类型)为Chomper(这对所有敌人类型都适用)。

  • 设置Include Layers(包含图层 )为Nothing(无),选择Environment(环境),选择Vegetation(植被)。


  • 在NavMesh Surface 组件底部,点击Bake(烘焙)。

 

这时会在地面上出现一个浅蓝色表面,它指明场景中的敌人所能移动的位置。


点击Play,移动到Chomper面前,Chomper现在会追着你并进行攻击,左键点击并使用道具进行攻击。


  

Chomper会在受到一次攻击后死亡。如果想要提高攻击次数:

  • 在层级窗口中,选中Chomper。

  • 在检视窗口找到Damageable组件。

  • 根据你想要Chomper死前所能承受的伤害,提高Max Hit Points(生命值上限)。Ellen的道具每次造成一点伤害。

造成对象伤害

我们可以使用接触伤害源(Contact Damager)组件来对拥有Damageable 组件的对象造成伤害。

 

在此使用一个箱子和Chomper进行演示:

  • 在项目窗口中,打开Prefabs > Interactables。

  • 找到DestructibleBox 预制件,点击拖入场景视图中。

  • 使用平移工具将箱子放在Chomper上方。

  

点击Play,箱子会下落到在Chomper上,然后呆在那里,什么都没发生。


注意:不要离Chomper太近,否则它会追逐Ellen。你可以降低它的探测半径为0。

 

 

我们想要箱子在砸到Chomper时造成伤害。

  • 在层级窗口中点击DestructibleBox 旁的箭头,展开其子对象。

  • 选中DestructibleBox子对象。


 

  • 查看检视窗口移至检视窗口底部,点击Add Component,搜索Box Collider。

  • 按下键盘上的回车键或是点击Box Collider组件将其添加到DestructibleBox对象上。

  • 在Box Collider组件上,勾选Is Trigger 属性。


 

  • 点击Add Component,搜索Contact Damager(接触伤害源)。

  • 点击键盘上的回车键或是点击Contact Damager脚本将其作为组件加入对象。

  • 在Contact Damager组件上,将Amount(伤害量)设为3,要注意伤害量必须与Chomper的Max Hit Points数值相等,从而使Chomper受到足够的伤害。本例中我们设为3,请记得检查Chomper的Damageable 组件上的Max Hit Points。

  • 设定Damaged Layers (伤害图层)为Enemy。


 


按下Play,箱子会落到Chomper上,Chomper会丢失生命值,然后转变为布娃娃(ragdoll)状态,而箱子则会弹开。


 

我们已经成功对Chomper造成足够伤害并击杀,但这个效果看起来不够好。我们可以让箱子在砸中Chomper时裂开。箱子上已经有接触伤害源,所以我们要对其进行调整使它也会影响箱子自身。

  • 查看层级窗口,找到Chomper并选中。

  • 查看检视窗口,点击Add Component ,搜索Contact Damager。

  • 按下键盘上的回车键或点击脚本名,将其添加到Chomper上。

  • 在Contact Damager组件上将Amount 设为1。

  • 在Damaged Layer属性下拉列表中选中Enemy。


  

按下Play箱子会砸到Chomper上,并在碰撞时破裂,让Chomper丢失所有生命值并转为布娃娃状态。


装饰

在开发套件中,我们提供了在构建示例游戏中所使用的所有环境对象,它们被分散到多个不同资源类型的文件夹中。请查看这些文件夹,开始构建出自己的场景,你可以在Prefabs > Environment > [….]目录下找到它们。

 

你会创建出怎样的世界呢?

  


我们需要为敌人对象重新烘焙NavMesh,使它们知道哪些是新增的可移动平面,或是让它们知道要避免哪些对象,例如:大型植物。

  • 在层级窗口中选中Plane。

  • 查看检视窗口,在NavMesh表面点击Bake。



石块和植被绘画器

为了进一步装扮场景,我们创建了一个石头绘画器和植被绘画器。这些工具能让你以多种大小和旋转方向放置植被和石块,并使它们与所放置的平面对齐。

 

如果要使用这些工具,在层级窗口找到VegetationPainter,点击小箭头来展开子对象。


 

点击GroundCover,将鼠标移到场景视图中的平面上,左键点击放置一些草被或睡莲。


 

你可以修改放置对象的类型,查看检视窗口在Instance Painter组件中,有绘画器中每个预制件的图片。



点击白色高亮方框,选中要绘制的预制件,被选中的预制件会变为灰色。

 

我们可以在Instance Painter组件顶部的方框中找到绘画器的操作说明,这里介绍一些简单操作:

  • 左键点击 = 绘图

  • Ctrl (Cmd) + 左键点击 = 删除

  • Alt + 滚轮 = 调整笔刷大小

  • 空格键 = 随机设置位置和旋转角度

 

我们绘制的任意对象会保存为子对象。例如:查看层级窗口,展开GroundCover。所绘制的类型对象都会保存其为子对象。我们可以点击它们来单独编辑和放置。

 


这个过程和绘制VegetationSmall、VegetationMedium和VegetationLarge的过程一致。

 

 

我们可以用同样的方法绘制石块,在层级窗口中找到RockPainter,点击小箭头展开子对象,点击RocksSmall,将鼠标移动到想要的位置并点击左键放置石块。

 

传送玩家

在3D游戏开发套件中,我们有一个传送系统。可以将Ellen传送到其它关卡,或是场景中的不同位置。

 

首先在场景中创建传送器,在项目窗口中,打开Prefabs > Structures找到GateWayHugeTeleporter。

  

从名字可以看出这个入口很大:

  • 使用缩放工具和平移工具定位并缩放这个对象为Ellen的大小。

  • 在层级窗口中展开GatewayHugeTeleporter ,暴露其子对象,选TeleportPlane。

  • 查看检视窗口,点击Add Component,搜索BoxCollider。

  • 按下键盘上的回车键或是点击BoxCollider 来添加组件到TeleportPlane对象上。

  • 在Box Collider 组件上勾选Is Trigger。

 

 

  • 点击Add Component,搜索Teleporter。

  • 按下回车键或是点击Teleporter脚本来将其添加到TeleportPlane对象上。

 

 

  • 在Teleporter 组件上,将Layer(图层)改为Player(玩家)。

  • 在层级窗口上,找到Checkpoints对象。

  • 点击Checkpoint 对象旁边的箭头展开其子对象。


 

  • 在层级窗口选中TeleporterPlane 。

  • 将子对象Checkpoint对象拖入Teleporter 组件的Destination Transform属性栏。

  • 在层级窗口找到并展开Ellen,显示其子对象,找到RespawnParticles对象。


 

  • 在层级窗口上选中GateWayHugeTeleporter 。

  • 将RespawnParticles 拖到Teleporter组件的Enter Effect(进入特效)属性栏中。

  • 将RespawnParticles 拖到Teleporter组件的Exit Effect (离开特效)属性栏中。

  • 按下Play并测试,让Ellen跑到传送器中。

 

 

在通过传送器时,Ellen会传送到最初的出生点,并会出现蓝色的粒子包围着她。


小结

在3D游戏开发套件中的多数对象会使用类似压力板功能的事件系统。我们可以探索Scenes > GamePlay 中的已有场景,了解其它对象在第一关和第二关是如何使用指令系统设置的。

 

今天的3D游戏开发套件指南入门篇就为大家介绍到这里,后续我们会分享相关套件的进阶开发篇,尽请期待,希望开发者能使用游戏开发套件尽情享受游戏设计的快乐!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62072.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity】Unity 2D游戏开发(三)2D游戏常用功能及插件

377节附近开始的2D游戏实例,基础的功能开发可以参考。 碰撞忽略 private void Start() {// 让第八层和第九层忽略碰撞,此段代码可以写在通用脚本内Physics2D.IgnoreLayerCollision(8, 9); }Easy Touch插件 可以用来做摇杆,功能简单&#x…

Unity3D ——强大的跨平台3D游戏开发工具(一)

众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。在现有的版本中,其强大的游戏制作功能已经达到让人瞠目结舌的地步。尤其是它在3.0版本里面制作的那款第一人称战争游戏,画质效果丝…

现有Unity转微信小游戏

关于微信小游戏开发的内容在《Unity WebGL 微信小游戏适配方案》中有详细,这里会忽略大部分更深入的细节,大家可以自行在下面的地址中找到答案。 此篇文章的目的是带着大家快速的把自己已有的游戏转成微信小游戏。 《Unity WebGL 微信小游戏适配方案》…

《Unity 2D与3D手机游戏开发实战》简介

#好书推荐##好书奇遇季#《Unity 2D与3D手机游戏开发实战》,京东当当天猫都有发售。彩色印制,定价89元,网店打折销售更便宜。本书配套源码、PPT课件,适合Unity游戏开发初学者,以及高校相关专业游戏开发课程的师生。 本书…

游戏开发经验-UnityADS接入

如果在Service里无法打开ads就去资源管理里去下载 //如果该平台(手机)支持Unity广告if (Advertisement.isSupported){ //初始化广告。(参数:游戏ID,是否是测试模式)Advertisement.Initialize("44…

unity3d开发传奇类游戏3D

传奇开发类游戏开发精讲 先上效果 技能治疗 技能伤害 近战 地图数据: vector2 数组。N行N列,描述地图大小。通过数据结构算法得出每个单元格的坐标 [x,y][x,y][x,y] [x,y][x,y][x,y] [x,y][x,y][x,y]对象移动 player{x0,y0} 右移动x1 左移动x-1 …

3D游戏编程与设计-Unity ch02

简答题 一、游戏对象(GameObjects)和资源(Assets)的区别与联系 游戏对象(GameObjects)是能容纳实际实现功能的组件,是Unity中代表人物、场景或道具的基本对象,简单来讲GameObjects也…

Unity游戏开发——新发教你做游戏(一):打开游戏开发新世界的大门

文章目录 一、前言二、制作思路三、提出问题四、具体实现 一、前言 嗨,大家好,我是新发,如下,我做了个简单的Demo,接下来我会详细介绍如何一步步制作,Demo工程我已上传到GitHub,感兴趣的同学可…

基于Unity的2d动画游戏-------------------c#开发

基于unity的2d动画制作----基于c#语言开发,类似于《DNF》的2d界面,目前只有一个游戏场景。成果图UI如下图所示 游戏成果视频已经上传B站: 2dAnimation游戏 游戏开发主要步骤: 1.素材收集(来自Unity的Asset Store&…

【项目展示】基于Unity开发的3DRPG游戏

介绍 项目为大四毕业设计的游戏内容部分,使用Unity3D开发,总代码6000行,全部为自己实现,主要是一套简单的代码框架,具备一定的扩展性。游戏中填充了第一关的内容以展示功能。(仍然有许多改进空间&#xff…

【游戏开发】2D RPG游戏

前言 通过对游戏《原神》的功能复刻来学习游戏开发 截止到10月,本项目已经开发的差不多了,不是开发的完善了,而是通过这个项目已经学会了Unity开发游戏的技巧,就不继续开发了。 这里展示一下目前的成果,并简述一下各…

Unity 3D 游戏与编程

3D 游戏与编程——作业二 1、简答题 1)解释 游戏对象(GameObject)和 资源(Assets)的区别和联系 Assets 是游戏中具体的资源,比如 texture,mesh,material,shader&#x…

unity3d开发微信小游戏2

文章目录 前言一、开发的一些记录二、最终截图总结 前言 最开使用unity3d开发微信小游戏,遇到了一些问题,记录一下, 同时创建了一个交流群QQ 641029627,现在应该没人,有需要的可以加入一起讨论,广告哥远离…

Unity简单2D游戏开发

Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏——开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Store中搜索下载 “Pixel Adventure ”,第一个就是…

Unity 开发微信小游戏初探

前言 最近因项目需要开始研究Unity开发微信小游戏相关的知识。期间遇到各种坑,网上查阅的资料基本类似,无法解决自己遇到的问题。特用本文记录下过程,方便其他人遇到同样的问题时能够参考。 开发环境 Unity 版本 根据微信小游戏插件文档推荐…

UNITY3D对接QQGame(PC)开发教程(2022)

效果 目标:能在UNITY3D里通过qqgame充值 因为目前还没有这类文章,所以填补这下块空白 文章包含 QQGame登录器的制作 QQGAME和UNITY3D的交互 QQGame平台用户信息的读取 支付规则,后台搭建。 和常见问题。 对接参考腾讯开发者有文档 https:/…

《Unity 2D与3D手机游戏开发实战》上架了。

新书上架了。 这本书主要是Unity开发的入门,附带了一个简单的2D例子,一个3D RPG的简单例子和一个尽可能用插件实现的射击游戏的例子。 书很薄,不过因为是彩页印刷,价钱不是那么实惠。不过说实话,因为这类书里面有很多…

Unity游戏开发 3D RPG(1-4)

如何将普通的3D项目升级到URP 在Package Manner 里的Unity Registry 里搜索 Universal RP ( 通用渲染管线Universal Render Pileline). 随后在Assets 新建Rendering ——URP Assets (with Universal Renderer) Edit -project setting -graphics,在Render pileline setting里…

Unity游戏开发:对话系统的实现

在解谜类游戏中,与npc的对话是一个基础且常用的功能。通常来说,在与npc的对话中玩家可以获取一些有价值的信息并对之后的游戏有一定的导向作用。此外,在玩家获取对应物品前后,与npc的对话内容也会发生相应改变。因此,我…

王小川大模型25天再升级!13B版本开源免费可商用,3090即可部署

衡宇 金磊 发自 凹非寺量子位 | 公众号 QbitAI 就在刚刚,王小川的开源大模型又有了新动作—— 百川智能,正式发布130亿参数通用大语言模型(Baichuan-13B-Base)。 并且官方对此的评价是: 性能最强的中英文百亿参数量开源…