Unity制作《水果忍者》刀光特效
发表于2017-05-10
最近在学习Unity中的LineRenderer组件的时候,突发奇想,想到怎么去实现水果忍者的刀光特效了,下面是给大家分享关于实现水果忍者的刀光特效的方法。
制作起来并没有想象的那么难,只是想让其逼真起来的话需要一张好的材质贴,博主找了一张不是很完美的贴图,实现了下
最终效果图如下
该Demo源码我将上传,提供大家下载
接下来先介绍使用LineRenderer来绘图
在Hierachy面板上创建3D->Panel,调整摄像机位置,使其视野完全看见Panel,目的是Panel作为画布
创建一个脚本,代码如下
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class DrawLines : MonoBehaviour
- {
- private LineRenderer renderer;
- public Material rendererMaterial;
- private List pointLists;
- private bool isDrawing=false;
- // Use this for initialization
- void Start ()
- {
- pointLists = new List();
- renderer = new LineRenderer();
- }
- // Update is called once per frame
- void Update ()
- {
- if (Input.GetMouseButtonDown(0))
- {
- GameObject lineObj = new GameObject();
- lineObj.transform.SetParent(this.transform);
- renderer = lineObj.AddComponent();
- renderer.material = rendererMaterial;
- renderer.startColor = Color.red;
- renderer.endColor = Color.red;
- //renderer.widthMultiplier = 0.1f;
- renderer.startWidth = 0.1f;
- renderer.endWidth = 0.1f;
- DrawLineByPoint();
- isDrawing = true;
- Debug.Log("开始绘图");
- }
- if (Input.GetMouseButtonUp(0))
- {
- isDrawing = false;
- pointLists.Clear();
- Debug.Log("绘图结束");
- }
- if (isDrawing)
- {
- DrawLineByPoint();
- renderer.numPositions = pointLists.Count;
- renderer.SetPositions(pointLists.ToArray());
- Debug.Log("正在绘图");
- }
- }
- private void DrawLineByPoint()
- {
- Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- RaycastHit hit;
- bool isHit = Physics.Raycast(ray,out hit);
- if (isHit)
- {
- Vector3 linePoint = new Vector3(hit.point.x,0,hit.point.z);
- pointLists.Add(linePoint);
- }
- }
- }
将其挂载到Panel上,此时Panel需要为其添加Material
我创建了一个下图的Material
运行游戏,绘图正常
刀光特效唯一的特点的是在LineRenderer组件上添加了材质
接下来,我选择了一张贴图(贴图不是很完美,可以按自己的需求选择),添加到材质上,选择了shader
结束!!!之后的效果便是文章开篇的效果了