Среда, 25 Декабря 2024, 10:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
GastellloДата: Понедельник, 01 Декабря 2014, 18:02 | Сообщение # 1 | Тема: Проблема со вращением
был не раз
Сейчас нет на сайте
Большое спасибо, все заработало как надо.
GastellloДата: Суббота, 29 Ноября 2014, 22:53 | Сообщение # 2 | Тема: Проблема со вращением
был не раз
Сейчас нет на сайте
непомогает
GastellloДата: Пятница, 28 Ноября 2014, 18:13 | Сообщение # 3 | Тема: Проблема со вращением
был не раз
Сейчас нет на сайте
Здравствуйте дорогие форумчане. У меня такой вопрос, делаю контроллер для космического корабля, управление мышкой. Все вроде работает нормально, но почему-то появляется вращение по оси з как на картинке. Как это исправить?



Код


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

  • Страница 1 из 1
  • 1
Поиск:

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