Итак, есть несколько проблем, которые я вижу, но прямо в точку:
FixedUpdate
Работает с заданным интервалом, это не каждый кадр.Метод DrawRay()
Имеет параметр длительности.по умолчанию он равен 0. Это означает, что он будет виден только для одного кадра.У вас есть 2 варианта, которые вы можете передать за длительность, или вы можете поместить этот метод в update
, который запускает каждый кадр.
void Update () {
Vector3 dir = player.transform.position - rayOrigin.transform.position;
dir = dir.normalized;
Debug.DrawRay(rayOrigin.transform.position, dir*maxCheckDistance,Color.red);
}
Однако, если вы пытаетесь нарисовать линию от одного объекта к другомупросто используйте Debug.DrawLine()
Debug.DrawLine(rayOrigin.transform.position, player.transform.position, Color.red);
Наконец, избегайте использования цвета для вашей линии, который совпадает с одним из ваших объектов, я имею в виду ваш красный куб и красную линию.Используйте цвет, который будет выделяться.В этом случае произнесите черный цвет.
Пример FixedUpdate:
void FixedUpdate () {
Vector3 dir = player.transform.position - rayOrigin.transform.position;
dir = dir.normalized;
Debug.DrawRay(rayOrigin.transform.position, dir*maxCheckDistance,Color.red, 1.0f);
}
Ради интереса, чтобы линия меняла цвета, используя значение maxCheckDistance:
void Update () {
Color lineColor = color.Black;
if(Vector3.Distance(rayOrigin.transform.position, player.transform.position) < maxCheckDistance) {
lineColor = color.White;
}
Debug.DrawLine(rayOrigin.transform.position, player.transform.position, lineColor);
}
РЕДАКТИРОВАТЬ:
Важно знать, где ваши объекты на самом деле, в вашем вопросе у вас есть объект Player, что вы сделали родителем 2 кубов.Похоже, что вы переместили эти 2 куба туда, где вы хотели, чтобы игрок находился в мире, вместо того, чтобы перемещать сам объект Player.Таким образом, ваша линия рисуется правильно, так как она получает позицию к объекту игрока. В будущем переместите родительский объект вместо дочернего объекта.