Пятница, 29 Марта 2024, 13:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » 2Д прицел
2Д прицел
ArtemSДата: Вторник, 01 Августа 2017, 18:51 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Пытаюсь сделать так, чтобы пуля появлялась в направление прицела. Прицел сделан как Canvas -> Image который отслеживает положение мышки

Код

  public Vector2 mousePosition;
  
    void Update () {

       mousePosition = Input.mousePosition;
        transform.position = mousePosition;


К игроку прикреплен "ребенок" - оружие со скриптом слежения за прицелом

Код

AIM_pos = Vector2.Lerp(AIM_pos, AIM.position, Time.deltaTime * AIM_speed);
transform.LookAt(AIM_pos);


Проблема в том, что у канваса совершенно другие координаты, которые сильно отличаются от его положения на экране игры и выстрел происходит хрен знает куда. Подскажите как сделать так , что прицел имел схожие в масштабе координаты что и игрок


хуяк, хуяк и в продакшн
CleverRusДата: Среда, 02 Августа 2017, 06:40 | Сообщение # 2
почетный гость
Сейчас нет на сайте
А не проще ли поменять иконку курсора через скрипт и просто отслеживать курсор?!
ArtemSДата: Среда, 02 Августа 2017, 18:27 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Цитата CleverRus ()
А не проще ли поменять иконку курсора через скрипт и просто отслеживать курсор?!


ну не про, извините)

щас буду смотреть как это реализовать.

Добавлено (02 августа 2017, 17:45)
---------------------------------------------
CleverRus, а у тебя нету случайно скрипта примера ? все что нашел по замене текстуры идет через GUI.Label - а это по сути то же самое что и у меня. масшбаты плоскостей отличаются и мое оружие переворачивается (почему то ровно на 90 градусов) и выстрел идет хер знает куда(

Добавлено (02 августа 2017, 18:20)
---------------------------------------------
Вот оружие поворачивается на 90 по У и я понять не могу с чем это связано. в коде ни каких вращений на gameObject нету.

http://s1.uploadpics.ru/images/ZkzKE6dKFG.png

если отключаю слежение через LookAt то оружие стоит нормально.

Добавлено (02 августа 2017, 18:27)
---------------------------------------------
как в единой системе с игроком взять координату нашел

Код
AIM = Camera.main.ScreenToWorldPoint(Input.mousePosition);


но поворот вокруг У все равно остался


хуяк, хуяк и в продакшн

Сообщение отредактировал ArtemS - Среда, 02 Августа 2017, 18:21
CleverRusДата: Четверг, 03 Августа 2017, 08:23 | Сообщение # 4
почетный гость
Сейчас нет на сайте
https://docs.unity3d.com/ru/530/ScriptReference/Cursor.SetCursor.html про смену курсора
По-поводу поворота оружия, посмотри в инспекторе всё ли стоит по нулям (rotation).
ArtemSДата: Четверг, 03 Августа 2017, 08:50 | Сообщение # 5
почетный гость
Сейчас нет на сайте
CleverRus, смотрел. в начале rotation 0 0 0, только включаю и сразу поворот идет по У на 90. причем когда курсор в 1 и 4 четверти то 90, а когда в 2 и 3 то -90. Попробывал с Vector3,там Z по камере идет -10, а оружие на Z = 0, стал вычитать из Z высоту камеры, все равно вертится по У. Поиграл с осями в Vector3, нечего толкового не получилось. Щас на работе, приду домой вечером попробую перед LookAt y=0 или после него.

хуяк, хуяк и в продакшн
CleverRusДата: Пятница, 04 Августа 2017, 08:54 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Кидать спрайт игрока и прицела на сцену, каждый как отдельный объект, перед тем, как сделать прицел дочерним игроку, проверь, чтобы у игрока и прицела rotation стоял по нулям, должно решить проблему.
Я тоже не профи в юньке, так иногда балуюсь.
ArtemSДата: Понедельник, 07 Августа 2017, 18:41 | Сообщение # 7
почетный гость
Сейчас нет на сайте
CleverRus, короче, фишка в том что слежение идет нижней стороной пушки, вот он и критится на 90 по У и слежение идет с .right и отсдает на 90 по Х. Надо разбираться как задавать в LookAt нужную сторону для слежения. думаю использовать ray но пока еще не знаю как это сделать грамотно (ну или хоть как - нибудь). вот)

Добавлено (07 августа 2017, 18:41)
---------------------------------------------
в общем вот скрипт с мнгновенным слежением за прицелом.

Код

Vector3 AIM;   
Vector3 player_pos;

void FixedUpdate ()
{
        AIM = Input.mousePosition;
        player_pos = Camera.main.WorldToScreenPoint(this.transform.position);

        AIM.x = AIM.x - player_pos.x;
        AIM.y = AIM.y - player_pos.y;

        float angle = Mathf.Atan2(AIM.x, AIM.y) * Mathf.Rad2Deg;
        this.transform.rotation = Quaternion.Euler(new Vector3(0, 0, -angle));
}


хуяк, хуяк и в продакшн
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » 2Д прицел
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг