Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 22

Поворот фаербола в сторону игрока

28.05.2019, 17:20. Показов 3237. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Такой вопрос: имеется объект фаербол, который летит от врага в игрока с определённой скорость, сам фаербол уже заранее отрисован с огненным хвостом. Как фаербол повернуть так, чтобы он смотрел в ту сторону, в которую летит? Я так понимаю нужно что то сделать с Quaternion, но не знаю что, уже всё перепробовал.
C#
1
2
3
4
Vector3 dir = (target.transform.position - transform.position).normalized;
 
Rigidbody2D clone = Instantiate(bullet, gunPoint.position, Quaternion.identity) as Rigidbody2D;
clone.velocity =  dir * speed;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2019, 17:20
Ответы с готовыми решениями:

Поворот объекта в сторону игрока
Делал таким способом public class LookAtPlayer : MonoBehaviour { public Transform target; void Update() { ...

Движение объекта в сторону игрока
Доброе утро! И снова неумёхе нужна помощь. Не знаю как сделать, чтобы объекты летели в сторону игрока. Сделал астеройды, которые при...

Поворот игрока
Добрый день! Подскажите пожалуйста, как сделать зеркальный поворот игрока, когда курсор мыши находиться слева или справа? Игра на андроид....

5
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
28.05.2019, 17:35
Самое простое https://docs.unity3d.com/Scrip... ookAt.html
Не самое простое https://docs.unity3d.com/Scrip... ation.html
Самое универсальное https://docs.unity3d.com/Scrip... ation.html
C#
1
2
3
4
5
6
Vector3 dir = (target.transform.position - transform.position).normalized;
Rigidbody2D clone = Instantiate(bullet, gunPoint.position, Quaternion.identity) as Rigidbody2D;
clone.velocity =  dir * speed;
clone.transform.LookAt(target.transform.position);
// clone.transform.rotation = Quaternion.LookRotation(dir);
// clone.transform.rotation = Quaternion.FromToRotation(Vector3.up, dir);
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 22
28.05.2019, 17:46  [ТС]
1max1, Из всего этого работает только последняя строчка, но объект получается искаженным, как будто по диагонали вытянули, как это исправить? Да, забыл сказать, игра 2д.
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
28.05.2019, 18:32
Лучший ответ Сообщение было отмечено lait546 как решение

Решение

Цитата Сообщение от lait546 Посмотреть сообщение
Да, забыл сказать, игра 2д.
Тьфу ты...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void LookAt2D(this Transform me, Vector3 target, Vector3 eye)
    {
        Vector3 look = target - me.position;
 
        float sAngle = Vector2.SignedAngle(eye, look);
 
        if (sAngle != 0.0f)
        {
            Vector3 eulerAngles = me.eulerAngles;
 
            eulerAngles.z += sAngle;
 
            me.eulerAngles = eulerAngles;
        }
    }
C#
1
clone.transform.LookAt2D(target.transform.position, clone.transform.up);
1
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 22
28.05.2019, 19:20  [ТС]
1max1, пишет ""Transform" не содержит определения для "LookAt2D", и не удалось найти доступный метод расширения "LookAt2D", принимающий тип "Transform" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)"

Добавлено через 28 минут
1max1, Всё, разобрался, создав дополнительный класс TransformExtensions. Ещё поменял строку "Vector3 look = target - me.position" на "Vector3 look = me.position - target", а то в обратную сторону были повёрнуты. Большое спасибо, что помогли!
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
28.05.2019, 20:03
Цитата Сообщение от lait546 Посмотреть сообщение
Ещё поменял строку "Vector3 look = target - me.position" на "Vector3 look = me.position - target", а то в обратную сторону были повёрнуты
Метод менять не нужно, вместо это нужно было вызывать так:
C#
1
clone.transform.LookAt2D(target.transform.position, -clone.transform.up);
clone.transform.up с отрицательным знаком.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2019, 20:03
Помогаю со студенческими работами здесь

C# unity поворот камеры-головы игрока
Все доброго времени суток! Пишу игру на юнити с использованием с шарп. Сейчас делаю поворот камеры и головы персонажа. вот код: ...

Скрипт Фаербола с кастующим эффектом
Здравствуйте уважаемые программисты. У меня возникла проблема при создания логики в скрипте фаербола. Сам скрипт(без эффекта channel)...

Поворот - в какую сторону быстрей ?
Формула нужна ребят. float Dir = 30.f; float newDir = 250.f; //Мне нужно плавно повернуть - изменить Dir //Но поворачивать в...

Поворот картинки в сторону мыши
на форме есть pictureBox (ну или если удобней просто графика) и он должен поворачиваться вокруг своей оси в сторону мыши, как это...

Для данных значений m, n и известной ставки каждого игрока определить номер игрока, который выиграл и сумму выигрыша
За круглым столом собралось n игроков (n <= 255). Каждый сделал ставку в k монет (1 <= k <= 5). Договорились, что при счете по часовой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru