Я начал возиться с Unity, как несколько дней назад, и я не эксперт по кодированию, так что извините, если я упускаю что-то очевидное.
В течение нескольких часов я пытался нарисовать линию от объекта на экране до места, где я щелкаю в 2D-пространстве, и с треском проваливался.Я гуглил это, но не мог найти рабочее решение.Проблема в том, что когда я щелкаю, линия рисуется от объекта до положения камеры, а не от положения мыши.Я не знаю, что делать на этом этапе.Я мог бы использовать некоторую помощь.
Вот упрощенная версия кода.
public class test: MonoBehaviour {
public Rigidbody rb;
public Vector3 vect3;
void Start () {
rb = GetComponent<Rigidbody>();
}
void Update () {
if (Input.GetKey(KeyCode.Mouse0))
{
vect3 = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0);
//I made the vector's Z value 0 because the object's Z coordinate is also 0.
//It is to avoid capturing 3D coordinates.
Debug.DrawLine(rb.position, Camera.main.ScreenToWorldPoint(vect3), Color.red, 1);
}
}
}
edit: исправлена ошибка метода в коде.
edit2: я ее решил.Получается, что переменная z параметра Camera.main.ScreenToWorldPoint (vect3) представляет расстояние от камеры, и, поскольку я установил значение 0, линия рисуется непосредственно на камеру.Изменение значения z в vect3 на transform.position.z - Camera.main.transform.position.z это исправило.