Rays

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

Rays

Сообщение Gomg 23 окт 2012, 06:41

как мне сделать чтобы луч постоянно исходил из центра камеры вперед, и при столкновении с RigidBoy появлялось GUI, тут проблема только в том что луч не выпускается из центра камеры.

только нормально напишите, а не ссылки кидайте.

Синтаксис:
Используется csharp
void Update () {
                guilenght = Screen.width / 6;
                ray = ray(transform.position, Vector3.forward, range);
                if (Physics.Raycast(ray, out hit, range))
                        {
                                if (hit.rigidbody) {
                                        showGUI = true;
                                }
                        }
                if (!hit.rigidbody)
                        showGUI = false;
        Debug.DrawRay(transform.position, transform.forward, Color.red);
        }
       
        void OnGUI () {
                if (showGUI == true)
                {
                        GUI.Box(new Rect(Screen.width / 2 - (guilenght / 2), Screen.height / 5,
                                guilenght, Screen.height / 5), "");
                }
        }
}
Gomg
UNIт
 
Сообщения: 78
Зарегистрирован: 03 авг 2012, 03:00

Re: Rays

Сообщение CoreRaySpark 23 окт 2012, 11:51

ray = ray(transform.position, Vector3.forward, range); замени на ray = ray(transform.position, transform.TransformDirection(Vector3.forward), range);
Сейчас у тебя луч выпускается вперед по мировым координатам, а не относительно объекта
Аватара пользователя
CoreRaySpark
UNец
 
Сообщения: 23
Зарегистрирован: 17 окт 2012, 21:54

Re: Rays

Сообщение RestFall 23 окт 2012, 12:07

как то так думаю должно быть:)

Синтаксис:
Используется csharp
private Transform my_transform; //если тут выдаст ошибку, измени на public и в эдиторе вставь камеру сюда
RaycastHit hit;
void FixedUpdate()
{              
       Physics.Raycast(my_transform.position, Vector3.forward, out hit, range)//если тут выдаст ошибку, оберни в if полностью, до дэбаг.драурэй
       if (hit.rigidbody)
       {
           showGUI = true;
       }
       else
       {
           showGUI = false;
       }
       Debug.DrawRay(transform.position, transform.forward, Color.red);
}
void OnGUI ()
{
       guilenght = Screen.width / 6;
       if (showGUI == true)
       {
            GUI.Box(new Rect(Screen.width / 2 - (guilenght / 2), Screen.height / 5,
            guilenght, Screen.height / 5), "");
       }
}
 
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: Rays

Сообщение Gomg 23 окт 2012, 12:47

все сделал, спасибо всем! Ray ray = new Ray(transform.position, transform.TransformDirection(Vector3.forward));
Gomg
UNIт
 
Сообщения: 78
Зарегистрирован: 03 авг 2012, 03:00

Re: Rays

Сообщение pod4444 23 окт 2012, 14:00

transform.forward, не? покороче выглядит
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: Rays

Сообщение Gomg 24 окт 2012, 12:34

pod4444 писал(а):transform.forward, не? покороче выглядит

может
Gomg
UNIт
 
Сообщения: 78
Зарегистрирован: 03 авг 2012, 03:00


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

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

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