Войти
ПрограммированиеФорумФизика

Персонаж поворачивается не по нужной оси. (2 стр)

Страницы: 1 2
#15
21:08, 25 июня 2018

"Mouse X" - Вправо и Влево. "Mouse Y" - Вверх и Вниз.

if (axes == RotationAxes.MouseX) {
      transform.Rotate (0, Input.GetAxis ("Mouse X") * sensitivityHor, 0);
Этот скрипт - Mouse X, собственно поворот по горизонтали, когда

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);

является скриптом поворота по вертикали (Mouse Y). То есть модель наклоняется вверх и вниз боками. Когда поворачивается по горизонтали идеально. Могу снять видео и показать вам подробно.

В книге персонаж является простым цилиндром, без лица и спины, когда у меня с лицом и спиной. Получается, что скрипту без разницы, как будем выглядеть модель, там все зависит от позиции камеры. Или книга специализированна на создании сингл шутеров или это у меня ошибки.


#16
23:44, 25 июня 2018

ты когда в 3д-программе делаешь экспорт в формат стандартного obj, fbx
попробуй там обратить систему координат типа
всякие панели и кнопки с названиями
coordinate system=invert
коорд.система=инвертировать

или обратить нормали
flip normals
по смыслу обращение нормалей (это не точно уверенность) вроде как меняет систему координат объекта  тройка правая-левая и тд(локальная система коорд на объекте local system coordinate, не глобальная сцены global coord sys)

#17
16:05, 26 июня 2018

В Blender я не нашел как инвертировать систему координат, но там есть функция выбрать Forward и Up. Up я поставил Y, а Forward X, в итоге модель по оси "mouse X" крутится влево и вправо, а по "mouse Y" двигается как по "mouse X" , то есть вправо и влево. Иногда мне кажется, что только я могу в подобное дер*мо вляпаться.

#18
16:52, 26 июня 2018

Blinopop
> Иногда мне кажется, что только я могу в подобное дер*мо вляпаться.
математика.
декартова система ккординат. поворот осей в системе. (см всякие лекции по высшей математике .это примерно в теме аналитическая геометрия на плоскости )
есть конкретно формулы типа
х новая в системе= старуюХ добавить умножить делить и тд, cos sin углы между осями

#19
19:33, 26 июня 2018

Вообщем, я можно сказать решил проблему) Там просто в оси "Mouse Y" Нужно было поменять _rotationX местами в (). Но тем проблема в том, что он наклоняется вверх или вниз и больше не хочет двигаться.

#20
20:02, 26 июня 2018

Все, спасибо вам Rikk, за предоставленную информацию. Я наконец-то исправил. Дело оказалось в скрипте) Вот он сам:

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 {
    }
  }
}

#21
22:44, 26 июня 2018

ok.

#22
9:59, 4 июля 2018

Изображение
Изображение
Изображение

кадр1
ось зэт смотрит вдоль —вправо-вниз диагональ

кадр2
ось зэт смотрит точно вверх

отметка—локальные системы координат объектов
center local

кадр3
первый "панк" поворот направо. он делает поворот вокруг оси игрек(которая у номер1 это ось вверх)
второй делает поворот направо вокруг оси игрек (которая у номер2 это ось вниз-право диагональ  .как ось зэт у первого.)

скрипт один повешен и на первого и на второго.
надо писать скрипты уникально , для первого один скрипт а для второго отдельный скрипт?
язык : си-шарп  для unity

Вопрос
  как в юнити выравнивать оси объектов соответствующе ?
то есть у всех объектов все оси икс смотрят в одну и ту же сторону , также и оси игрек и зэт.

#23
15:58, 4 июля 2018

Я ступил и не понял суть вашего ответа, но сделав вывод из предоставленной вами информации, юнити имеет систему координат, которая не изменчива. И я могу предположить, что персонаж независимого от того, какая у него система координат, все равно по C# скрипту он будет двигаться так же как и персонаж с системой координат как в юнити. То есть если бы в юнити была другая система координат, а перетащив скрипт, который мы уже имеем, персонаж по прежнему мог двигаться в стороны правильно, но наклонялся бы в право и влево, как это было еще в начале проблемы, которую я описывал. А если бы была бы та система координат, которая есть в юнити, то он бы наклонялся правильно. Так получается?

#24
16:53, 4 июля 2018

Blinopop
> Я ступил и не понял суть вашего ответа,
это уже не ответ
это уже вопрос от нашим к вашим.

проблема такая
юнити=левая тройка
редакторы имеют=правая тройка

ситуация
есть юнити левая тройка
появилось тело которое имеет правую тройку

у тела надо изменить правую тройку на левую тройку юнити-систем.

как это сделать?
1 как то провернуть точку опоры тела в юнити чтоб сравнять оси координат
2 как то написать программку юнити которая сделает типа
  ось икс смотрела вправо
  теперь ось икс смотрит наоборот влево
  таким же образом оси игрек и зэт
чтобы выровнять систему осей тело-локальное с системой юнити--систем-координат

Очевидно существует серьезная проблема

правая тройка ось икс — в левой тройке это будет игрек
то есть вектор координаты (х у) переставлены местами было игрек а стало икс — это как минимум положение точек в пространстве xyz переговняется

#25
16:59, 4 июля 2018

Blinopop
> юнити имеет систему координат, которая не изменчива
Blinopop
> Так получается?
Да.
Левотроечная система координат —- Left-Handed Coordinate System
Правая тройка - Right-Handed Coordinate System

Юнити имеет систему координат -левая тройка
но также многие имеют активную систему —правая тройка.

при вставлении контентов правой тройки в систему левой тройки получается пространственная проблема местоположения xyz , это надо решать сразу в начале , тк потом проявятся все эти повороты неверного и эта ошибка от начала будет тянуться на протяжении всего до самого финала.
если сразу от начала справить то этих проблем будет много меньше.

#26
17:15, 4 июля 2018

В Blender можно настроить Верх и Перед. И я думаю, что скорее всего программу надо написать.

#27
19:01, 4 июля 2018

При создании анимациона
Model—Rig—Apply
  not enough bones to create human avatar (Require N bones)

при создании риггинга не хватает костей для создания хюман-аватара(требуется эн .цифра.штук костей)

это влияет?
некие меши не заимели собственные координаты xyz и из-за этого всё кривое
это возможно?

#28
19:20, 4 июля 2018

Ну у меня не гуманоид, а при гуманоиде нету 15 костей.

Страницы: 1 2
ПрограммированиеФорумФизика

Тема в архиве.