开发文章

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

最近在学习Unity中的LineRenderer组件的时候,突发奇想,想到怎么实现水果忍者的刀光特效

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

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

最终效果图如下

最终效果图如下.png

该Demo源码我将上传,提供大家下载 http://download.csdn.net/detail/qq_33747722/9829194

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

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

调整摄像机位置.png

创建一个脚本,代码如下

复制内容到剪贴板
  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<Vector3> pointLists;    
  10.     private bool isDrawing=false;    
  11.     
  12.     // Use this for initialization    
  13.     void Start ()    
  14.     {    
  15.         pointLists = new List<Vector3>();    
  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<LineRenderer>();    
  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

图的Material.png

运行游戏,绘图正常

运行游戏,绘图正常.png

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

刀光特效唯.png

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

一张贴图.png

 

 

感谢 即步 支持 磐实编程网 原文地址:
blog.csdn.net/qq_33747722/article/details/70950236

文章信息

发布时间:2017-04-30

作者:即步

发布者:aquwcw

浏览次数: