使用Unity3D实现简单的RPG游戏(附源码)(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
文章目录
前言
一、导入资源包
二、场景
1.在项目中创建文件夹Scenes
2、地形(Terrain)
三、游戏内的常用组件
1、Transform组件
2、碰撞体组件Collider
3、刚体组件(Rigidbody)
4、碰撞
四、脚本初识
1、给角色创建一个脚本
2、简单的移动实现
总结
前言
本教程教大家如何使用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引擎的基本操作以及脚本的初识,后续完整游戏的开发见下篇。
使用Unity3D实现简单的RPG游戏(附源码)(一)相关推荐
- python跑酷游戏源码_Phaser.js实现简单的跑酷游戏附源码下载
采用的物理引擎是Phaser.js 在这里对此引擎不做过多介绍(因为我也是小白,嘿嘿) 效果展示: 源码(详细源码图片资源可点击文章下方或屏幕右上方的github链接进行clone) 1.创建游戏舞台 ...
- java手机象棋软件下载,Java手机网络版象棋游戏附源码JAVA游戏源码下载
运行于手机上的中国象棋游戏,鉴于JAVA J2ME技术,本游戏分服务端和客户端,导入JAR包即可在手机上运行,内有开发文档和运用说明. Java手机网络版象棋游戏附源码 (1 folders, 2 f ...
- html实现扫雷小游戏(附源码)
文章目录 实现功能 1.扫雷设计 1.1 主界面 1.2 扫雷难度 1.3 附带功能 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blo ...
- JAVA飞机大战游戏附源码
JAVA飞机大战附源码 java飞机大战 效果图如下 java飞机大战 话不多说 直接上源码 窗体部分 package UI; //自定义窗体 //创建类 继承JFrame //创建构造方法,设置窗体 ...
- 用C语言easyx库来写一个简单的翻翻乐小游戏(附源码素材)
简明目录 写在前面 easyx库 准备工作 新建项目文件 分析 素材分析 上代码吧 地图表示 开始界面 地图初始化(打乱) 游戏过程实现 主函数的实现 测试 优化 1.游戏分数 2.游戏时间 3.nu ...
- 【android原生态RPG游戏框架源码】
转载请注明原创地址:http://www.cnblogs.com/zisou/p/android-RPG.html 这份源码是在今年6月份写的,当时公司有一个技术部们的学习讨论的讲座,然后我自己就写了 ...
- 【Python游戏】Python基于pygame实现的人机大战的斗兽棋小游戏 | 附源码
前言 有粉丝说要我出一期Python版本的斗兽棋,今天宠粉狂魔的我不就来啦!! 虽然是一个简单的小游戏,但是对于新手小伙伴来说还是有一定的小难度的哟!要是不理解都可以找到小编的哈!! 相关文件 关注小 ...
- 【Python游戏】基于pygame实现的一个Dino Rush 恐龙宝贝冲冲冲的小游戏 | 附源码
前言 halo,包子们晚上好 很久没有更新啦,主要是小编这边最近有点小忙 今天给大家整一个Dino Rush 恐龙宝贝冲冲冲的小游戏 还是一个比较记经典的小游戏,还记这可谷歌浏览器上没有网也能打发时间 ...
- 17 - python——简单的坦克大战(附源码)
基于对面向对象编程的思想完成简单的坦克大战游戏.主要目的锻炼面相对象编程思想 同样的在使用python进行游戏编写时需要安装pygame模块 安装方法: pycharm安装方式:File --> ...
最新文章
- Hypertable 0.9.6.5 发布,分布式数据库
- 通信系统设计与python的书_腾讯十年Python开发老司机推荐的入门书籍,你确定不看吗?...
- ReactNative的基本组件的认识
- 【MIPS汇编】ADDI,ADDIU,ADD,ADDU的区别、有符号无符号的谬误
- IT巨头组队年末将推“Gen-Z”内存新架构,英特尔和思科缺席是闹哪样?
- ​怎么用藏头诗向女友表白......
- LeetCode 640. 求解方程(字符串)
- vutils.save_image==>将给定的张量保存为图像
- 17、SpringBoot------整合dubbo
- tomcat启动慢, Creation of SecureRandom instance for session ID generation using [SHA1PRNG]took [xx] mil
- hdu1243----最长公共子序列
- mod sim tcp配置_ModSim32-ModScan32Modbus调试工具使用及配置说明
- 自定义IP在PCIE中使用
- 机器人导航,人工势场法的地图导航规划
- VS C++控制台程序 错误 fatal error C1083: 无法打开包括文件 解决办法
- 地中海文明卢浮宫特展全攻略(国家博物馆),通俗版
- 年终敬酒万能语句(领导篇)
- 关于调用百度AI接口进行图片识别的实现(C#)
- 【迁移学习】深度域自适应网络DANN模型
- 严格对角化基态Lanczos算法C++ Eigen实现
热门文章
- S7-200SMART案例分析——数据类型和地址格式
- 【智能优化算法】基于免疫算法求解单目标优化问题附matlab代码
- Struts 2再爆高危漏洞CVE-2017-5638 绿盟科技发布免费扫描工具及产品升级包
- 电子陀螺仪的角度获取测试
- 大数据(041)机器学习【多元线性回归实例】
- vue侧边导航页面效果
- 计算机物质与结构微命令,2015年哈尔滨工程大学082700核科学与技术考研大纲(官方)...
- PMP(第六版)十大知识领域、五大过程组、四十九个过程矩阵
- PMBOK(第六版) PMP笔记——《一》第一章 引论
- linux文本去重分割,Linux命令去重统计排序