forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

pax 13.03.2013 16:18

Ответ: Фак по Юнити.
 
Надо передавать не слой, а маску
PHP код:

lay << (int)LayerMask.NameToLayer("JustRayCast"); 


burovalex 13.03.2013 17:24

Ответ: Фак по Юнити.
 
Интересно, тыркался пыркался, еле допёр что это делает ))

Получается 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"))

Прям теорема получилась :cool:
Правда запись не упростилась ))
Ну так, для общего развития пойдёт! :)

EvilOkta 13.03.2013 19:07

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Andvrok (Сообщение 254415)
Можно ли проверить, есть ли какой-либо геймобжект в определенной точке пространства? Если да, то пните меня в нужном направлении, пожалуйста.

еще как вариант установить в эту точку пространства триггер и проверять его пересечение с объектом

burovalex 13.03.2013 22:03

Ответ: Фак по Юнити.
 
Появилось парочка вопросов, подскажите плиз.

Начал искать как на русском текст выводить, нашел чтото, получилось. Перекодировал из notepad++ в UTF-8, хотя говорят что лучше кодировать в UTF-16, но такового не нашлось..
После перекодировки русский появляется только при написании в Notepad++ и в MonoDevelop русский стал закорючками.

Можно както кодировку в самом MonoDevelop'е поменять?
Или какоё-нибудь другой хороший вариант.

И еще, хотел при коллайднутом объекте выводить текст относительно его позиции. Сделал так
PHP код:

Vector3 v3 Camera.main.WorldToScreenPoint(playerHit.transform.position);
        
GUI.TextField(new Rect(v3.xv3.y15050), label); 

Но относительно экрана по Х определяет правильно а по У наоборот как будто. Т.е. когда держишься по центру относительно У - текст в центре, а когда передвигаешь объект относительно У вверх - текст уходит вниз..

pax 14.03.2013 07:17

Ответ: Фак по Юнити.
 
1. Я не использую монодевелоп (пишу в Visual Studio), но в нем можно сохранить с кодировкой, просто нажми файл->сохранить как...
2. v3.y = Screen.height - v3.y;

burovalex 14.03.2013 12:57

Ответ: Фак по Юнити.
 
Не, эт понятно что решение есть, я думал что может не ту функцию использую.
Как то это не правильно, если WorldToScreenPoint должна определять координаты на экране, то никак не (х, height - y) :mda:

pax 14.03.2013 13:01

Ответ: Фак по Юнити.
 
Почему нет? Мышь работает в тех же координатах, как и камера (рект камеры задается аналогично) и в справке про координатную систему написано 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.

burovalex 14.03.2013 21:53

Ответ: Фак по Юнити.
 
Ну не знаю, я както привык что левый верхний угол экрана, это начало координат. Думал что это стандарт..

Сейчас взялся за GUI, и тут не на все вопросы могу найти ответы.
Разобрался как свои скины вешать, немного разобрался в настройках, но помогите кое в чём

Есть текстура и текст, можно както сделать чтобы текстура растягивалась вместе с текстом, не важно в чем Label, TextArea.

И не могу найти как в скине допустим у TextArea сделать текстуру прозрачной.

И если есть какой-нибудь хорошая (полезная) тема по GUI - очень поможете!

pax 15.03.2013 07:33

Ответ: Фак по Юнити.
 
GUI это достаточно сложная тема, если лезть в ее дебри.

Растягивание: Когда создаешь стиль - надо задать Border для не растягиваемых краев, все что в него не попадает - растягивается. Конечно при условии если ты не задал фиксированный размер элемента управления. Текстура должна быть задана в Normal=>background на сколько я помню.

Текстуру прозрачной делай саму. Либо если хочешь контрол прозрачным сделать? то напиши перед его отрисовкой следующее:
PHP код:

GUI.color = new Color(1,1,1,0.5f); 


burovalex 15.03.2013 17:04

Ответ: Фак по Юнити.
 
Чтото так и не допёр как свой класс создать так, чтобы можно было обращаться к его полям.
Т.е.

PHP код:

public class plantInfoRect
    
{
    public 
Rect commentLabelgrowIcongrowLabel;
    } 

А обращаться потом
PHP код:

plantInfoRect.commentLabel = new Rect...; 


seaman 15.03.2013 17:13

Ответ: Фак по Юнити.
 
Для начала нужно создать сам класс plantInfoRect (если он, конечно, не статический).
Код:

plantInfoRect info = new plantInfoRect();
И уже потом заполнять его поля.

burovalex 15.03.2013 17:35

Ответ: Фак по Юнити.
 
А ничего что я хочу использовать такую структуру :
PHP код:

private class PlantInfo
    
{
    private 
Rect commentLabelgrowIcongrowLabel;
    }  
private 
PlantInfo plantInfoRect;

void Start()
{
plantInfoRect = new PlantInfo();
}

void Update
{
plantInfoRect.commentLabel = new Rect(..);




вместо

PHP код:

enum plantInfo {commentLabelgrowIcon,};
private 
Rect[] plantInfoRect

void Start()
{
plantInfoRect = new Rect[Enum.GetNames(typeof(plantInfo)).Length];
}

void Update
{
plantInfoRect[(int)plantInfo.commentLabel] = new Rect(..);




На производительности и других подводных камнях не отзовётся?

seaman 15.03.2013 17:50

Ответ: Фак по Юнити.
 
Ну только вместо:
private Rect commentLabel, growIcon, growLabel;
нужно
public Rect commentLabel, growIcon, growLabel;

burovalex 15.03.2013 17:59

Ответ: Фак по Юнити.
 
Помогите, не получается обратиться к классу rect.commentLabel
PHP код:

public class PlantInfoClass
        
{
        public 
bool enable;    
        public 
Vector3 position;
        public class 
PlantInfoRect {public Rect commentLabelgrowIcongrowLabel;}
        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 ()

Ссылка на объект не указывает на экземпляр объекта :mda:

burovalex 16.03.2013 15:34

Ответ: Фак по Юнити.
 
Блин, выходные, булка вымерла :(


Часовой пояс GMT +4, время: 02:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot