Кнопка GUITexture для сенсорников

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

Кнопка GUITexture для сенсорников

Сообщение Merkurii 22 дек 2011, 04:29

Не могу реализовать нажатие кнопки через гуй текстуру на сенсорнике,почему то выдает ошибку,
но на яве эта строка работает судя по тутору Penelope : guiNitroElement = GetComponent(GUITexture);
пишу на C#
Синтаксис:
Используется csharp

public float speed = 3.0F;
public float nitro = 20.0F;    

private GUITexture guiNitroElement;

void Start () {
        guiNitroElement = GetComponent(GUITexture); /* тут почему то выдает ошибку но на яве судя по тутору работает :  Expression denotes a `type', where a `variable', `value' or `method group' was expected */
       }

void Update () {
                int count = Input.touchCount; // количество нажатий по экрану
                for(int i = 0 ; i < count ; i++){
                        Touch touch = Input.GetTouch(i);
               
                        if (guiNitroElement.HitTest(touch.position)){          
                                speed = speed*nitro;
                        }
                }
        }
 
Аватара пользователя
Merkurii
UNец
 
Сообщения: 37
Зарегистрирован: 19 окт 2010, 23:01

Re: Кнопка GUITexture для сенсорников

Сообщение Order 22 дек 2011, 04:56

Синтаксис:
Используется csharp
guiNitroElement = GetComponent<GUITexture>();


Синтаксис:
Используется csharp
        void Update ()
        {
                if(Input.GetKeyDown(KeyCode.Mouse0))
                {
                        MouseOn = true;
                }      

                foreach (Touch touch in Input.touches)
                {
                        if( guiNitroElement .HitTest (touch.position) && MouseOn) Nitro = true;

                }
         }
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Кнопка GUITexture для сенсорников

Сообщение Merkurii 22 дек 2011, 14:50

О крута расписал! Спасибо!
Аватара пользователя
Merkurii
UNец
 
Сообщения: 37
Зарегистрирован: 19 окт 2010, 23:01

Re: Кнопка GUITexture для сенсорников

Сообщение Merkurii 22 дек 2011, 21:49

блин чет не пойму все равно,по идее должно работать но не пашет в моем скрипте:
1.Скрипт описывает что то типо самолета парящего над поверхностью земли
2.При нажатии на Гуй текстуру включить нитроускорение

Скрипты делал на основе туторов Penelope и StarTrooper.

Косяки при запуске под Android v.3:
1.Когда включена гравитация акселерометр не действует,без гравитации работает.
2.При нажатии на гуй текстуру подвисает и потом при дальнейших нажатиях вообще нету реакции.

Доп вопросы:
1.Непойму самой логиги поворота на кватернионах,первые 3 значения массива это x,y,z а что значит 4я?
2.public GUITexture guiNitroElement; - сделал публичной и перетянул на него в инспекторе GameObject( с прикрепленной GUITexture),правильно ли это? или как то по другому производится поиск ГУЙ Текстуры в сцене.
3.Каким гуем лучше пользоваться для афона или Андроида? Стандартным или использовать плагины типо eGui и др?
Может стандартный Gui просто не очень дружит с сенсорниками?

скриншот: Изображение


Синтаксис:
Используется csharp

using UnityEngine;
using System.Collections;

public class PlayerControls : MonoBehaviour {
       
        public float speed = 1.0F;                      // скорочть умножается на guiSpeedElement
        public float nitro = 50.0F;                     // ускорение
        public float sensitivity = 10.0F;       // чувствительность акселерометра
        public float forwardForce = 1.0F;       // движущая сила,регит боди
       
        //public GUIText text;
        public GUITexture guiNitroElement;      // кнопка нитро
       
        bool horizontalOrientation  = true;

        private Vector3 euler = Vector3.zero; // наклон при повороте
       
       
        void Start () {
                Screen.orientation = ScreenOrientation.LandscapeLeft;
               
                guiNitroElement = GetComponent<GUITexture>();
                               
        }
       
        // нажитие кнопки нитроускорения + запуск фильтра MoushenBlur при ускорении
       
        /*void Update () {
                int count = Input.touchCount;
                for(int i = 0 ; i < count ; i++){
                        Touch touch = Input.GetTouch(i);
               
                        if (guiNitroElement.HitTest(touch.position)){          
                                speed = forwardForce*speed*nitro;
                                // как запустить фильтр моушен блюр?
                        }
                                                       
                }
        }*/

       
       
       
         void Update ()
        {
                foreach (Touch touch in Input.touches)
                {
                        if( guiNitroElement.HitTest(touch.position)) {
                                                        speed = forwardForce*speed*nitro;
                                        }
                }
                }
       
       
        void FixedUpdate () {
                rigidbody.AddRelativeForce(0, 0, speed * forwardForce);
       
                Vector3 accelerator = Input.acceleration;

                        if (horizontalOrientation){
                                float t = accelerator.x;
                                accelerator.x = -accelerator.y;
                                accelerator.y = t;
                        }
                // Rotate turn based on acceleration           
                euler.y += accelerator.x * speed;
               
                euler.z = Mathf.Lerp(euler.z, -accelerator.x * speed, 0.2F);
               
                // Since we set absolute lean position, do some extra smoothing on it
                euler.x = Mathf.Lerp(euler.x, accelerator.y * speed, 0.2F);
               
                Quaternion rot = Quaternion.Euler(euler);
                transform.rotation = Quaternion.Lerp (transform.rotation, rot, sensitivity);
        }
}

 
Аватара пользователя
Merkurii
UNец
 
Сообщения: 37
Зарегистрирован: 19 окт 2010, 23:01

Re: Кнопка GUITexture для сенсорников

Сообщение seaman 22 дек 2011, 23:16

первые 3 значения массива это x,y,z а что значит 4я

А что по Вашему они (x,y,z) значат? Вы, видимо думаете углы поворота вокруг соответствующих осей? Но это не так!
Потрудитесь, поищите на форуме. Это несколько раз обсуждалось. В инете полно статей по кватернионам.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Кнопка GUITexture для сенсорников

Сообщение Order 23 дек 2011, 05:25

Выключи гравитацию, повесь CharacterController на самолет, управляй через него
в скрипте управления, найди ГуиТехстуры через ГуиТехстура = GameObject.Find("ИмяГоГуиТекстурыНаСцене");
И через хиттест лови нажатия
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Кнопка GUITexture для сенсорников

Сообщение Merkurii 23 дек 2011, 20:35

Спасибо помогло.
Аватара пользователя
Merkurii
UNец
 
Сообщения: 37
Зарегистрирован: 19 окт 2010, 23:01


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

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

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