Суббота, 09 Ноября 2024, 04:43

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Персонаж поворачивается не по нужной оси.
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) в нужном порядке, что ты и сделал.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг