Компас

Общие вопросы о Unity3D

Компас

Сообщение Umarta 02 сен 2009, 11:17

Привет Всем! Друзья, подскажите пожалуйста, как в проекте реализовать компас. Видел в англофоруме пост камрада Neo (http://forum.unity3d.com/viewtopic.php?p=196805#196805) и задался таким вопросом. Neo, если не трудно расскажите всем (можно с куском кода :-B ). А скрины классные!!! :ymparty:
Umarta
UNIт
 
Сообщения: 77
Зарегистрирован: 28 май 2009, 19:16

Re: Компас

Сообщение Neodrop 02 сен 2009, 11:59

Это проще простого. Всего лишь получайте градус вращения объекта в эулеровых углах.
То есть, если у вас объект называется personage :

float angleRotation;

angleRotation = personage.transform.eulerAngles.y;

Так вы получите градус поворота объекта в мировых координатах.

Далее, остаётся только повернуть стрелочку в GUI.
Вот кусок кода:
Код: Выделить всё
            Matrix4x4 guiMatrix = GUI.matrix; // засекаем текущую матрицу, чтобы не крутить вообще все элементы.

            GUIUtility.RotateAroundPivot(rotationRingAngle, new Vector2(pos.x, Screen.height - pos.y));

            GUI.DrawTexture(rect, selectedTexture); // тут можно использовать любой элемент GUI - кнопку, бокс, что угодно.

            GUI.matrix = guiMatrix; // восстанавливаем GUI матрицу.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Компас

Сообщение Umarta 02 сен 2009, 12:16

Спасибо, будем разбираться!
Umarta
UNIт
 
Сообщения: 77
Зарегистрирован: 28 май 2009, 19:16

Re: Компас

Сообщение ziat 20 окт 2009, 18:40

Вопрос почти в тему

делаю авиагоризонт....

Код: Выделить всё
var angleRotationx;
var angleRotationy;
var angleRotationz;
function Update () {
angleRotationy = transform.eulerAngles.y;
angleRotationx = transform.eulerAngles.x;
angleRotationz = transform.eulerAngles.z;
transform.Rotate(angleRotationx,angleRotationy,angleRotationz);
}


Как результат этого кода шар авиа горизонта вращается как не знаю кто(
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Компас

Сообщение Neodrop 20 окт 2009, 18:59

Ничего удивительного. Вы же в каждом кадре вращаете объект заново.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Компас

Сообщение ziat 20 окт 2009, 19:04

и как это поправить?(
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Компас

Сообщение Neodrop 20 окт 2009, 19:14

Перед вращением, ставьте объект в исходное состояние.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Компас

Сообщение ziat 20 окт 2009, 20:00

Решил
мб кому пригодится
(js)
Код: Выделить всё
var angleRotationx;
var angleRotationy;
var angleRotationz;
function Update () {
angleRotationx = transform.rotation.x-transform.eulerAngles.x;
angleRotationy = transform.rotation.y-transform.eulerAngles.y;
angleRotationz = transform.rotation.z-transform.eulerAngles.z;
transform.Rotate(angleRotationx,angleRotationy,angleRotationz);
}
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Компас

Сообщение norgen 21 ноя 2009, 21:04

Итак компасс.
Имеем стрелку, крутим скриптом. А крутится криво собака, что не так сделано, подскажите..( под спойлерами картинки с компасом).
(c#)
Код: Выделить всё
using UnityEngine;
using System.Collections;

public class Compas : MonoBehaviour {
public Texture2D comp_s;
public Transform pers;   
void OnGUI ()
{
   
float rotate = pers.transform.eulerAngles.y;

 
   GUIUtility.RotateAroundPivot (rotate, new Vector2(Screen.width - 64, 128));   
   GUI.Label (new Rect(Screen.width - 128, 64, 128, 128), comp_s);
   

}
}


Скрытый текст:

Скрытый текст:
Изображение
Аватара пользователя
norgen
UNIт
 
Сообщения: 88
Зарегистрирован: 23 июл 2009, 23:53
  • Сайт

Re: Компас

Сообщение Sam55555 22 ноя 2009, 13:37

norgen
попробуй так
Код: Выделить всё
using UnityEngine;
using System.Collections;

public class Compas : MonoBehaviour {
public Texture2D comp_s;
public Transform pers;   
void OnGUI ()
{
   
float rotate = pers.transform.eulerAngles.y;

/*
   GUIUtility.RotateAroundPivot (rotate, new Vector2(Screen.width - 64, 128));   
   GUI.Label (new Rect(Screen.width - 128, 64, 128, 128), comp_s);
   */
      GUIUtility.RotateAroundPivot (rotate, new Vector2(160, 160));   
     GUI.DrawTexture(new Rect(32.0f, 32.0f, 256.0f, 256.0f),
                     comp_s, ScaleMode.StretchToFill, true, 0);

}
}
Аватара пользователя
Sam55555
UNец
 
Сообщения: 41
Зарегистрирован: 26 июн 2009, 00:45

Re: Компас

Сообщение Griff 05 июл 2010, 16:20

А как зацепить на GUI скрипт? ~x(
"Работа не волк, работа - ворк. А волк - это ходить."
Аватара пользователя
Griff
UNец
 
Сообщения: 9
Зарегистрирован: 22 мар 2010, 14:34
Откуда: Магнитогорск
  • Сайт

Re: Компас

Сообщение Altodor 27 янв 2011, 17:10

А вот такой вопрос по компасу. У меня есть текстура моей карты - вид сверху. Но на компасе нужно отобразить только часть этой карты - твоё местоположение. Как обрезать текстуру, желательно по кругу, а не прямоугольником, чтобы сделать на компасе изображение участка карты?

Как вот тут например:
Изображение
Altodor
UNIт
 
Сообщения: 82
Зарегистрирован: 19 сен 2010, 07:58

Re: Компас

Сообщение Golandez 28 янв 2011, 05:20

Смотреть Bootcamp Demo.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Компас

Сообщение Altodor 28 янв 2011, 11:02

Искал исходники, искал... и не нашёл. Только скомпилированную версию.. Подскажите пожалуйста, где найти исходнити или тутору по BootcampDemo?
Altodor
UNIт
 
Сообщения: 82
Зарегистрирован: 19 сен 2010, 07:58

Re: Компас

Сообщение Zaicheg 28 янв 2011, 11:06

При установке Unity 3.x проект Bootcamp установится в "Мои документы" (или в "Общие", не помню)
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

След.

Вернуться в Общие вопросы

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

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