Вторник, 23 Апреля 2024, 12:02

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема со вращением
Проблема со вращением
GastellloДата: Пятница, 28 Ноября 2014, 18:13 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте дорогие форумчане. У меня такой вопрос, делаю контроллер для космического корабля, управление мышкой. Все вроде работает нормально, но почему-то появляется вращение по оси з как на картинке. Как это исправить?



Код


using UnityEngine;
using System.Collections;

public class newControll : MonoBehaviour  
{
  public float  speed = 50.0f;
  public float  speedMax = 100;
  private float moveSpeed = 10;
  public float rotationSpeed = 1.0f;
  public float turnSpeed = 2;
  public float speedPitch = 1;
  public float speedYaw = 1;  
  private Quaternion mainRot = Quaternion.identity;
    
   
  [HideInInspector]
  public float pitch = 0;
  [HideInInspector]
  public float yaw = 0;
   

  void Update()
  {
   Screen.lockCursor = true;
   AxisControl(new Vector2(Input.GetAxis("Mouse X"),Input.GetAxis("Mouse Y")));

   if(Input.GetKey(KeyCode.W))
   {
    SpeedUp();
   }

  }

  void FixedUpdate()
  {
   Quaternion AddRot = Quaternion.identity;
   AddRot = Quaternion.Euler(pitch, yaw, 0);
   mainRot *= AddRot;
   transform.localRotation = Quaternion.Lerp(transform.rotation, mainRot, Time.fixedDeltaTime * rotationSpeed);
   moveSpeed = Mathf.Lerp(moveSpeed, speed,Time.deltaTime);

   constantForce.relativeForce = new Vector3(0, 0, moveSpeed);
  }
   

  public void AxisControl(Vector2 axis)
  {
   yaw = Mathf.Lerp(yaw,Mathf.Clamp(axis.x,-1,1) *  speedYaw, Time.deltaTime);
          pitch = Mathf.Lerp(pitch,Mathf.Clamp(axis.y,-1,1) *  speedPitch, Time.deltaTime);
  }

   public void SpeedUp()
  {
    moveSpeed = Mathf.Lerp(moveSpeed,speedMax,Time.deltaTime * 10);
  }
}

MANMANAДата: Пятница, 28 Ноября 2014, 20:51 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Freeze rotation и выбрать ось Z в инспекторе в Rigidbody на модели в Constraints?

http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
GastellloДата: Суббота, 29 Ноября 2014, 22:53 | Сообщение # 3
был не раз
Сейчас нет на сайте
непомогает
XoidДата: Суббота, 29 Ноября 2014, 23:22 | Сообщение # 4
почетный гость
Сейчас нет на сайте
замените
Код
Quaternion AddRot = Quaternion.identity;
AddRot = Quaternion.Euler(pitch, yaw, 0);
mainRot *= AddRot;

на
Код
mainRot = Quaternion.Euler(transform.eulerAngles.x + pitch, transform.eulerAngles.y+yaw, 0);


skype:xoid_main | С#/Unity

Сообщение отредактировал Xoid - Воскресенье, 30 Ноября 2014, 00:43
GastellloДата: Понедельник, 01 Декабря 2014, 18:02 | Сообщение # 5
был не раз
Сейчас нет на сайте
Большое спасибо, все заработало как надо.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема со вращением
  • Страница 1 из 1
  • 1
Поиск:

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