Персонаж поворачивается не по нужной оси.
|
|
Joyce | Дата: Понедельник, 25 Июня 2018, 10:01 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Делаю игру для фана на Unity. Вообщем. Персонаж не поворачивается по нужной оси. То есть, есть 2 "оси" в скрипте - это "Mouse X (Вправо,влево)" и "Mouse Y (Вверх, вниз)". Mouse X поворачивает модель персонажа как нужно, но Mouse Y вместо того, чтобы наклонять персонажа вниз и вверх, она наклоняет его вправо и влево. Если нужно будет видео, я запишу. Пробовал загружать модель заново, перемещать ее, но ничего не помогло. Скрипт:
Код using System.Collections; using System.Collections.Generic; using UnityEngine; public class MouseLook : MonoBehaviour { public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityHor = 11f; public float sensitivityVert = 11f;
public float minimumVert = -45f; public float maximumVert = 45f;
private float _rotationX = 0;
void Start () { }
void Update () { if (axes == RotationAxes.MouseX) { transform.Rotate (0, Input.GetAxis ("Mouse X") * sensitivityHor, 0); } else if (axes == RotationAxes.MouseY) { _rotationX -= Input.GetAxis ("Mouse Y") * sensitivityVert;
_rotationX = Mathf.Clamp (_rotationX, minimumVert, maximumVert);
float rotationY = transform.localEulerAngles.y;
transform.localEulerAngles = new Vector3 (_rotationX, rotationY, 0); } else { } } }
|
|
| |
Gamer583666496 | Дата: Понедельник, 25 Июня 2018, 15:12 | Сообщение # 2 |
Делай игры!
Сейчас нет на сайте
| Вам нужно объединиться с с автором предыдущей темы - он также не всё толком объясняет и ищет шаманов с бубном.
Создание игр для всех!
|
|
| |
Joyce | Дата: Понедельник, 25 Июня 2018, 16:22 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| А чего тут не понятного ? У меня есть 2 Оси, по которым вращается персонаж за мышкой - это "Mouse X (Влево и вправо)" и "Mouse Y (Вниз, Вверх)" Но при выборе "Mouse Y" персонаж не наклоняется Вверх-вниз, а наклоняется влево и вправо. Пытался повернуть персонажа, попытаться поменять оси в самом скрипте, но ничего не помогло.
|
|
| |
seaman | Дата: Понедельник, 25 Июня 2018, 22:34 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Почему и по y не использовать transform.Rotate?
|
|
| |
drcrack | Дата: Вторник, 26 Июня 2018, 00:16 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Цитата Пытался повернуть персонажа, попытаться поменять оси в самом скрипте, но ничего не помогло. потому что сначала надо переключить Center на Pivot и Global на Local
а потом поворачивать
у тебя персонаж походу из fbx импортирован и повернут на 90 градусов, переключишь и увидишь
Сообщение отредактировал drcrack - Вторник, 26 Июня 2018, 00:18 |
|
| |
Joyce | Дата: Вторник, 26 Июня 2018, 20:01 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Переключал Pivot и Local, не спасает. Модель из Blendera, импортирована с "Y up" и "X forward". Добавлено (26 Июня 2018, 19:33) --------------------------------------------- Вообщем, я можно сказать решил проблему) Там просто в оси "Mouse Y" Нужно было поменять _rotationX местами в (). Но тем проблема в том, что он наклоняется вверх или вниз и больше не хочет двигаться. Добавлено (26 Июня 2018, 20:01) --------------------------------------------- Все, сделал все. Спасибо всем) Вот сам скрипт:
Код using System.Collections; using System.Collections.Generic; using UnityEngine; public class MouseLook : MonoBehaviour { public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityHor = 11f; public float sensitivityVert = 11f;
public float minimumVert = -45f; public float maximumVert = 45f;
private float _rotationX = 0;
void Start () {
}
void Update () { if (axes == RotationAxes.MouseX) { transform.Rotate (0, Input.GetAxis ("Mouse X") * sensitivityHor, 0); } else if (axes == RotationAxes.MouseY) { _rotationX -= Input.GetAxis ("Mouse Y") * sensitivityVert;
_rotationX = Mathf.Clamp (_rotationX, minimumVert, maximumVert);
float rotationY = transform.localEulerAngles.y;
transform.localEulerAngles = new Vector3 (0 , rotationY, _rotationX); } else { } } }
Сообщение отредактировал Joyce - Вторник, 26 Июня 2018, 19:03 |
|
| |
drcrack | Дата: Среда, 27 Июня 2018, 00:48 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Цитата Переключал Pivot и Local, не спасает. А как оно должно быть спасти? Это нужно чтобы посмотреть его оси и выставить (0 , rotationY, _rotationX) в нужном порядке, что ты и сделал.
|
|
| |