| Персонаж поворачивается не по нужной оси. | 
|  | 
| 
| 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) в нужном порядке, что ты и сделал.
 |  |  |  |  |