一、创建项目,取名为HistoricalAdventure(古迹探险),导入素材

方法一:访问unity 素材网:Asset Store (unity.com),比如我们要导入一个天空的素材,我们在搜索栏输入Skybox,然后找到免费的素材(这里我已经添加)然后点进去选择“添加到我的资源”(需要登录你的unity账号才能添加)然后选择在Unity中打开,然后

然后下载

下载完成后导入

最终我们会在Project目录下得到一个这样的文件夹

方法二:第三方网站或其他渠道下载的资源文件(类似下图,以unitypackage结尾的文件),下载下来后直接拖到project目录下即可导入(或者在Project面板鼠标右键->import package->custom package)

然后就会弹出一个这样的框,然后我们选择import即可导入

二、创建地形(3dobject->terrain,创建好后在project面板会多出一个New Terrain,它用来保存地形相关的数据,故我们命名为Terrain Data,并新建Terrain文件夹放入),然后我们修改一下它的长宽高为50m(这里的高是最大高度)

编辑地形(这里Brush Size代表绘制笔刷的大小,Opacity代表绘制密度,即值越低坡度越缓,值越高坡度越陡)

如果想减低地形(按住Shift再用刷子刷即可)

如果想固定地形最高高度可以选择Set Height并指定最高高度

如果想是地形光滑一些,则选择Smooth Height进行粉刷

给地形添加贴图,选择Paint Texture->create Layer,选择之前导入好的素材就可以了(再Texture中)

设置法线使岩石更有质感

左边是设置了法线,右边是没有设置法线

在中间空的部分在添加一些地形

再创建一个地形用于粉刷(默认第一个Layer铺满全景,第二个用于粉刷)

添加树(模型)(这里的树资源是unity Assets store里Standard Assets里的)

使用shift可减少树

添加草(贴图)

三、前面我们知识学习了一些基本操作,接下来正式开始制作游戏,创建人物(在Meshes中把人物拖到Hierarchy面板,,命名为Hero)

根据人物大小创建地形(设置长宽高为20m),绘制地形(可适当平滑调节),调节光强度

这里需要注意下Size的大小(Size大小代表贴图单位以多大范围去铺满地形,太小就会密密麻麻不好看了)

添加石头(赋值多块后适当调整位置使其美观)

添加古迹遗迹

添加草(小草、大草、植被等,调节角度和大小不要都一样了)添加树

调整相机位置

Mesh Coliider:与原物体一本一致的coliider,碰撞检测复杂j计算量大不建议使用,系统性能消耗大,一般使用Box coliider/sphere collider/capsule coliider

四、添加火堆光

太阳光:最上面的太阳是游戏中的模拟太阳,下面是平行光对象(相当于太阳光),当我们调节平行光对象时上面的太阳位置是会变化的(你可以调节来看到日出和日落)

还有其他光源:

Directional Light:平行光

Point Light:点光,相当于一个电灯泡

Spot Light:点光,相当于一个手电筒光

Area Light:区域光

了解了光源后,我们来进一步制作,首先把太阳光调暗营造一个黑夜的场景

制作灯(先做一个灯座,然后使用Point Light,再做成prefabs)

使用LightMapping取消实时灯光而是做成贴图形式减少实时计算压力,打开Window->Rendering->Lighting,将窗口拖至右侧以便查看

将Terrain、Env、Light中Inspector面板中的static勾选

修改每个灯光的Mode为Baked(注意是每个都要改)

然后选择Lighting->Scene->Generate Lighting,点击后会有进度条(加载会慢需要耐心等待)

当进度条加载完毕后,我们禁用所有灯光后,就会看到新生成了同样效果的灯光贴图了

将有灯座的灯光Mode设置为Mixed,shadow Type设置为Soft Shadows

然后再次选择Lighting->Scene->Generate Lighting,最终效果:

设置火堆效果

创建火堆,并调整到灯座中心位置,

设置火焰有效区域

设置火焰个数和范围

设置火焰大小

创建火焰材质并设置火焰的材质 

然后apply All,即给其他火堆也添加效果

最终效果

补充:

创建火堆动画

点击创建,然后在Animations下新建一个Flicker文件

 为Intensity添加动画

调节每帧的灯光强度,然后Apply All应用到其他火堆

为火苗添加运动,改变火堆的位置从而改变影子的朝向

五、添加人物导航(即点击地面某点,人物自动通过最短路径移动到该点)

Window->AI->Navigation,然后在右侧就会出现对应面板

调整半径,然后点击Bake

其中蓝色部分为角色可行走区域

取消草的navigation static,然后再次Bake(这样做是让人物可以穿过草移动,即增加可移动区域,其他草同理)

同时我们注意到石头上方也被设置为了可移动区域(但实际是不可移动的)所以我们需要设置其为不可移动,其他石头同理,然后再次Bake

为主角添加导航组件(导航组件是为了判断某个位置角色是否可以穿过)

调整高度和半径

创建Hero代码(并把Hero与Hero对象绑定)当鼠标左键点击地面某点时,控制角色移动(实现逻辑:点击鼠标后从点击位置生成一束射线,当射线与地面碰撞时则输出地面上的该点)

绑定NavMeshAgent,并设置导航目的地

设置Angular Speed(人物转向速度),然后演示时就可以看到小人能移动了

添加相机跟随(添加FollowTarget脚本、绑定Camera)

绑定Hero

现在相机跟着人物同步移动了

但是,我们发现人物移动没有行走动画,所以接下来,我们做进一步添加

预览动画

在Animations文件夹下新建Animator Controller,命名为HeroController

绑定HeroController

打开Animator面板

设置默认状态(将下图框选部分拖入面板中即可)

同理添加walk和run动画

添加参数

添加从idle到walk的转变关联,并设置促发时的速度阈值(如下图为速度大于0时转变为walk动画状态)

同理设置从walk变为idle状态的阈值(速度小于0.1时转变)

将两段箭头的Has Exit Time取消勾选(表示动画的切换随时发生)

同理,设置walk与run状态变换阈值,同时取消Has Exit Time勾选

设置speed参数值(需要在代码中设置),首先在Hero代码中声明一个animator,然后绑定Animator

最后运行游戏,可以看到在人物移动时状态的切换(角色移动时先走一小段距离然后变为跑的状态)

引用:登录 - SiKi学院 - 生命不息,学习不止!

Unity学习笔记(四)—— 制作第三个小游戏(像模像样的)相关推荐

  1. Unity使用MVC架构制作牧师与魔鬼小游戏

    Unity使用MVC架构制作牧师与魔鬼小游戏 MVC架构简介 MVC概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller) ...

  2. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  3. Unity学习笔记2 简易2D横版RPG游戏制作(二)

    十二.敌人受攻击时的闪烁和Player的生命值的修正 上一篇中,我们利用Controller2D中的IEnumerator TakenDamage接口,使得我们的Player受到攻击时会进行闪烁,我们 ...

  4. Python学习笔记 十一:图形用户界面和小游戏开发

    1. 基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述. Python默认的GUI开发模块是tkinter(在Pyth ...

  5. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day15-阶段项目(拼图小游戏)(上篇)

    1.主界面分析 1.练习:创建主界面1 到IDEA中创建一个宽603像素,高680像素的游戏主界面 到IDEA中创建一个宽488像素,高430像素的登录界面 到IDEA中创建一个宽488像素,高500 ...

  6. Unity学习笔记3 简易2D横版RPG游戏制作(三)

    这一篇本来应该是在上一篇后面直接补进去的.不过因为排版的问题.所以我就另开一篇来整理了,好了,废话不多说,马上整理: 十八.关卡的锁定与解锁 前面我们已经解决了在游戏开始时可以选择关卡的问题,接下来我 ...

  7. 西门子PLC学习笔记四-(控制三项异步电动机的启动停止)

    本篇是学习S7-300的一个小程序,用于对PLC开发简单直观的认识. 1.三项异步电动机电路图 2.PLC控制接线图 从图中可以看出控制按钮接PLC 信号模块SM的I0.0.I0.1端口,输出信号从Q ...

  8. [Unity学习笔记:FPS游戏制作(3)]子弹拖尾,碰撞与枪口火焰效果

    往期博客[Unity学习笔记:FPS游戏制作(2)] 发射子弹----(2021.6.20学习笔记) 文章目录 一,实现思路 二,粒子效果的实现 (1)子弹拖尾特效的实现 (2)枪口火焰特效的实现 ( ...

  9. [Unity学习笔记:FPS游戏制作(2)] 发射子弹————(2021.6.20学习笔记)

    往期博客 [Unity学习笔记:FPS游戏制作(1)]角色的移动,旋转与推进上升----(2021.6.13学习笔记) 文章目录 一,实现思路 二,实现代码 三,脚本的使用方法 四,最终效果 一,实现 ...

最新文章

  1. 如何将非官方扩展程序加入chrome的白名单
  2. Qt Creator在浏览器中预览
  3. 工作和人工智能的未来
  4. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
  5. Spark - About trend of ERP topic - serie 2employee
  6. 学习笔记(35续):Python网络编程并发编程-基于gevent及线程池实现的并发套接字通讯
  7. NOIP模拟测试11「string·matrix·big」
  8. pos机未能连接服务器,pos 机链接不了服务器
  9. Hbase完全分布式高可用集群安装配置
  10. Vue指令之v-on
  11. 好看的php表格样式,3款精美的css3 table表格样式设计
  12. Ubuntu 18.04搭建Moodle
  13. 【GPU精粹与Shader编程】(六) 《GPU Gems 3》:真实感皮肤渲染技术总结
  14. Python实现最简单的深度学习任意层神经网络算法,通熟易懂,里面包括了详细注释的源码
  15. CC2530单片机P1寄存器说明
  16. 沉睡者 - 怎么样可以在网络上挣钱,告诉你网上挣钱的5种方法!
  17. 【FACT】函数使用技巧
  18. android 录屏工具,Android截屏、录屏工具
  19. 世界上前11名最贵跑车
  20. [绍棠] iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件) 以及 iOS App与iTunes文件传输的方法和对iOS App文件结构的说明

热门文章

  1. 如何选择MT4交易软件?
  2. 错误描述:fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#includestdafx.h”?
  3. 【剑指offer】 用两个栈实现队列 java实现
  4. 【蓝桥杯嵌入式】蓝桥杯嵌入式第十四届省赛程序真题,真题分析与代码讲解
  5. coarse-to-fine(2)合法软件/恶意软件
  6. 最新代雅阁噪音测试软件,【图】雅阁八代全车隔音噪音测试报告(用科学的数据说话)(转)...
  7. 【python】Linux离线安装anaconda3
  8. 快速解决方案UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupport major.minor version 52.0?
  9. 建立CCS 3.3工程
  10. 禅道----项目经理创建项目