using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawLinesWithMouse : MonoBehaviour
{
private List<Vector3> pointsList;
// Use this for initialization
void Start()
{
pointsList = new List<Vector3>();
}
// Update is called once per frame
void Update()
{
RaycastHit hit;
Ray ray = GetComponent<Camera>().ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 1000))
{
Vector3 hitpoint = hit.point;
pointsList.Add(hitpoint);
DrawLine(pointsList[0], pointsList[pointsList.Count -1], Color.red, 0.2f);
}
}
void DrawLine(Vector3 start, Vector3 end, Color color, float duration = 0.2f)
{
GameObject myLine = new GameObject();
myLine.transform.position = start;
myLine.AddComponent<LineRenderer>();
LineRenderer lr = myLine.GetComponent<LineRenderer>();
lr.material = new Material(Shader.Find("Particles/Alpha Blended Premultiply"));
lr.startColor = color;
lr.startWidth = 3f;
lr.endWidth = 3f;
lr.SetPosition(0, start);
lr.SetPosition(1, end);
//GameObject.Destroy(myLine, duration);
}
}
Le problème ici est qu'il dessine une ligne comme ventilateur de pliage portable:Comment puis-je tracer une ligne sur le terrain lorsque je déplace la souris?
Mais je le veux tracer une ligne ligne juste unique en fonction de la position de déplacement de la souris, y compris les courbes si, par exemple Je déplace la souris en cercles, pas seulement des lignes droites.
Je propose, vous devriez vérifier [Trail Renderer] (https://docs.unity3d.com/Manual/class-TrailRenderer.html). Vous pouvez ajouter un objet gameObject vide à la position de votre souris, ce qui affichera trailRenderer. – Thalthanas
Au lieu de dessiner de pt0 au point courant, vous pouvez dessiner de currentPt -1 à currentPt – Everts