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

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

该Demo源码我将上传,提供大家下载 http://download.csdn.net/detail/qq_33747722/9829194
接下来先介绍使用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<Vector3> pointLists;
- private bool isDrawing=false;
-
-
- void Start ()
- {
- pointLists = new List<Vector3>();
- renderer = new LineRenderer();
- }
-
-
- void Update ()
- {
- if (Input.GetMouseButtonDown(0))
- {
- GameObject lineObj = new GameObject();
- lineObj.transform.SetParent(this.transform);
- renderer = lineObj.AddComponent<LineRenderer>();
- renderer.material = rendererMaterial;
- renderer.startColor = Color.red;
- renderer.endColor = Color.red;
-
- 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

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