我想要做的是一个自由绘图,所以当我移动鼠标时,它将绘制一条连续/连续的线也与曲线。但是在地形上的某些地方,它并没有画画,而且在高地/丘陵的某些地方它并没有画画。即使我慢慢移动鼠标。
LineRenderer组件和脚本附加到Camera。不是主摄像头,而是新摄像头。
我之前尝试过使用:
if (Physics.Raycast(ray, out hit, 1000))
但同样的问题。
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;
//if (Physics.Raycast(ray, out hit, 1000))
if (Physics.Raycast(GetComponent<Camera>().ScreenPointToRay(Input.mousePosition),out hit))
{
Vector3 hitpoint = hit.point;
pointsList.Add(hitpoint);
if (pointsList.Count > 1)
DrawLine(pointsList[pointsList.Count - 2], 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.startColor = color;
lr.startWidth = 3f;
lr.endWidth = 3f;
lr.SetPosition(0, start);
lr.SetPosition(1, end);
//GameObject.Destroy(myLine, duration);
}
}
答案 0 :(得分:0)
物理相关代码通常应该在FixedUpdate内部而不是Update。
我自己经历过一次错误,如果我在Update内部进行Raycas而不是FixedUpdate,它会在不移动光标的情况下错过其目标。
因此,请尝试将代码移至FixedUpdate。