Механизм движения самолета, проблема с координатами

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Механизм движения самолета, проблема с координатами

Сообщение LamLan 01 мар 2019, 20:12

Здравствуйте, при создании самолета (для раннера), который двигается влево и вправо с изменения крена (ротации) у меня возникла проблема. Как я понял это проблема глобальных и локальных координатах. То есть, у меня по сути он передвигается, когда нажимаю левую стрелку(на клавиатуре) то влево летит и он наклоняется влево, когда вправо нажимаю, то вправо. Но постепенно, при поворотах, он опускается на землю. То есть координата y становится все меньше и меньше. Как можно решить данную проблему? Заранее спасибо
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FPSInput : MonoBehaviour
{
    public float speed = 6.0f;
    public float turnSpeed = 50f;
    public float Rotationspeed = 3f;
    private bool vprav = false;
    private bool vlevo = false;
    void Start()
    {  
    }
   
    void Update()
    {
        transform.Translate(0, (speed * Time.deltaTime), 0);
        if (transform.rotation.y < 0)
        {
            if (vprav == true)
            {
                transform.Translate(Rotationspeed * Time.deltaTime, 0, 0);
            }
        }
        if (transform.rotation.y > 0)
        {
            if (vlevo == true)
            {
                transform.Translate(-Rotationspeed * Time.deltaTime, 0, 0);
            }
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
            vprav = true;
            vlevo = false;
        }

        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
            vlevo = true;
            vprav = false;
        }
    }
}

 
LamLan
UNец
 
Сообщения: 16
Зарегистрирован: 25 июл 2018, 09:10

Re: Механизм движения самолета, проблема с координатами

Сообщение 1max1 01 мар 2019, 20:23

У метода transform.Rotate есть перегрузка, которая принимает Space (глобальное или локальное пространство), попробуй поставить на Space.World.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Механизм движения самолета, проблема с координатами

Сообщение LamLan 01 мар 2019, 21:02

1max1 писал(а):У метода transform.Rotate есть перегрузка, которая принимает Space (глобальное или локальное пространство), попробуй поставить на Space.World.


Да, но после преобразования в глобальные он уже не кренится как мне бы хотелось. То есть мне теперь нужно использовать углы Эйлера или кватернионы?
LamLan
UNец
 
Сообщения: 16
Зарегистрирован: 25 июл 2018, 09:10

Re: Механизм движения самолета, проблема с координатами

Сообщение LamLan 01 мар 2019, 21:10

А все, я понял, у меня объект уже имеет положение в виде 90 0 0 rotate, в локальных он работал и был крен, а в глобальных y и z крутилось влево и вправо, а x верх и вниз. Это можно решить, если изначально его расположить в 0 0 0 и можно будет делать крен в глобальных
LamLan
UNец
 
Сообщения: 16
Зарегистрирован: 25 июл 2018, 09:10

Re: Механизм движения самолета, проблема с координатами

Сообщение LamLan 01 мар 2019, 21:58

1max1 писал(а):У метода transform.Rotate есть перегрузка, которая принимает Space (глобальное или локальное пространство), попробуй поставить на Space.World.

Снова нужна помощь, я продолжаю использовать крен. Поэтому хотел при помощи условия на проверку if (transform.position.y < 3.8) вычислять, когда высота начинает падать возвращать его на место. Но я не знаю как это реализовать!!
LamLan
UNец
 
Сообщения: 16
Зарегистрирован: 25 июл 2018, 09:10

Re: Механизм движения самолета, проблема с координатами

Сообщение 1max1 01 мар 2019, 22:10

Синтаксис:
Используется csharp
var p = transform.position;
if (p.y < 3.8f)
    transform.position = new Vector3(p.x, 3.8f, p.z);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 26