1. 写在前面

前几天看了cgcookie的一个教程,学习了下怎么根据已有人物模型制作一个仿版的NPC人物,感觉挺好玩的,整理一下放到博客里!

先看一下教程里面的最终效果。

是不是很像个幽灵~

下面是我在自己的工程中实验的结果。

中间是游戏角色,两遍两个就是NPC啦。

这种技术得到的效果和贴图关系很大,所以如果效果不好再画一张贴图吧

2. 实现

实现非常简单,一共包含三个部分:改变Mesh材质,给Mesh添加Particle,最后添加闪烁的脚本

2.1 改变Mesh材质

  • 首先新建一个空白对象,可以命名为holo_character,给它添加Mesh Filter和Mesh Render组件。
  • 将原模型的Mesh赋值给上述Mesh Filter组件。然后新建一个材质,并赋值给Mesh Render组件来替换原来的模型材质。新的材质使用Particles/Additive的Shader,贴图属性中使用这个NPC的贴图,也也可以直接使用原模型的材质贴图。材质颜色可以根据喜好自行调节。面板设置如下:
  • 如果你的模型包含多个Mesh,例如头和身体是分开的,那么对每个部分都做如上操作就行了。
现在你的NPC应该看起来幽灵化了。

2.2 给Mesh添加Particle

给holo_character依次添加Mesh Particle Emitter、Particle Animator和Particle Render组件。将上一步新建的材质赋值给Particle Render中的材质对象。到了这里基本外观就出来了。

然后,可以根据需要调整相应的参数来得到想要的效果。例如,可以调整Mesh Particle Emitter中的Min Size,Max Size来调整粒子的大小,调整MinEnergy和Max Energy来调整每个粒子的持续时间,调整Min Emission和Max Emission来调整同一时间粒子的个数等。

2.3 添加闪烁脚本

最后,为了让这个NPC看起来更像一个幽灵,我们添加一个闪烁的脚本。这个脚本的主要原理就是控制材质的透明度,非常简单。新建一个脚本FlickeringScript.cs。代码如下:

using UnityEngine;
using System.Collections;public class FlickeringScript : MonoBehaviour {private Color color;// Use this for initializationvoid Start () {color = renderer.material.GetColor("_TintColor");StartCoroutine(WaitForColor());}IEnumerator WaitForColor() {while (true) {yield return new WaitForSeconds(Random.Range(0.0f, 0.1f));color.a = Random.Range(0.0f, 0.5f);renderer.material.SetColor("_TintColor", color);}}
}

将上述代码添加到holo_character。

3. 最后的话

这是一种很tricky的做法,可以通过调整粒子效果来得到不同类型的NPC,例如火焰性等等。

还有一点要说明,如果你的模型绑定了骨骼动画的,那么模型上应该会自动绑定Skin Mesh Render组件,而且模型又是标准的T型,如下图这样,那么可以变通一下,NPC也使用Skin Mesh Render来播放动画,不至于让NPC一直都是伸展着胳膊的。。。但是这样添加粒子时使用Mesh Particle Emitter就没有用了。如果这样,我们可以自行调整粒子效果,得到其他的效果也是不错的~

最后,如果您觉得本文对您有所帮助,请帮小女子投一票吧!谢谢~

http://vote.blog.csdn.net/Article/Details?articleid=30241041

转载于:https://www.cnblogs.com/xiaowangba/p/6314687.html

【Unity技巧】制作一个简单的NPC相关推荐

  1. Unity3d 制作一个简单的NPC对话系统

    制作一个简单的NPC对话系统 文章目录 制作一个简单的NPC对话系统 前言 效果展示 进入对话区域 开始对话 Inspector面板可调选项 准备工作 NPC UI 代码 完整代码 详细逻辑 开启对话 ...

  2. Unity中用shader graph制作一个简单的传送门效果

    Unity中用shader graph制作一个简单的传送门效果 一.配置渲染管线 1.通过菜单"Asset" --> "Create" --> &q ...

  3. (译)如何使用GameCenter制作一个简单的多人游戏教程:第一部分

    免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...

  4. Unity入门——实现一个简单的跑酷游戏(资源预制)

    Unity入门--实现一个简单的跑酷游戏 资源预制 一款跑酷游戏,需要大量重复的场景资源,比如道路.障碍物等,无论是从游戏体验的角度还是运行效率的角度考虑,都不应该全部事先摆好,而是应该由代码随机生成 ...

  5. 使用 Flutter 制作一个简单的笑话生成器应用程序

    在本教程中,我将向您展示如何使用 Flutter 制作一个简单的笑话生成器应用程序 对于这个项目,我们将从 RESTful API 获取数据 API的链接: 随机笑话 对于这个项目,我不会关注应用程序 ...

  6. 实例学习SSIS(一)--制作一个简单的ETL包

    http://www.cnblogs.com/tenghoo/archive/2009/10/archive/2009/10/archive/2009/10/16/ssis_lookup.html 导 ...

  7. python计算器教程,用Python程序制作一个简单的计算器

    用Python程序制作一个简单的计算器 在此示例中,您将学习创建一个简单的计算器,该计算器可以根据用户的输入进行加,减,乘或除. 要理解此示例,您应该了解以下Python编程主题: 通过函数创建简单计 ...

  8. 32位mips运算器logisim_大神教你制作一个简单的16位CPU

    如何制作一个简单的16位CPU,首先我们要明确CPU是做什么的,想必各位都比我清楚,百度的资料也很全..... 如果想要制作一个CPU,首先得明白下计算机的组成结构(或者计算机的替代品,因为并不是只有 ...

  9. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)

    知乎小白第一次写专栏,还请多指教. 先放成果. GitHub源码: lrioxh/HAR-applet-of-Wechat​github.com b站演示视频: 居然不需要服务器?!如何制作一个简单的 ...

最新文章

  1. Android5.0之CoordinatorLayout的使用
  2. 为nginx创建windows服务自启动
  3. BeetleX轻松搭建HTTP和Weboskcet网关
  4. SCRF的简介及防护手段
  5. DataTable的Merge方法和添加datatable到dataset
  6. hue集成mysql报错_hue集成hive访问报database is locked
  7. uboot第一阶段详细分析
  8. python中元组的赋值_在Python中,元组可以被赋值修改。( ) (2.0分)_学小易找答案...
  9. 机器学习基石1 学习笔记
  10. Win7系统ip地址配置错误网络无法连接的解决办法
  11. 中国最美的一千个汉字 : 千字文4
  12. html 加载c盘下的图片,SpringBoot取本地(服务器)的图片展示在html页面解决办法...
  13. 《C语言点滴》一第1章 程序猿 程序媛1.1 装备篇
  14. Python中的多线程是假的多线程
  15. K8S部署机器学习平台
  16. 2020宁波市多校赛训练biu~
  17. DDN区块链受邀为南京2020年区块链技术与应用师资培训班提供实训
  18. springcloud五大神兽之Feign
  19. 技术选型实战|BFE vs Nginx
  20. 用好搜索神器Everything,盘活你的文件

热门文章

  1. 在vue2.x项目中怎么引入Element UI
  2. WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。...
  3. Java学习之路(七):泛型
  4. redis的rpm包下载安装
  5. csu 1554: SG Value 思维题
  6. H5新特性 input type=date 在手机上默认提示显示无效解决办法
  7. SwipeRefreshLayout实现上拉加载
  8. 曼昆《经济学原理》(第五版)习题解答 第三章 相互依存性与贸易的好处
  9. (转贴)给Repeater、Datalist和Datagrid增加自动编号列
  10. Git 工具 - 子模块 外部引用