rotacja obiektu przed jego ruchem

Programowanie w Unity.

rotacja obiektu przed jego ruchem

Postprzez Ventura » 31 Maj 2018, 12:03

Witam
Od niedawna ucze sie C++ oraz Unity. Mam problem ze skryptem ruchu.
Chce aby obiekt poruszal sie w czterech kierunkach i przed kazdym
przesunieciem obracal sie odpowiednio. Napisalem prosty skrypt ale gdy
obiekt jest skierowany do dolui chce sie poruszyc w prawo to wykonuje
obrot w zla strone i caly uklad sie sypie i moge tylko sie obracac w
miejscu. druga sprawa to chcialbym aby rotacja byla wykonywana bez
mozliwosci zatrzymania sie na katach innych jak 90 i 180 stopni. Jest
ktos w stanie mi doradzic w jakim kierunku mam szukac rozwiazania ?

Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class move : MonoBehaviour {

    public float speed = 5f;
    public float rotspeed = 10f;

        // Use this for initialization
        void Start ()
    {

        }

        // Update is called once per frame
        void Update ()
    {

        // RUCH

        if (Input.GetKey(KeyCode.W))  // w gore
        {
            if (rotspeed != 0)
            {
                rotspeed++;
                transform.localEulerAngles = new Vector3(0, rotspeed, 0);
            }
            if (rotspeed == 0)
            {
                transform.position += Vector3.back * Time.deltaTime * speed;
            }



        }

        else if (Input.GetKey(KeyCode.S)) // w dol
        {
            if (rotspeed != -180)
            {
                rotspeed--;
                transform.localEulerAngles = new Vector3(0, rotspeed, 0);
            }
            if (rotspeed == -180)
            {
                transform.position += Vector3.forward * Time.deltaTime * speed;
            }


        }

        else if (Input.GetKey(KeyCode.D))  // prawo
        {
            if (rotspeed == -180) // warunek ruchu w prawo jezeli
obiekt jest ustawiony do dolu
            {
                rotspeed = 180;
                rotspeed--;
                transform.localEulerAngles = new Vector3(0, rotspeed, 0);
            }

            if (rotspeed != 90)
            {
                rotspeed++;
                transform.localEulerAngles = new Vector3(0, rotspeed, 0);
            }
            if (rotspeed == 90)
            {
                transform.position += Vector3.left * Time.deltaTime * speed;
            }




        }

        else if (Input.GetKey(KeyCode.A))  // lewo
        {

            if (rotspeed != -90)
            {
                rotspeed--;
                transform.localEulerAngles = new Vector3(0, rotspeed, 0);

            }
            if (rotspeed == -90)
            {
                transform.position += Vector3.right * Time.deltaTime * speed;
            }
        }
    }
}
Ventura
 
Posty: 1
Rejestracja: 31 Maj 2018, 11:58
Has thanked: 0 time
Been thanked: 0 time

Wróć do Skrypty

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 13 gości

cron