【Unity技能】做一个简单的NPC

【Unity技能】做一个简单的NPC

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

1. 写在前面

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


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

【Unity技能】做一个简单的NPC


是不是非常像个幽灵~


以下是我在自己的project中实验的结果。

【Unity技能】做一个简单的NPC


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


这样的技术得到的效果和贴图关系非常大。所以假设效果不好再画一张贴图吧



2. 实现


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



2.1 改变Mesh材质


  • 首先新建一个空白对象。能够命名为holo_character,给它加入Mesh Filter和Mesh Render组件。

  • 将原模型的Mesh赋值给上述Mesh Filter组件。

    然后新建一个材质,并赋值给Mesh Render组件来替换原来的模型材质。

    新的材质使用Particles/Additive的Shader,贴图属性中使用这个NPC的贴图,也也能够直接使用原模型的材质贴图。材质颜色能够依据喜好自行调节。面板设置例如以下:
    【Unity技能】做一个简单的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看起来更像一个幽灵。我们加入一个闪烁的脚本。这个脚本的主要原理就是控制材质的透明度。非常easy。新建一个脚本FlickeringScript.cs。代码例如以下:

using UnityEngine;
using System.Collections;

public class FlickeringScript : MonoBehaviour {

	private Color color;

	// Use this for initialization
	void 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,比如火焰性等等。

【Unity技能】做一个简单的NPC


另一点要说明,假设你的模型绑定了骨骼动画的。那么模型上应该会自己主动绑定Skin Mesh Render组件,并且模型又是标准的T型,例如以下图这样。那么能够变通一下,NPC也使用Skin Mesh Render来播放动画,不至于让NPC一直都是伸展着胳膊的。。。

可是这样加入粒子时使用Mesh Particle Emitter就没实用了。

假设这样,我们能够自行调整粒子效果,得到其它的效果也是不错的~

【Unity技能】做一个简单的NPC

最后,假设您认为本文对您有所帮助,请帮小女子投一票吧。谢谢~

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


版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117640.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大四 Java开发实习近一年 记录(每6至12月更新一次)

    大四 Java开发实习近一年 记录(每6至12月更新一次)17年7月4号是我实习生入职的日子,因为是校企合作,所以没有面试、老师推荐、直接入职。刚来北京第一个感觉就是人多,还有就是热。刚到公司第一天,部门经理安排了我的mentor,他也是我的项目经理,安排座位之后给他我发了一些项目文档,让我先熟悉一下项目,然后给我发了几个常用工具的安装包,最重要的就是IDEA,之前在学校一直用MyEclipse,用了IDEA之后感觉确实不错,界面很漂亮。…

    2022年7月15日
    16
  • DOS的net命令详解

    DOS的net命令详解Net命令介绍Net命令是Windows操作系统中一个最重要的命令,它可以管理网络环境、服务、用户、登录等本地信息。前几个操作系统版本的Net命令会有些不同,但是后期操作系统中的Net命令的基本功能都相同。Net命令一般在DOS提示符下运行,即win+r,输入‘cmd’打开。所有的net命令均接受选项“yes”和“no”,也可缩写为“/y”和“/n”Net命令的使用帮助如图,直接输入“net/?”或者“net”即可返回net命令的具体语法。使用“nethelp命令名”还.

    2022年5月28日
    44
  • jmeter正则提取器用法_jmeter字符串截取

    jmeter正则提取器用法_jmeter字符串截取JMeter正则表达式提取器 转自:http://desert3.iteye.com/blog/1394934//提取HTML中隐藏域的值^(.*)$ //提取整个response返回提取MyLabel关联的input的值MyLabel”(.+:create:.+?)”  //提取下面link的href的值JSESSIONI

    2022年9月10日
    0
  • 张正友相机标定法原理与实现「建议收藏」

    张正友相机标定法原理与实现「建议收藏」张正友相机标定法是张正友教授1998年提出的单平面棋盘格的相机标定方法。传统标定法的标定板是需要三维的,需要非常精确,这很难制作,而张正友教授提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可以。同时也相对于自标定而言,提高了精度,便于操作。因此张氏标定法被广泛应用于计算机视觉方面。…

    2022年5月8日
    45
  • 虚拟机中安装GHO文件配置说明[通俗易懂]

    虚拟机中安装GHO文件配置说明[通俗易懂]虚拟机安装系统的配置说明(GHO文件)

    2022年7月4日
    390
  • Center OS 7 下的安装Apache「建议收藏」

    Center OS 7 下的安装Apache「建议收藏」使用yum安装,直接yuminstallhttpd

    2022年9月21日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号