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

Поворот игрока в 3Д игре

09.02.2021, 01:03. Показов 1466. Ответов 8

Студворк — интернет-сервис помощи студентам
В 3D игре с видом сверху нужно двигать игрока, а как заставить его поворачиваться лицом в сторону движения?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2021, 01:03
Ответы с готовыми решениями:

Поворот игрока в TDS игре на андройд
Чтобы не подключать каждый раз смарт для теста, тестировал на компе и управление было кнопки + мышь. Ходил на WASD, а персонаж...

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

Поворот фаербола в сторону игрока
Добрый день. Такой вопрос: имеется объект фаербол, который летит от врага в игрока с определённой скорость, сам фаербол уже заранее...

8
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
09.02.2021, 11:11
Timka6434, вопрос а как вы его двигаете?
и что значить повернуть в сторону движения? у вас весь персонаж не туда повернут или часть его?
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 80
09.02.2021, 11:54  [ТС]
MuaddibFremen, Извините что плохо объяснил
Я двигаю игрока Виртуальным джойстиком Пример(видео)
И мне нужно чтобы он поворачивался лицом(маленький, белый круг на голове) в ту сторону в которую направлен джойстик.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class PlayerController : MonoBehaviour
{
   public FloatingJoystick joystick;
   Rigidbody rb;
   Vector3 vector3;   
   public float _speed, angle;
   
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        print("Start1");
        
    }
 
 
    void FixedUpdate()
    {
        vector3.x = joystick.Horizontal;
        vector3.z = joystick.Vertical;
        rb.velocity = new Vector3(vector3.x * _speed, transform.position.y, vector3.z * _speed); //движение игрока
        rb.rotation = Quaternion.AngleAxis((vector3.x * vector3.z)* angle, Vector3.up);   // поворот игрока
        
    }
}
вот мой скрипт контроллера, я попытался сделать поворот, но он не поворачивается если координаты джойстика отрицательные и это выглядит примерно Так(видео)
и еще такой момент что когда я отпускаю джойстик, то координаты поворота игрока по Y сразу становятся 0, все не пойму что за это отвечает
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
09.02.2021, 22:00
C#
1
2
3
4
5
6
7
if(vector3.x < 0 || vector3.z < 0){
rb.rotation = Quaternion.AngleAxis((vector3.x * vector3.z)* -angle, Vector3.up);
}else if(vector3.x > 0 && vector3.z > 0){
rb.rotation = Quaternion.AngleAxis((vector3.x * vector3.z)* angle, Vector3.up);
}else if(vector3.x == 0 && vector3.z == 0){
return;
}
Поидее так, но не 100 пудово. Это я так думаю.

Добавлено через 2 часа 49 минут
или так наверное
C#
1
2
3
4
5
6
7
if(vector3.x < 0 && vector3.z < 0){
rb.rotation = Quaternion.AngleAxis((vector3.x * vector3.z)* -angle, Vector3.up);
}else if(vector3.x > 0 && vector3.z > 0){
rb.rotation = Quaternion.AngleAxis((vector3.x * vector3.z)* angle, Vector3.up);
}else if(vector3.x == 0 && vector3.z == 0){
return;
}
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 80
10.02.2021, 17:02  [ТС]
zhunshun, Да, это работает, но когда я перестаю двигать игрока, то он начинает кружиться по оси Y.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
10.02.2021, 18:30
Добавлено через 5 минут
Timka6434, Ну у него же ригидбади .Тут вообще если похорошему то и поворот сделан неправильно , дл физики подругому вроде. Надо останавливать что бы не крутилса.
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 80
10.02.2021, 19:25  [ТС]
zhunshun, А не подскажите как более правильно реализовать или что хотя-бы нужно использовать, буду очень благодарен
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
10.02.2021, 20:29
Вот так правильно, но может где то накасячил. Просто в браузере написал.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class PlayerController : MonoBehaviour
{
   public FloatingJoystick joystick;
   Rigidbody rb;
   Vector3 vector3;   
   public float _speed, angle;
   
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        print("Start1");
        
    }
 
 
    void FixedUpdate()
    {
        vector3.x = joystick.Horizontal;
        vector3.z = joystick.Vertical;
        int num = 0;
        rb.velocity = new Vector3(vector3.x * _speed, transform.position.y, vector3.z * _speed); //движение игрока
        if(vector3.x < 0 && vector3.z < 0){
            num = -1;
        }else if(vector3.x > 0 && vector3.z > 0){
            num = 1;
        }else if(vector3.x == 0 && vector3.z == 0){
            return;
        }
         Quaternion deltaRotation = Quaternion.Euler(new Vector3(0, vector3.x * vector3.z * num, 0) * Time.deltaTime);
rb.MoveRotation(rb.rotation * deltaRotation);
    }
 
}
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 80
11.02.2021, 20:00  [ТС]
zhunshun, Хотел бы уточнить, зачем num и наверно это странно но я не понимаю как работает return(читал, смотрел, но не понял) на простом языке?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2021, 20:00
Помогаю со студенческими работами здесь

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

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

Поворот объекта в сторону игрока (Quaternion.LookRotation)
Добрый день! Столкнулся с проблемой. У меня есть объект (куб), который движется по оси &quot;-X&quot; и мне нужно, чтобы куб смотрел в...

Как сделать поворот игрока вместе с камерой на андроид
Всем привет! Как мне сделать, что когда поворачиваешь камеру, то игрок поворачивался вместе с ней вот скрипт, который лежит на игроке: ...

Перемещение игрока в сетевой игре пс использованием джойстика
Есть два скрипта:джойстик и скрипт игрока, который получает от джойстика вектор. Но суть в том, что джойстик работает только у последнего...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+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