Zeichnen Sie Linien auf dem Unity-Kamerabildschirm (schrittweise verbessert)

1. Ähnlich der Linie, die in Star Citizen zur Schiffssteuerung verwendet wird, beginnend in der Mitte des Bildschirms und endend an der Mausposition.

Hängen Sie das folgende Skript in die Kamera ein.

using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;

public class GLText : MonoBehaviour
{
    public Color lineColor = Color.red;
    public Shader fadeShader = null;
    [Range(0.0f, 0.5f)]
    private Material fadeMaterial = null;

    [HideInInspector]
    public float mouseX = 0;
    [HideInInspector]
    public float mouseY = 0;
    void Awake()
    {
        // create the fade material
        fadeMaterial = (fadeShader != null) ? new Material(fadeShader) : new Material(Shader.Find("Unlit/Color"));
    }

    void OnPostRender()
    {
        fadeMaterial.SetPass(0);
        fadeMaterial.color = lineColor;
        GL.PushMatrix();
        GL.LoadOrtho();

        //以这里开始,GL.Vertex3为画线核心,GL.End()结束。
        GL.Begin(GL.LINES);

        mouseX = Input.mousePosition.x / Screen.width;
        mouseY = Input.mousePosition.y / Screen.height;
        GL.Vertex3(0.5f, 0.5f, 0);
        GL.Vertex3(mouseX, mouseY, 0);

        GL.End();
        GL.PopMatrix();
    }
}

GL-Linienzeichnungskoordinaten: Die Koordinaten der unteren linken Ecke des Bildschirms sind 0,0 und die der oberen rechten Ecke des Bildschirms sind 1,1

おすすめ

転載: blog.csdn.net/HeDanTou_/article/details/129780309