提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
     文章目录
    
    
    
    前言
   
本教程教大家如何使用Unity创建一个RPG游戏,实现最基本的角色移动,战斗,背包管理,UI搭建,剧情和对话。
    
     项目资源及源码:
    
   
    链接:https://pan.baidu.com/s/101oY6xXZ1HUET7If2FD0gw?pwd=48q5
    
    提取码:48q5
   
项目中所用资源包均已添加
在此之前,在右上角中打开Unity用户手册,合理利用手册可以让学习更加轻松。
     
   
    
    
    一、导入资源包
   
先在项目中创建一个文件夹Resources,用于存放下载的资源包,方便后期使用。
     
   
点击左上角Window->Package Manager
     
   
    此处可以查询到在商店订阅的包并下载
     
   
本项目大多使用了在网上下载的免费资源包,这里推荐一个下载站
    
     爱给网_音效配乐_3D模型_视频素材_免费下载 (aigei.com)
    
   
    
    
    二、场景
   
    
    
    1.在项目中创建文件夹Scenes
   
     
   
在文件夹中右键->Create->Scene创建一个空场景
     
   
    2、地形(Terrain)
   
在Hierarchy栏中右键新建地形Terrain
     
   
右侧中组件Terrain可以调整地形大小等信息
     
   
点击第二个图标,在选择栏中的六项分别为
    
     
   
点击Paint Texture->Edit Terrain Layers->Create Layer
找到资源中的贴图并添加 在Normal Map添加法线贴图
    
     
   
Brusher中可调整画笔的大小和灵敏度
     
   
    在Scene中直接涂抹即可
     
   
第三栏Paint Trees同理,添加对象
建议将画笔大小调整为1,密度调为最低,一颗颗种树,大区域种树可能导致卡顿
Tree Height中勾选Random可以达到随机树高的效果
    
     
   
在Scene中左键种树
     
   
Paint Details同理,不再赘述。
    三、游戏内的常用组件
   
    1、Transform组件
   
在资源中找到需要的模型,直接拖入场景中
     
   
在游戏对象属性栏中的Transform组件
Position:对象的坐标,Rotation:欧拉角,Scale:缩放
在场景中选中对象后,可以使用快捷键qwer分别为手、对象移动、角度调整、缩放调整
     
   
    2、碰撞体组件Collider
   
新建文件夹Role,用于存放游戏角色资源 导入资源包并将游戏角色添加到场景
    
     
   
右侧Collider为碰撞体组件,Capsule Collider为胶囊碰撞体
Edit Collider可以调整碰撞体大小
     
   
Is Trigger为触发器,勾选后刚体不会与碰撞体物体发生直接的碰撞,而是直接穿透碰撞体。
触发信息检测使用以下 3 个函数:
MonoBehaviour.OnTriggerEnter(Collider collider),当进入触发器时触发。
MonoBehaviour.OnTriggerExit(Collider collider),当退出触发器时触发。
MonoBehaviour.OnTriggerStay(Collider collider),当逗留在触发器中时触发
用途例如:在角色扮演游戏里,玩家走到一个地方会发生出现BOSS的事件,就可以用触发器来实现。
    3、刚体组件(Rigidbody)
   
属性分别为
    Mass 重力
    
    Drag 摩擦力
    
    Angular Drag 角摩擦力(空气阻力)
    
    Use Gravity 是否适用重力
    
    Is Kinematic 是否具有物理引擎效果(自身属性失效)
    
    Interpolate使运动轨迹变的平滑,由上到下性能开销递增
    
    Collsion Detection :
    
    1.Discrete 正常判断碰撞器
    
    2.Continuous 判断快速移动的物体(性能开销大)
    
    3.Contiuous Dynamic 动态判断快速移动物体 较为常用。
    
    Constrints 锁定刚体位置和角度
   
    4、碰撞
   
    一:产生碰撞的条件
    
    1:若要产生碰撞,必须双方都要有碰撞器。
    
    2:运动的一方一定要有刚体,另一方有无刚体无所谓。
    
    注:如果运动的一方无刚体,它去碰撞静止的刚体,相当于没有装上。
   
    二:接触的两种方式
    
    1:Collision碰撞,造成物理碰撞,可以在碰撞时执行OnCollision事件。
    
    2:Trigger触发,取消所有的物理碰撞,可以在触发时执行OnTrigger事件。
   
    四、脚本初识
   
在unity中,大多数操作都是由游戏对象身上所搭载的脚本来实现的。
    1、给角色创建一个脚本
   
选中一个游戏对象后,在属性栏中可以为该角色添加脚本
点击Add Component
     
   
输入脚本名称后回车两次
     
   
打开脚本
     
   
Awake: 当物体载入时立即调用1次,常用于在游戏开始前进行初始化。
OnEnable:每当脚本对象启用时调用。
Start :脚本对象启用时被调用1次,执行晚于Awake。
Update:每帧调用一次。
    2、简单的移动实现
   
(1)Vector
1. Vector 表示向量、矢量的意思,含有大小和方向;
Vector3 由名可得表示三维向量,包含 x, y, z 三个分量。一般在使用中transform下的position、scale、rotation等属性都可以通过设置Vector3的值来改变其相应的位置、大小。
(2)实现移动
思路:获取当前对象的transform脚本,向前移动即为让position中的X增加。
获取到键盘输入W后,X每帧增加0.01。
void Update()
    {
        if(Input.GetKey(KeyCode.W))//获取输入
        {
            transform.position += new Vector3(0.01f,0,0);//transform为当前脚本所搭载物体的transform组件,
        }
    }
    总结
   
本章节介绍Unity引擎的基本操作以及脚本的初识,后续完整游戏的开发见下篇。
 
