|
Unity Мультиплатформенный инструмент для разработки игр |
13.03.2013, 16:18
|
#961
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Надо передавать не слой, а маску
lay = 1 << (int)LayerMask.NameToLayer("JustRayCast");
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.03.2013, 17:24
|
#962
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Интересно, тыркался пыркался, еле допёр что это делает ))
Получается LayerMask.NameToLayer("") возвращает нам номер слоя (8-й), а надо использовать получается Бит из возможных 32-х.
Т.е. если надо использовать для рейкаста 3,5,6 слоя то надо отправить int:
в десятичной = 2^3 + 2^5 + 2^6 = 104 (галки это степени)
либо бинарной = ...0000000110100 = 104
т.е.
lay = 1 << (int)LayerMask.NameToLayer("JustRayCast");
lay += 1 << (int)LayerMask.NameToLayer("Default");
равносильно
lay = Mathf.Pow(2,LayerMask.NameToLayer("JustRayCast")) + Mathf.Pow(2,LayerMask.NameToLayer("Default"))
Прям теорема получилась
Правда запись не упростилась ))
Ну так, для общего развития пойдёт!
__________________
|
(Offline)
|
|
13.03.2013, 19:07
|
#963
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от Andvrok
Можно ли проверить, есть ли какой-либо геймобжект в определенной точке пространства? Если да, то пните меня в нужном направлении, пожалуйста.
|
еще как вариант установить в эту точку пространства триггер и проверять его пересечение с объектом
|
(Offline)
|
|
13.03.2013, 22:03
|
#964
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Появилось парочка вопросов, подскажите плиз.
Начал искать как на русском текст выводить, нашел чтото, получилось. Перекодировал из notepad++ в UTF-8, хотя говорят что лучше кодировать в UTF-16, но такового не нашлось..
После перекодировки русский появляется только при написании в Notepad++ и в MonoDevelop русский стал закорючками.
Можно както кодировку в самом MonoDevelop'е поменять?
Или какоё-нибудь другой хороший вариант.
И еще, хотел при коллайднутом объекте выводить текст относительно его позиции. Сделал так
Vector3 v3 = Camera.main.WorldToScreenPoint(playerHit.transform.position); GUI.TextField(new Rect(v3.x, v3.y, 150, 50), label);
Но относительно экрана по Х определяет правильно а по У наоборот как будто. Т.е. когда держишься по центру относительно У - текст в центре, а когда передвигаешь объект относительно У вверх - текст уходит вниз..
__________________
|
(Offline)
|
|
14.03.2013, 07:17
|
#965
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
1. Я не использую монодевелоп (пишу в Visual Studio), но в нем можно сохранить с кодировкой, просто нажми файл->сохранить как...
2. v3.y = Screen.height - v3.y;
|
(Offline)
|
|
14.03.2013, 12:57
|
#966
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Не, эт понятно что решение есть, я думал что может не ту функцию использую.
Как то это не правильно, если WorldToScreenPoint должна определять координаты на экране, то никак не (х, height - y)
__________________
|
(Offline)
|
|
14.03.2013, 13:01
|
#967
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Почему нет? Мышь работает в тех же координатах, как и камера (рект камеры задается аналогично) и в справке про координатную систему написано http://docs.unity3d.com/Documentatio...reenPoint.html .
Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.
|
|
(Offline)
|
|
14.03.2013, 21:53
|
#968
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Ну не знаю, я както привык что левый верхний угол экрана, это начало координат. Думал что это стандарт..
Сейчас взялся за GUI, и тут не на все вопросы могу найти ответы.
Разобрался как свои скины вешать, немного разобрался в настройках, но помогите кое в чём
Есть текстура и текст, можно както сделать чтобы текстура растягивалась вместе с текстом, не важно в чем Label, TextArea.
И не могу найти как в скине допустим у TextArea сделать текстуру прозрачной.
И если есть какой-нибудь хорошая (полезная) тема по GUI - очень поможете!
__________________
|
(Offline)
|
|
15.03.2013, 07:33
|
#969
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
GUI это достаточно сложная тема, если лезть в ее дебри.
Растягивание: Когда создаешь стиль - надо задать Border для не растягиваемых краев, все что в него не попадает - растягивается. Конечно при условии если ты не задал фиксированный размер элемента управления. Текстура должна быть задана в Normal=>background на сколько я помню.
Текстуру прозрачной делай саму. Либо если хочешь контрол прозрачным сделать? то напиши перед его отрисовкой следующее:
GUI.color = new Color(1,1,1,0.5f);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.03.2013, 17:04
|
#970
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Чтото так и не допёр как свой класс создать так, чтобы можно было обращаться к его полям.
Т.е.
public class plantInfoRect { public Rect commentLabel, growIcon, growLabel; }
А обращаться потом
plantInfoRect.commentLabel = new Rect...;
__________________
|
(Offline)
|
|
15.03.2013, 17:13
|
#971
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
Для начала нужно создать сам класс plantInfoRect (если он, конечно, не статический).
plantInfoRect info = new plantInfoRect();
И уже потом заполнять его поля.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.03.2013, 17:35
|
#972
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
А ничего что я хочу использовать такую структуру :
private class PlantInfo { private Rect commentLabel, growIcon, growLabel; } private PlantInfo plantInfoRect;
void Start() { plantInfoRect = new PlantInfo(); }
void Update { plantInfoRect.commentLabel = new Rect(..); }
вместо
enum plantInfo {commentLabel, growIcon,}; private Rect[] plantInfoRect;
void Start() { plantInfoRect = new Rect[Enum.GetNames(typeof(plantInfo)).Length]; }
void Update { plantInfoRect[(int)plantInfo.commentLabel] = new Rect(..); }
На производительности и других подводных камнях не отзовётся?
__________________
|
(Offline)
|
|
15.03.2013, 17:50
|
#973
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
Ну только вместо:
private Rect commentLabel, growIcon, growLabel;
нужно
public Rect commentLabel, growIcon, growLabel;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.03.2013, 17:59
|
#974
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Помогите, не получается обратиться к классу rect.commentLabel
public class PlantInfoClass { public bool enable; public Vector3 position; public class PlantInfoRect {public Rect commentLabel, growIcon, growLabel;} public PlantInfoRect rect; } public PlantInfoClass plantInfo;
void Start () { plantInfo = new PlantInfoClass(); plantInfo.rect.commentLabel = new Rect(); //Здесь ошибка }
Object reference not set to an instance of an object
PlayerController.Start ()
Ссылка на объект не указывает на экземпляр объекта
__________________
Последний раз редактировалось burovalex, 15.03.2013 в 22:25.
|
(Offline)
|
|
16.03.2013, 15:34
|
#975
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Блин, выходные, булка вымерла
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:05.
|