Я пытаюсь перемещать перекрестие по экрану с помощью мыши, но постоянно держу перекрестие в поле зрения статически расположенной камеры.Мой скрипт ниже в основном работает, сохраняя перекрестие на экране слева, справа и снизу.Проблема в том, что я все еще могу переместить перекрестие вверх над верхней частью экрана.Такое ощущение, что у него есть какое-то сопротивление, что странно, но оно идет выше границ экрана вместо блокировки на 0,95.
Соответствующая информация:
- Перспективная камера
-10 градусов поворота X на камере (может быть проблема, но не Viewport должен знатьэто?)
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// Capture touch origin to create virtual joystick center
firstTouchPos = Camera.main.ScreenPointToRay(Input.mousePosition);
crosshairPos = crosshair.position;
}
if (Input.GetMouseButton(0))
{
// Get mouse position
Ray currentTouchPos = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector2 direction = currentTouchPos.origin - firstTouchPos.origin;
// Move crosshair
targetPosition = crosshairPos + direction * touchSensitivity;
Vector3 pos = Camera.main.WorldToViewportPoint(targetPosition);
pos.x = Mathf.Clamp(pos.x, 0.05f, 0.95f);
pos.y = Mathf.Clamp(pos.y, 0.05f, 0.95f);
targetPosition = Camera.main.ViewportToWorldPoint(pos);
crosshair.position = Vector3.Lerp(crosshair.position, new Vector3(targetPosition.x, targetPosition.y, -0.6f), Time.deltaTime * followSpeed);
}
}