Unity制作《水果忍者》刀光特效

发表于2017-05-10
评论1 3.7k浏览

最近在学习Unity中的LineRenderer组件的时候,突发奇想,想到怎么去实现水果忍者的刀光特效了,下面是给大家分享关于实现水果忍者的刀光特效的方法。


制作起来并没有想象的那么难,只是想让其逼真起来的话需要一张好的材质贴,博主找了一张不是很完美的贴图,实现了下

最终效果图如下


该Demo源码我将上传,提供大家下载

接下来先介绍使用LineRenderer来绘图

在Hierachy面板上创建3D->Panel,调整摄像机位置,使其视野完全看见Panel,目的是Panel作为画布


创建一个脚本,代码如下

[csharp] view plain copy
 
  1. using System.Collections;  
  2. using System.Collections.Generic;  
  3. using UnityEngine;  
  4.   
  5. public class DrawLines : MonoBehaviour  
  6. {  
  7.     private LineRenderer renderer;  
  8.     public Material rendererMaterial;  
  9.     private List pointLists;  
  10.     private bool isDrawing=false;  
  11.   
  12.     // Use this for initialization  
  13.     void Start ()  
  14.     {  
  15.         pointLists = new List();  
  16.         renderer = new LineRenderer();  
  17.     }  
  18.       
  19.     // Update is called once per frame  
  20.     void Update ()  
  21.     {  
  22.         if (Input.GetMouseButtonDown(0))  
  23.         {  
  24.             GameObject lineObj = new GameObject();  
  25.             lineObj.transform.SetParent(this.transform);  
  26.             renderer = lineObj.AddComponent();  
  27.             renderer.material = rendererMaterial;  
  28.             renderer.startColor = Color.red;  
  29.             renderer.endColor = Color.red;  
  30.             //renderer.widthMultiplier = 0.1f;  
  31.             renderer.startWidth = 0.1f;  
  32.             renderer.endWidth = 0.1f;  
  33.               
  34.   
  35.             DrawLineByPoint();  
  36.   
  37.             isDrawing = true;  
  38.   
  39.             Debug.Log("开始绘图");  
  40.         }  
  41.   
  42.         if (Input.GetMouseButtonUp(0))  
  43.         {  
  44.             isDrawing = false;  
  45.             pointLists.Clear();  
  46.   
  47.             Debug.Log("绘图结束");  
  48.         }  
  49.   
  50.         if (isDrawing)  
  51.         {  
  52.             DrawLineByPoint();  
  53.   
  54.             renderer.numPositions = pointLists.Count;  
  55.             renderer.SetPositions(pointLists.ToArray());  
  56.   
  57.             Debug.Log("正在绘图");  
  58.         }  
  59.     }  
  60.   
  61.     private void DrawLineByPoint()  
  62.     {  
  63.         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);  
  64.         RaycastHit hit;  
  65.         bool isHit = Physics.Raycast(ray,out hit);  
  66.         if (isHit)  
  67.         {  
  68.             Vector3 linePoint = new Vector3(hit.point.x,0,hit.point.z);  
  69.             pointLists.Add(linePoint);  
  70.         }  
  71.     }  
  72. }  


将其挂载到Panel上,此时Panel需要为其添加Material

我创建了一个下图的Material


运行游戏,绘图正常



刀光特效唯一的特点的是在LineRenderer组件上添加了材质


接下来,我选择了一张贴图(贴图不是很完美,可以按自己的需求选择),添加到材质上,选择了shader


结束!!!之后的效果便是文章开篇的效果了


如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引