Следование объекта за мышкой| Проблема со скриптом

Программирование на Юнити.

Следование объекта за мышкой| Проблема со скриптом

Сообщение FirstGameMaker 08 янв 2020, 13:07

Знаю что вопрос глупый, но всё же тут без вас никак. 2D игра с перспективной камерой, есть простенький скрипт:
Синтаксис:
Используется csharp
using UnityEngine;

public class MobileControl : MonoBehaviour
{
    public Transform player;
    public float speed = 10f;
   
    void OnMouseDrag ()
    {
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        player.position = Vector2.MoveTowards (player.position, new Vector2(mousePos.x, player.position.y), speed * Time.deltaTime);
    }
}
 

По сути он работает исправно, но только если Projection на камере стоит Orthographic, в противном случае объект просто занимает позицию по X на нуле, что никоим образом не совместимо с концепцией проекта. Что нужно изменить для корректной работы скрипта с перспективой?
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57

Re: Следование объекта за мышкой| Проблема со скриптом

Сообщение 1max1 08 янв 2020, 13:35

Вторую камеру добавь ортографическую и бери с нее данные.
Можно еще с бубном потанцевать с ручным переводом позиции.
Что-то типа этого pos = startPos + Input.mousePosition * k;
Но надо еще учесть что координаты берутся не от центра экрана, а с левого нижнего угла.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Следование объекта за мышкой| Проблема со скриптом

Сообщение FirstGameMaker 08 янв 2020, 14:39

1max1 писал(а):Вторую камеру добавь ортографическую и бери с нее данные.
Спасибо за совет, решил так и поступить, но следственно встал вопрос оптимизации, так как производительность упала вдвое, можете дать базовые советы по этому поводу? Или ещё лучше будет объяснить второй вариант. Буду признателен ещё больше)
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57

Re: Следование объекта за мышкой| Проблема со скриптом

Сообщение 1max1 08 янв 2020, 14:52

Да просто убери все слои рендринга с камеры, чтобы она ничего не видела.

Про второй вариант:
player.position = new Vector2(Input.mousePosition.x, player.position.y);

Смотришь всё ли работает как надо, если нет, а скорей всего нет, пробуешь добавить оффсет.
player.position = new Vector2(Input.mousePosition.x "+" или "-" offsetX, player.position.y);

Смотришь дальше, можно подкорректировать через умножение:
player.position = new Vector2(Input.mousePosition.x * koef "+" или "-" offsetX, player.position.y);

Идем дальше, смотришь как на разных разрешениях экранов это работает (если надо).
Скорей всего будет коррекция типа:
player.position = new Vector2(Input.mousePosition.x * koef "+" или "-" offsetX - Screen.width / 2.0f, player.position.y);

И не факт что будет адекватно работать.
Ну, короче, ты понял, проще сделать второй камерой))
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Следование объекта за мышкой| Проблема со скриптом

Сообщение FirstGameMaker 08 янв 2020, 16:08

Ладно попробую оптимизировать, огромное спасибо 1max1)
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11