Я работал на движении объекта вдоль пути, который я был Geting от NavMesh Unity3d Я использую сопрограмму, в котором я контролирую его в то время цикла, как я могу показатьСопрограммы и в то время как петли
public void DrawPath(NavMeshPath pathParameter, GameObject go)
{
Debug.Log("path Parameter" + pathParameter.corners.Length);
if (agent == null || agent.path == null)
{
Debug.Log("Returning");
return;
}
line.material = matToApplyOnLineRenderer;
line.SetWidth(1f, 1f);
line.SetVertexCount(pathParameter.corners.Length);
allPoints = new Vector3[pathParameter.corners.Length];
for (int i = 0; i < pathParameter.corners.Length; i++)
{
allPoints[i] = pathParameter.corners[i];
line.SetPosition(i, pathParameter.corners[i]);
}
StartCoroutine(AnimateArrow(pathParameter));
//StartCoroutine(AnimateArrowHigh(pathParameter));
}
#endregion
#region AnimateArrows
void RunAgain()
{
StartCoroutine(AnimateArrow(Navpath));
}
IEnumerator AnimateArrow(NavMeshPath path)
{
Vector3 start;
Vector3 end;
while (true)
{
if (index > 0)
{
if (index != path.corners.Length - 1)
{
start = allPoints[index];
index += 1;
end = allPoints[index];
StopCoroutine("MoveObject");
StartCoroutine(MoveObject(arrow.transform, start, end, 3.0f));
yield return null;
}
else
{
index = 0;
RunAgain();
}
}
else if (index == 0)
{
start = allPoints[index];
arrow.transform.position = allPoints[index];
index += 1;
end = allPoints[index];
StopCoroutine("MoveObject");
StartCoroutine(MoveObject(arrow.transform, start, end, 3.0f));
yield return null;
}
}
}
IEnumerator MoveObject(Transform arrow, Vector3 startPos, Vector3 endPos, float time)
{
float i = 0.0f;
float rate = 1.0f/time;
journeyLength = Vector3.Distance(startPos, endPos);
float distCovered = (Time.time - startTime) * speed;
float fracJourney = distCovered/journeyLength;
while (i < 1.0f)
{
// Debug.Log("fracJourney In While" + fracJourney);
arrow.position = Vector3.LerpUnclamped(startPos, endPos, fracJourney);
yield return endPos;
}
Debug.LogError("Outside While");
}
Но проблема в том, что мне нужно перемещать объект с постоянной скоростью, но мой объект набирает скорость в каждом цикле, поскольку мне нужно сделать движение в цикле, чтобы он двигался, пока пользователь не хочет его закончить с помощью ввода guys plz help i dont понять, что я делаю неправильно в Coroutines, что скорость моих объектов растет, я смотрю, чтобы он оставался постоянным, но каким-то образом он не работал таким образом спасибо
Спасибо за быстрый ответ, но его не решаю я сделал то, что вам предположим, но он делает то же самое, набирает скорость, поскольку его петли с конца пути –
Является ли жесткое тело прикрепленным к этому объекту игры? – Programmer
Нет их нет Жесткое тело или даже коллайдер. Я искал google весь день, но не нашел решение, я думаю, что это не правильный подход. –