南京产品网站建设收费,假网站怎么做呢,佛山网站制作,建立个人网站的步骤有哪些系列文章目录
Unity工具 文章目录 系列文章目录前言一、效果如下二、制作步骤2-1、制作shader2-2、shader代码2-3、制作材质球2-4、新建Quad2-5、制作预制体2-6 、实现代码2-7、设置Quad到脚本2-8、路径设置如下 三、说明四、运行程序总结 前言
大家好#xff0c;我是心疼你…系列文章目录
Unity工具 文章目录 系列文章目录前言一、效果如下二、制作步骤2-1、制作shader2-2、shader代码2-3、制作材质球2-4、新建Quad2-5、制作预制体2-6 、实现代码2-7、设置Quad到脚本2-8、路径设置如下 三、说明四、运行程序总结 前言
大家好我是心疼你的一切不定时更新Unity开发技巧觉得有用记得一键三连哦。 提示以下是本篇文章正文内容下面案例可供参考
一、效果如下 Unity箭头指向目标点视频 二、制作步骤
2-1、制作shader
首先先生成shader文件
2-2、shader代码
Shader Custom/ZhiXiangJianTou
{Properties{_MainTex(Texture, 2D) white {}_ScrollYSpeed(Y Scroll Speed, Range(-20, 20)) 2}SubShader{Tags { Queue Transparent RenderType Transparent }LOD 100//双面渲染Cull Off//Alpha混合Blend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;fixed _ScrollYSpeed;v2f vert(appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);return o;}fixed4 frag(v2f i) : SV_Target{fixed2 uv i.uv;uv.y _ScrollYSpeed * _Time;fixed4 col tex2D(_MainTex, uv);return col;}ENDCG}}
}
2-3、制作材质球 所需要的贴图
2-4、新建Quad
新建一个Quad的对象给他换上刚刚的材质球 做成预制体一会用
2-5、制作预制体
1.拖到Project自己创的文件夹下面 2.如箭头就是刚刚生层的预制体留着一会用
2-6 、实现代码
预制体一拖路径点一拖运行即可看到效果
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ZhiXiangJianTou : MonoBehaviour
{public MeshRenderer meshRenderer;//箭头3D对象Quad 预制体public ListTransform points new ListTransform();//路径点private ListMeshRenderer lines new ListMeshRenderer();//显示的路径public float xscale 1f;//缩放比例public float yscale 1f;void Start(){//箭头宽度缩放值xscale meshRenderer.transform.localScale.x;//箭头长度缩放值yscale meshRenderer.transform.localScale.y;}//画路径public void DrawPath(){if (points null || points.Count 1)return;for (int i 0; i points.Count - 1; i){DrawLine(points[i].position, points[i 1].position, i);}}//画路径 参数为路径点数组public void DrawPath(Vector3[] points){if (points null || points.Length 1)return;for (int i 0; i points.Length - 1; i){DrawLine(points[i], points[i 1], i);}}//隐藏路径public void HidePath(){for (int i 0; i lines.Count; i)lines[i].gameObject.SetActive(false);}//画路径private void DrawLine(Vector3 start, Vector3 end, int index){Debug.Log(transform.gameObject.name);MeshRenderer mr;if (index lines.Count){mr Instantiate(meshRenderer);lines.Add(mr);}else{mr lines[index];}var tran mr.transform;var length Vector3.Distance(start, end);tran.localScale new Vector3(xscale, length, 1);tran.position (start end) / 2;//指向endtran.LookAt(end);//旋转偏移tran.Rotate(90, 0, 0);mr.material.mainTextureScale new Vector2(1, length * yscale);mr.gameObject.SetActive(true);}void OnGUI(){if (GUI.Button(new Rect(20, 40, 80, 20), 显示路径)){DrawPath();}if (GUI.Button(new Rect(20, 80, 80, 20), 隐藏路径)){HidePath();}}
}
2-7、设置Quad到脚本 2-8、路径设置如下 三、说明
这个是已经计算过根据距离算shader的间隔不论两个点的间隔多远shader的渲染间隔是一样的所以不用担心每个点的间隔不一样了毫无影响代码直接用就好了
四、运行程序 Unity箭头指向目标点视频 总结
你的点赞就是对博主的支持有问题记得留言 不定时更新Unity开发技巧觉得有用记得一键三连哦。