Нарисуйте линию рендеринга с помощью мыши, а затем сократите ее от начальной точки (стиль управления полетом).C#

Место общения программистов C#
Ответить
Anonymous
 Нарисуйте линию рендеринга с помощью мыши, а затем сократите ее от начальной точки (стиль управления полетом).

Сообщение Anonymous »

Я создаю игру, похожую на «Управление полетом». прямо сейчас я могу создать лайнендер, перетаскивая указатель мыши по экрану, и объект будет следовать за ним. вот код:

Код: Выделить всё

void Update ()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, 1000))
{
if(mouseDown)
{
if (pathList.Count == lineNum)
{
GameObject x = new GameObject();
x.AddComponent();
LineRenderer lr = x.GetComponent();
lr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
lr.receiveShadows = false;
lr.SetWidth(0.4f, 0.4f);
lr.material = m;
List path = new List();
lrList.Add(lr);
pathList.Add(path);
pathList[lineNum] = new List();
finalPath.Add(hit.point);
}

if(Vector3.Distance(finalPath[finalPath.Count-1], hit.point) >5)
{
finalPath.Add(hit.point);
}

pathList[lineNum].Add(hit.point);
lrList[lineNum].SetVertexCount(pathList[lineNum].Count);
lrList[lineNum].SetPosition(pathList[lineNum].Count - 1, hit.point + new Vector3(0, 0.1f, 0));
hitPoints.Add(hit.point);
}
}
проблема в том, что я хочу, чтобы линия исчезла, когда ее достигнет ведомый объект. примерно от начальной точки до конечной точки.
вот мой код для объекта-последователя:

Код: Выделить всё

public class FollowLine : MonoBehaviour {
LineGenerator ln;
Vector3[] path;
int i = 0;
int y = 0;

void Start ()
{
ln = FindObjectOfType();
}

void Update ()
{
path = ln.finalPath.ToArray();
if (path.Length != 0 && Vector3.Distance(transform.position, path[i]) > 1)
{
transform.position = Vector3.MoveTowards(transform.position, path[i], Time.deltaTime*3);
}
else if(path.Length > i+1)
{
i++;
}

if(ln.pathList.Count != 0 && Vector3.Distance(transform.position, ln.pathList[0][0]) < 1)
{
ln.pathList[0].RemoveAt(ln.pathList.Count-1);
}
}
}
проблема в том, что даже этот код фактически удаляет точки в средстве рендеринга строк, но ни на что не влияет на экране

Подробнее здесь: https://stackoverflow.com/questions/341 ... -flight-co
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»