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

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

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

Author24 — интернет-сервис помощи студентам
В 3D игре с видом сверху нужно двигать игрока, а как заставить его поворачиваться лицом в сторону движения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2021, 01:03
Ответы с готовыми решениями:

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

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

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

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

8
250 / 186 / 68
Регистрация: 04.03.2019
Сообщений: 1,010
09.02.2021, 11:11 2
Timka6434, вопрос а как вы его двигаете?
и что значить повернуть в сторону движения? у вас весь персонаж не туда повернут или часть его?
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 80
09.02.2021, 11:54  [ТС] 3
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
753 / 485 / 212
Регистрация: 05.04.2015
Сообщений: 2,013
09.02.2021, 22:00 4
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  [ТС] 5
zhunshun, Да, это работает, но когда я перестаю двигать игрока, то он начинает кружиться по оси Y.
0
753 / 485 / 212
Регистрация: 05.04.2015
Сообщений: 2,013
10.02.2021, 18:30 6
Добавлено через 5 минут
Timka6434, Ну у него же ригидбади .Тут вообще если похорошему то и поворот сделан неправильно , дл физики подругому вроде. Надо останавливать что бы не крутилса.
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 80
10.02.2021, 19:25  [ТС] 7
zhunshun, А не подскажите как более правильно реализовать или что хотя-бы нужно использовать, буду очень благодарен
0
753 / 485 / 212
Регистрация: 05.04.2015
Сообщений: 2,013
10.02.2021, 20:29 8
Вот так правильно, но может где то накасячил. Просто в браузере написал.
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  [ТС] 9
zhunshun, Хотел бы уточнить, зачем num и наверно это странно но я не понимаю как работает return(читал, смотрел, но не понял) на простом языке?
0
11.02.2021, 20:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2021, 20:00
Помогаю со студенческими работами здесь

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

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

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

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

Задержка перед ходом Компьютера и Игрока в игре крести-нолики
Здравствуйте! Есть баг в игре крестики-нолики, бывает, что уже после победы пользователя, компьютер...

Получить id игрока во флеш-игре.
День добрый! Помогите пожалуйста советом. Заранее извините если не в ту ветку залез. Есть игровой...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru