概述
Unity绘制抛物线<25/11/2017>
获取GetMouseButtonDown初始点和GetMouseButton实时点的向量长度,替换里面的抛物线最高高度,进行微调可以弄出自己想要的效果
实际运用效果如下:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[ExecuteInEditMode]
public class Parabola : MonoBehaviour {
//重力
[Range(0,1)]
public float gravity = 0.13f;
//最大长度
public float maxLength = 50;
//两点之间的距离
const float length = 0.2f;
//点集合
List<Vector3> m_List = new List<Vector3>();
Material m_LineMat;
public void OnRenderObject() {
CreateLineMaterial();
m_LineMat.SetPass(0);
Vector3 position = transform.position;
Vector3 forward = transform.rotation * Vector3.forward * length;
Vector3 newPos = position;
Vector3 lastPos = newPos;
m_List.Add(newPos);
int i = 0, iMax = 0;
float dis = 0;
while (dis < maxLength) {
i++;
newPos = lastPos + forward + Vector3.up * i * -gravity * 0.1f;
dis += Vector3.Distance(lastPos, newPos);
m_List.Add(newPos);
lastPos = newPos;
}
GL.Begin(GL.LINES);
i = 0;
iMax = m_List.Count;
for (i = 0; i < iMax; i++) {
GL.Vertex(m_List[i]);
}
GL.End();
m_List.Clear();
}
void CreateLineMaterial() {
if (!m_LineMat) {
var shader = Shader.Find("Hidden/Internal-Colored");
m_LineMat = new Material(shader);
m_LineMat.hideFlags = HideFlags.HideAndDontSave;
m_LineMat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
m_LineMat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
m_LineMat.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
m_LineMat.SetInt("_ZWrite", 0);
}
}
}
最后
以上就是朴素羊为你收集整理的Unity绘制抛物线的全部内容,希望文章能够帮你解决Unity绘制抛物线所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复