Mathf.Clamp вне GetAxis

Программирование на Юнити.

Mathf.Clamp вне GetAxis

Сообщение [NN]Bot 04 июл 2017, 01:43

добрый...,
есть много мануалов, но все какие видел - на GetAxis(es) направлены,
пытался сделать так что бы объект вращался во всех направлениях , но с ограничениями по осям 'x' и 'z' .
невыходит, "каменный цветок" [curved_hands]

(пробывал и под GetAxis Cover сделать,тож не вышло..)
//тут нуже смайлик, который второй кривой рукой молотком себе по голове лупит


Синтаксис:
Используется csharp
[/syntax=csharp]
using UnityEngine;
using System.Collections;

public class ws : MonoBehaviour {
        private GameObject player;
        public float minkren = -100f;//величина ограничения наклона
        public float maxkren=  100f;//величина ограничения наклона
        public static float xrot = 200f; //скорость вращения по х
        public static float yrot = 200f; //скорость вращения по y
        public static float zrot = 200f;//скорость вращения по z
        public static float x ; //угол поворота по оси x    
        public static float y ; //угол поворота по оси y    
        public static float z ; //угол поворота по оси z    
        public int rotation = 250; //Скорость поворота
        Quaternion limit2; // лимит наклона
        void Start () {
                player = (GameObject)this.gameObject;
        }
       

        void Update () {
                Quaternion rotate = Quaternion.Euler (x, y, z);// координируем данные

                if (Input.GetKey (KeyCode.W)) {
                        transform.rotation *= Quaternion.Euler (xrot * Time.deltaTime, y, z); //получаем  прооперированный(*) угол полученный  клавишей по  ох  
                        limit2 =transform.rotation ;                                                                            //скидываем полученные данные на лимит2
                        rotate.x = Mathf.Clamp ( limit2.x, minkren, maxkren);  //ограничиваем эти данные и передаём их к rotate (по идее только х ограничиваем)
                        transform.rotation  = rotate;                                                   //и отдаём эти координаты на базу..
                }

                if (Input.GetKey (KeyCode.S)) {                                                                                 //тут всё тоже самое
                        transform.rotation *= Quaternion.Euler (-xrot * Time.deltaTime, y, z);
                        limit2 =transform.rotation ;
                        rotate.x = Mathf.Clamp ( limit2.x, minkren, maxkren);
                        transform.rotation  = rotate;
                }
                if (Input.GetKey(KeyCode.A))                                                                                    //ниже, просто вращаем без всяких ограничений..
                        transform.rotation *=Quaternion.Euler(x, yrot * Time.deltaTime,z);
                if (Input.GetKey (KeyCode.D))
                        transform.rotation *= Quaternion.Euler (x, -yrot * Time.deltaTime, z);
                if (Input.GetKey(KeyCode.Q))
                        transform.rotation *= Quaternion.Euler(x,y, zrot*Time.deltaTime );
                if (Input.GetKey (KeyCode.E))
                        transform.rotation *= Quaternion.Euler (x, y, -zrot * Time.deltaTime);

        }
}
[syntax=]
[syntax=][/syntax]
Последний раз редактировалось [NN]Bot 04 июл 2017, 12:52, всего редактировалось 3 раз(а).
[NN]Bot
UNец
 
Сообщения: 2
Зарегистрирован: 03 июл 2017, 15:37

Re: Mathf.Clamp вне GetAxis

Сообщение Albeoris 04 июл 2017, 10:49

Изложи свои мысли более структурировано и исправь форматирование кода.

Синтаксис:
Используется csharp
Quaternion rotate = Quaternion.Euler (x, y, z);

С учётом того, что x, y, z ты нигде не инициализируешь в представленном фрагменте, они всегда равны 0, в связи с чем твой вопрос вызывает недоумение - сколько задал, столько и получил. Зачем тебе их вообще хранить, если ты работаешь с transform'ом? Крути себе по deltaTime * speed и не приумножай сущности. Что мешает пройти в отладчике и самостоятельно увидеть все эти проблемы?
Albeoris
UNIт
 
Сообщения: 146
Зарегистрирован: 19 окт 2013, 13:12

Re: Mathf.Clamp вне GetAxis

Сообщение [NN]Bot 04 июл 2017, 14:53

да, пойду учить уроки..
(c#)
вобщем тема остаётся открытой,
ещё 3 дня поисков описания или примеров не дали результата,
ну нету ничего подобного, как будто все освоили этот CharacterController и всё, больше ничего не надо,

©Ну тут смотря что для чего. Rigidbody тема отдельная, с ней надо аккуратнее. В качестве управления игроком, лучше не использовать, себе дороже выйдет.
©©Alcatraz© http://flight-dream.com/forum/index.php?topic=1825.0
© Я вот с ригидбоди дел не имею©© Mimi Neko© с того же сайта, хотя судя по урокам , видно что могут, и шарят некисло,
чтож все так боятся эту ригодбодю, что с ней никто не связывается? [nuklear]
[NN]Bot
UNец
 
Сообщения: 2
Зарегистрирован: 03 июл 2017, 15:37


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5