LineRenderer初探


如图给角色绘制游戏中可见的视野范围:

using UnityEngine;
using System.Collections;

public class LineRenderSee : MonoBehaviour {
    public float fieldOfViewAngle = 90;
    public float viewDistance = 10;
    public Color theColor = Color.yellow;
    public float lineWidth = 0.1f;

    private LineRenderer lineRenderer;
    // Use this for initialization
    void Start () {
        lineRenderer = gameObject.AddComponent<LineRenderer>();
        //设置材质
        lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
        //设置点的最大值, 如果大于实际使用的点, 会把剩余的点设置成Vector3.zero
        lineRenderer.SetVertexCount (11); 
        //设置颜色
        lineRenderer.SetColors(theColor, theColor);
        //设置宽度
        lineRenderer.SetWidth(lineWidth, lineWidth);
    }
    
    // Update is called once per frame
    void Update () {

        Quaternion r1 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y - fieldOfViewAngle / 2f, transform.rotation.eulerAngles.z);
        Quaternion r2 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y - fieldOfViewAngle / 3.5f, transform.rotation.eulerAngles.z);
        Quaternion r3 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y - fieldOfViewAngle / 6f, transform.rotation.eulerAngles.z);
        Quaternion r4 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y - fieldOfViewAngle / 8f, transform.rotation.eulerAngles.z);
        Quaternion r5 = transform.rotation;
        Quaternion r6 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + fieldOfViewAngle / 8f, transform.rotation.eulerAngles.z);
        Quaternion r7 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + fieldOfViewAngle / 6f, transform.rotation.eulerAngles.z);
        Quaternion r8 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + fieldOfViewAngle / 3.5f, transform.rotation.eulerAngles.z);
        Quaternion r9 = Quaternion.Euler (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y + fieldOfViewAngle / 2f, transform.rotation.eulerAngles.z);
        Vector3 f1 = transform.position + r1 * Vector3.forward * viewDistance;
        Vector3 f2 = transform.position + r2 * Vector3.forward * viewDistance;
        Vector3 f3 = transform.position + r3 * Vector3.forward * viewDistance;
        Vector3 f4 = transform.position + r4 * Vector3.forward * viewDistance;
        Vector3 f5 = transform.position + r5 * Vector3.forward * viewDistance;
        Vector3 f6 = transform.position + r6 * Vector3.forward * viewDistance;
        Vector3 f7 = transform.position + r7 * Vector3.forward * viewDistance;
        Vector3 f8 = transform.position + r8 * Vector3.forward * viewDistance;
        Vector3 f9 = transform.position + r9 * Vector3.forward * viewDistance;
        lineRenderer.SetPosition (0, transform.position);
        lineRenderer.SetPosition (1, f1);
        lineRenderer.SetPosition (2, f2);
        lineRenderer.SetPosition (3, f3);
        lineRenderer.SetPosition (4, f4);
        lineRenderer.SetPosition (5, f5);
        lineRenderer.SetPosition (6, f6);
        lineRenderer.SetPosition (7, f7);
        lineRenderer.SetPosition (8, f8);
        lineRenderer.SetPosition (9, f9);
        lineRenderer.SetPosition (10, transform.position);
    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 希望我的开发日志记录的经验越来越多,给以后得自己留个记录和参考,同时也能为广大的同样是想做unity独立开发者的朋...
    文坛小生阅读 693评论 0 5
  • 学习 Unity GUI笔记,有各种学习资料网址! 1.http://www.wyzc.com/Course/Co...
    HotRay阅读 1,126评论 0 0
  • How to make a Video Game in Unity 的课程笔记。 1. 基础 Scene 视图,滚...
    su3阅读 770评论 0 0
  • 少时闲来尽织梦,凌云冲霄汉。旧曾闲来空自嗟,悲忧苦烦总因事难全。而今闲来乐道文,志趣怡怡然。益利得失不思记,任凭天...
    斜阳微醉阅读 253评论 0 0
  • 区别与联系: 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。 进程,是并发执行的程序在执行过程中分...
    zeroKing阅读 331评论 0 0