Страница 1 из 2

Обьекты появляются ПОД префабом

СообщениеДобавлено: 23 ноя 2017, 22:50
Pikov
Здравствуйте уважаемые игроделы, прошу помощи , начал обучение UNITY смотрю гайды на офф.канале unity и вот такая штука у меня вышла :Мне нужно что бы при клике на браш у меня он либо заменялся префабом ,либо как ниже описано в коде просто создавался на нём ,но у меня как то не выходит это ,префаб создаётся ниже браша и меньше размером.Что нужно исправить?

Синтаксис:
Используется csharp
public GameObject card;
        public Camera camera;
        public bool ch = false;
        // Use this for initialization
        void Start () {
               
        }
       
        // Update is called once per frame
        void Update ()
        {
                RaycastHit hit;
                Ray ray = camera.ScreenPointToRay (Input.mousePosition);
                if (Physics.Raycast (ray, out hit)) {
                        Transform objectHit = hit.transform;
                        if (Input.GetMouseButton (0)) {
                                if (hit.collider.tag == "karta") {
                                       
                                        Instantiate (card, objectHit);
                                               
                                        }
                                }
                        }
                }
        }

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 00:22
samana
А этот код точно работает? Вы передаёте трансформ туда, где нужно передать позицию (Instantiate (card, objectHit)).
Если это псевдокод, то не делайте так больше, а показывайте оригинальный. К тому же код надо оформлять тегами (кнопка CS в редактировании сообщения).

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 14:40
Pikov
samana писал(а):А этот код точно работает? Вы передаёте трансформ туда, где нужно передать позицию (Instantiate (card, objectHit)).
Если это псевдокод, то не делайте так больше, а показывайте оригинальный. К тому же код надо оформлять тегами (кнопка CS в редактировании сообщения).


Я знаю что это БЫДЛОкод ,но пока что по другому не умею:)Можете подсказать как будет правильнее его оформить?И желательно как сделать что бы префаб появлялся с определённым размером.

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:04
Cr0c
Сначала прочесть все перегрузки Instantiate. Прочесть какие свойства имеет Transform (например про свойство localScale).

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:12
samana
Лучше пускать луч и делать все расчёты после нажатия мыши, а не постоянно до него.
Вот так должно сработать, теоретически. На счёт размера нового объекта не подскажу, так как вы должны задать его сами.

Синтаксис:
Используется csharp
void Update()
{
    if (Input.GetMouseButton(0))
    {
        RaycastHit hit;
        Ray ray = camera.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out hit))
        {
            if (hit.collider.tag == "karta")
            {
                Transform newCard = Instantiate<GameObject>(card).transform;
                newCard.position = hit.transform.position;
                newCard.transform.localScale = new Vector(0.5,0.5,0.5)
            }
        }
    }
}

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:33
Pikov
samana писал(а):Лучше пускать луч и делать все расчёты после нажатия мыши, а не постоянно до него.
Вот так должно сработать, теоретически. На счёт размера нового объекта не подскажу, так как вы должны задать его сами.

Синтаксис:
Используется csharp
void Update()
{
    if (Input.GetMouseButton(0))
    {
        RaycastHit hit;
        Ray ray = camera.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out hit))
        {
            if (hit.collider.tag == "karta")
            {
                Transform newCard = Instantiate<GameObject>(card).transform;
                newCard.position = hit.transform.position;
                newCard.transform.localScale = new Vector(0.5,0.5,0.5)
            }
        }
    }
}


Я так понял в коде небольшая ошибка в строке newCard.transform.localScale = new Vector(0.5,0.5,0.5) нужно написать new Vector3 ,но и так и так выдаёт ошибку.Либо Vector нужно сделать переменной какого либа вида?
p.s.извините что туплю только начинаю учиться)

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:36
Cr0c
samana писал(а):На счёт размера нового объекта не подскажу, так как вы должны задать его сами.

Он задается из префаба и потом ещё раз скейлится по родителю, а тот по своему родителю и так до корня.

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:37
Cr0c
new Vector3(0.5f, 0.5f, 0.5f)

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:39
Pikov
Cr0c писал(а):new Vector3(0.5f, 0.5f, 0.5f)


Спасибо,а что даёт это предписание f?

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:40
samana
Cr0c писал(а):
samana писал(а):На счёт размера нового объекта не подскажу, так как вы должны задать его сами.

Он задается из префаба и потом ещё раз скейлится по родителю, а тот по своему родителю и так до корня.

Да, скорее всего так, автор ведь ничего не говорил по этому поводу.

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:41
Anonymyx
'f' явно указывает что число типа float, а не double.
Извинюсь что вмешиваюсь.

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:41
samana
Pikov писал(а):
Cr0c писал(а):new Vector3(0.5f, 0.5f, 0.5f)


Спасибо,а что даёт это предписание f?


Очень просто, это сокращенно от
Флипендо — Отталкивающие чары в играх «Гарри Поттер и Философский камень» и «Гарри Поттер и Тайная комната».

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:42
Pikov
samana писал(а):
Cr0c писал(а):
samana писал(а):На счёт размера нового объекта не подскажу, так как вы должны задать его сами.

Он задается из префаба и потом ещё раз скейлится по родителю, а тот по своему родителю и так до корня.

Да, скорее всего так, автор ведь ничего не говорил по этому поводу.


Размер в префабе устанавливал изначально)СПасибо большое всем за помощь:)

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:43
samana
Anonymyx писал(а):'f' явно указывает что число типа float, а не double.
Извинюсь что вмешиваюсь.

Приготовьтесь отвечать на вопрос - что такое float и double :D

Re: Обьекты появляются ПОД префабом

СообщениеДобавлено: 24 ноя 2017, 16:43
Pikov
Anonymyx писал(а):'f' явно указывает что число типа float, а не double.
Извинюсь что вмешиваюсь.

Спасибо за объяснение :)