Пятница, 19 Апреля 2024, 03:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • choopieДата: Воскресенье, 08 Февраля 2015, 12:49 | Сообщение # 6801
    частый гость
    Сейчас нет на сайте
    Цитата MANMANA ()
    задать новый Vector3 moveDirection = GameObject.FindGameObjectWithTag("nextTarget").transform.position - transform.position;
    ?:)


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

    Добавлено (08 февраля 2015, 12:12)
    ---------------------------------------------
    Нужно чтобы он как-то поворачивался к последнему созданному, а не к первому.

    Добавлено (08 февраля 2015, 12:49)
    ---------------------------------------------
    Починил лишь одной строчкой. biggrin

    Скрипт, котрый создает таргет. Было:



    Стало:



    Было довольно очевидно, что нужно уничтожить старую цель, при создании новой, не знаю почему тупил так долго. happy


    Сообщение отредактировал choopie - Воскресенье, 08 Февраля 2015, 12:51
    SkorpyXДата: Воскресенье, 08 Февраля 2015, 13:36 | Сообщение # 6802
    участник
    Сейчас нет на сайте
    choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?
    choopieДата: Понедельник, 09 Февраля 2015, 13:43 | Сообщение # 6803
    частый гость
    Сейчас нет на сайте
    Цитата SkorpyX ()
    choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?

    Ну вообще да, это было бы логичнее, но я хотел чтобы показывалась точка на экране, в которую бегу. Поэтому так и запилил. Ну, раз уж точка при нажатии появляется, пусть он к ней и бежит. Хотя я думаю эту систему можно было бы гораздо более легким и хорошим способом сделать, но что уж первое в голову пришло, я только учусь. =)

    Добавлено (09 февраля 2015, 13:06)
    ---------------------------------------------
    Цитата SkorpyX ()
    choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?


    Хотел так переделать, но что-то не получается. По нажатию мыши записывал в переменную координаты, собственно, мыши, а потом проверял, совпадают ли координаты игрока и этой переменной. Как ни пытался - не работает. >.<

    Добавлено (09 февраля 2015, 13:43)
    ---------------------------------------------
    Запилил все-таки. happy

    Если кому-то нужен скрипт для click-to-move движения:



    Сообщение отредактировал choopie - Понедельник, 09 Февраля 2015, 13:44
    berilДата: Понедельник, 09 Февраля 2015, 13:59 | Сообщение # 6804
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата choopie ()
    Если кому-то нужен скрипт для click-to-move движения:

    Я бы многое поменял бы в скрипт)




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    choopieДата: Понедельник, 09 Февраля 2015, 14:07 | Сообщение # 6805
    частый гость
    Сейчас нет на сайте
    Цитата beril ()
    Я бы многое поменял бы в скрипте


    Ну так предложи что поменять, укажи на ошибки. smile

    Просто часто когда гуглишь какой-то вопрос\проблему, находишь темы на форумах, где кто-то таким же вопросом задается, и разочаровываешься, когда натыкаешься на ответ автора "все, разобрался" \ "все, сделал". А самого объяснения то и нету. х) Поэтому всегда оставляю решение, если сам где-то задаю вопрос. Скрипт работает - и ладно, может кому пригодится, если его гугл сюда приведет. :D


    Сообщение отредактировал choopie - Понедельник, 09 Февраля 2015, 14:11
    darkduelistДата: Понедельник, 09 Февраля 2015, 14:54 | Сообщение # 6806
    частый гость
    Сейчас нет на сайте
    Вопрос закрыт, нашел сие чудо!



    Сообщение отредактировал darkduelist - Вторник, 10 Февраля 2015, 11:33
    choopieДата: Вторник, 10 Февраля 2015, 22:01 | Сообщение # 6807
    частый гость
    Сейчас нет на сайте
    Всем привет. Пилю интвентарь, как в видео, по этой ссылочке. И есть проблема. :\
    Не работает штука, которая работает у автора в видео. Судя по комментам, раньше работало у всех, а потом тоже перестало. Решения так и нету. В общем вот 3 скрипта:



    Проблема в этой строчке:

    Код
    inventory[i] = database.items[j];


    Так вообще не работает, хотя в видео также и все нормально работает.

    Также похожая конструкция не работает просто в функции Start:

    Код
    inventory[0] = database.items[1];


    Хотя в видео все четко.

    Работает только так:

    Код
    inventory.Add(database.items[1]);


    А при использовании предыдущей пишет:



    Сообщение отредактировал choopie - Вторник, 10 Февраля 2015, 22:02
    berilДата: Вторник, 10 Февраля 2015, 22:11 | Сообщение # 6808
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    не то я ошибся)



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)


    Сообщение отредактировал beril - Вторник, 10 Февраля 2015, 22:14
    choopieДата: Вторник, 10 Февраля 2015, 23:00 | Сообщение # 6809
    частый гость
    Сейчас нет на сайте
    Сижу-копаюсь, вот к чему пришел:
    В Start работает вот так, например:

    Код
      inventory.Add (new Item());
           inventory[0] = database.items[1];


    Т.е. в принципе логично, в inventory[0] нет даже пустого класса - то и не добавляет. Если же прежде добавить пустой, то и запихивать на его место можно другие.

    Но в видео все работает и без этого. :\ Так придется перед каждым итемом добавлять пустой, по порядку добавляется. На определенное место то никак не запилить. :\

    Добавлено (10 февраля 2015, 22:25)
    ---------------------------------------------
    Тьфу ты, нашел ошибку. Он собственно так и делал, просто я пропустил это. Ну хоть сам догадался, что надо сделать.

    Код
        for(int i = 0; i < (slotsX * slotsY); i++){
             slots.Add (new Item());
             inventory.Add (new Item());
            }


    А у меня было просто:

    Код
        for(int i = 0; i < (slotsX * slotsY); i++)
             slots.Add (new Item());


    Добавлено (10 февраля 2015, 22:28)
    ---------------------------------------------
    Почему-то дичайше лагать начало при отрисовке инвентаря, хотя раньше было все ок.

    Варнинг выдает:

    Код
    ull texture passed to GUI.DrawTexture
    UnityEngine.GUI:DrawTexture(Rect, Texture)
    Inventory:DrawInventory() (at Assets/Scripts/Inventory.cs:42)
    Inventory:OnGUI() (at Assets/Scripts/Inventory.cs:32)


    Там вот это:

    Код
    void DrawInventory(){
          for(int x = 0; x < slotsX; x++){
           for(int y = 0; y < slotsY; y++){
            Rect slotRect = new Rect(x * 60, y * 60, 50, 50);
            GUI.Box (slotRect, "", skin.GetStyle ("Slot"));
            if((x+(y*slotsX)) < inventory.Count){
             slots[x+(y*slotsX)] = inventory[x+(y*slotsX)];
             GUI.DrawTexture(slotRect, slots[x+(y*slotsX)].itemIcon);
            }
              }
          }

         }


    32-ая строчка это:

    Код
    GUI.DrawTexture(slotRect, slots[x+(y*slotsX)].itemIcon);


    Добавлено (10 февраля 2015, 22:53)
    ---------------------------------------------
    Проблема появилась определенно из-за этой строчки в цикле

    Код
    inventory.Add (new Item());


    Непонятно почему, до этого все работало и не лагало.

    Добавлено (10 февраля 2015, 23:00)
    ---------------------------------------------
    Нашел проблему.

    Было:



    Стало:


    Сообщение отредактировал choopie - Вторник, 10 Февраля 2015, 23:01
    SkorpyXДата: Среда, 11 Февраля 2015, 17:47 | Сообщение # 6810
    участник
    Сейчас нет на сайте
    Подскажите пожалуйста, как можно поставить определённому источнику света только vertex-lit освещение. Я пробовал через Render mode источника, но Vertex-lit important и not important различаются!
    MANMANAДата: Среда, 11 Февраля 2015, 21:13 | Сообщение # 6811
    почти ветеран
    Сейчас нет на сайте
    эм.... вот поставить виртекс лит шейдер модели, назначить ей определенный слой, а в culling mask выбрать этот слой - я знаю.
    А вот про что ты говоришь, я не понимаю...

    " Important Источник света рендерится пиксельным методом. Используйте данную опцию только для очень важных источников света (таких как, фары автомобиля игрока).
    Not Important Источник света рендерится быстрее всех предыдущих режимов рендеринга. Вершинный/объектный режим освещения."

    "Как?"
    "Различаются..."

    ничего не понимаю smile


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею
    SkorpyXДата: Среда, 11 Февраля 2015, 22:43 | Сообщение # 6812
    участник
    Сейчас нет на сайте
    MANMANA, я поставил vertex-lit шейдер на модель, и при переключении режимов spotlight с important на not important освещение разное получается surprised
    choopieДата: Четверг, 12 Февраля 2015, 13:55 | Сообщение # 6813
    частый гость
    Сейчас нет на сайте
    Пасаны, не подскажите, как делают такую шнягу? Тайм-код прилагается. Может у вас где есть ссылочка на бесплатный ассет или что-то в этом роде. biggrin Я что-то даже хз как загуглить такую систему. Ну, типа создание штуки, для работы с кодом\скриптами во внутреннем интерфейсе Юнити.

    Сообщение отредактировал choopie - Четверг, 12 Февраля 2015, 13:56
    berilДата: Четверг, 12 Февраля 2015, 14:15 | Сообщение # 6814
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    я наверно чето не понял или не до конца видео досмотрел, но там вроде бы обычное пользовательское окно (Editor Window)



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)


    Сообщение отредактировал beril - Четверг, 12 Февраля 2015, 14:15
    choopieДата: Четверг, 12 Февраля 2015, 14:33 | Сообщение # 6815
    частый гость
    Сейчас нет на сайте
    Цитата beril ()
    я наверно чето не понял или не до конца видео досмотрел, но там вроде бы обычное пользовательское окно (Editor Window)

    Оу, вроде оно. Спасибо, просто не знал про такую штуку. happy
    Vip_and_RipДата: Суббота, 14 Февраля 2015, 09:43 | Сообщение # 6816
    почетный гость
    Сейчас нет на сайте
    Почему не срабатывает? Вот такой простой код: находит переменную bool в скрипте AtarSC, и если она верна, то прибавляет единичку в счетчик. Но !- Если функция Update, то счетчик будет "крутиться" с дикой скоростью без остановки. А в Awake (где оно и должно быть, судя по уроку) - никакого эффекта. В чем причина, и как осуществить счетчик?

    Код
    void Awake () {
        Tob = GameObject.Find("Atar").GetComponent<AtarSC>();

        if (Tob._Isar == true) {
         TobCt++;
         Debug.Log ("Tamšur nahi");
        }
       }


    Больше никогда не буду делать игры.

    Сообщение отредактировал Vip_and_Rip - Суббота, 14 Февраля 2015, 09:44
    DragonOfSteelДата: Суббота, 14 Февраля 2015, 10:00 | Сообщение # 6817
    был не раз
    Сейчас нет на сайте
    Попробуйте написать этот код в функцию Start ().
    Vip_and_RipДата: Суббота, 14 Февраля 2015, 11:49 | Сообщение # 6818
    почетный гость
    Сейчас нет на сайте
    Цитата DragonOfSteel ()
    Попробуйте написать этот код в функцию Start ().


    Да нет, дело не в этом...


    Больше никогда не буду делать игры.
    XoidДата: Суббота, 14 Февраля 2015, 12:01 | Сообщение # 6819
    почетный гость
    Сейчас нет на сайте
    кто нибуть вкурсе как с eulerAngles взятого из Quaternion.LookRotation получать от 90 до -90 по оси X ?.. (вместо нужных получается в минус: 0,1,2 и тд. а в плюс: 0 и сразу 360,359 и тд) wacko

    Добавлено (14 февраля 2015, 12:01)
    ---------------------------------------------
    Vip_and_Rip,

    Код

    void Start () {
       InvokeRepeating("updtimer", 1.0f, 1.0f);
    }
    void updtimer() {   
       //сюда пихай свой код
    }


    skype:xoid_main | С#/Unity

    Сообщение отредактировал Xoid - Суббота, 14 Февраля 2015, 12:03
    berilДата: Суббота, 14 Февраля 2015, 14:08 | Сообщение # 6820
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата Vip_and_Rip ()
    Да нет, дело не в этом...

    Посмотри на какой обьект заносится ссылка в Tob(может у тебя на сцене несколько обьектов с именем "Atar")
    попробуй по тегу найти обьект GameObject.FindWithTag




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)


    Сообщение отредактировал beril - Суббота, 14 Февраля 2015, 14:09
    Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг