Суббота, 16 Ноября 2024, 05:54

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • pixeyeДата: Четверг, 12 Апреля 2012, 00:33 | Сообщение # 1861
    Red Winter Software
    Сейчас нет на сайте
    Quote (mrResident)
    Подскажите, как задать позицию курсора? Нужно это для того чтобы курсор мыши как только попал в пределы некоторого объекта, "залип" в его центре. И в дополнении к этому вопросу, как реализовать равномерное движение объекта за курсором, который "залип" в его центре? А то у меня получается так, что курсор движется быстрее чем успевает прорисовываться объект, в следствии чего курсор покидает границы и "теряет" объект.


    1. Самым простым вариантом будет добавление в объект пустую болванку по центру ( это та точка к которой привяжется курсор ) .
    2. Добавляешь триггер к болванке. При захождении курсора объект залипает на курсоре в точке болванки, а не курсор на объекте.

    3. Все твои остальные проблемы от изобретений колес и усложнений. Если объект залип в центре объекта могу предположить что он не следует за курсором, а находится под ним. И это выглядит так:

    Code
    Vector3 worldPos =     Camera.main.ScreenToWorldPoint(Input.mousePosition);
    myObject.transform.position = worldPos;


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Четверг, 12 Апреля 2012, 00:34
    mrResidentДата: Четверг, 12 Апреля 2012, 00:58 | Сообщение # 1862
    постоянный участник
    Сейчас нет на сайте
    Nekit_Aut, забыл сказать что работаю в 2d и использую пакет vectrosity, ниже приведу пример

    Для наглядности скриншот



    честно признаюсь, код кривой, писал на скорую руку

    Code

    // данный метод делает следующее, если курсор находится над точкой, то точку необходимо закрасить, в дополнении если зажата левая кнопка мыши, то той точке над которой находится курсор присвоить положение курсора
    void FindPoint(Vector2 coord)
    {
    int ind = 0;
    int region = (int)((vpWidth / 2) +1);

    foreach (Vector2 vec in points)
    {
    //проверка, входит ли курсор в область точки
    if (((coord.x >= (vec.x - region)) && (coord.x <= (vec.x + region))) && ((coord.y >= (vec.y - region)) && (coord.y <= (vec.y + region))))
    {
    vpColors[ind] = Color.red; //красим точку в нужный цвет

    //проверяем, нажата ли при этом левая кнопка мыши
    if (isLBDown)
    {
    points[ind] = coord; //присваиваем точке новые координаты
    Vector.DrawPoints(vPoints); //перерисовываем точку
    DrawLineByPoints(); //перерисовываем линую, соединенную с этой точкой
    }

    break;
    }
    else vpColors[ind] = Color.green;
    ind++;
    }
    Vector.SetColors(vPoints, vpColors);
    }


    Укроп головного мозга - болезнь тяжелая, но излечимая!

    Сообщение отредактировал mrResident - Четверг, 12 Апреля 2012, 00:59
    Knight1032Дата: Четверг, 12 Апреля 2012, 18:26 | Сообщение # 1863
    заслуженный участник
    Сейчас нет на сайте
    Где новость про обновление?

    Да, я программист, дизайнер, сценарист,
    Я сам себе издатель и сам себе игрок...
    Nekit_AutДата: Четверг, 12 Апреля 2012, 19:16 | Сообщение # 1864
    The Dizziness - Man
    Сейчас нет на сайте
    mrResident, Хех... Не юзал. Не знаю sad

    LaushДата: Четверг, 12 Апреля 2012, 20:51 | Сообщение # 1865
    почти ветеран
    Сейчас нет на сайте
    У кого то качает Unity 3D ?? У меня нет angry

    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    Knight1032Дата: Четверг, 12 Апреля 2012, 20:52 | Сообщение # 1866
    заслуженный участник
    Сейчас нет на сайте
    Laush, уже скачал.

    Да, я программист, дизайнер, сценарист,
    Я сам себе издатель и сам себе игрок...
    Nekit_AutДата: Четверг, 12 Апреля 2012, 20:56 | Сообщение # 1867
    The Dizziness - Man
    Сейчас нет на сайте
    Quote (Laush)
    У кого то качает Unity 3D ?? У меня нет

    Конечно качает. Вот сейчас качаю 3.5.1... А в чём проблема? Может интернет слабый?


    LaushДата: Четверг, 12 Апреля 2012, 21:06 | Сообщение # 1868
    почти ветеран
    Сейчас нет на сайте
    Nekit_Aut, Какой слабый? 4-mb/сек
    Вхожу на страничку для скачивания,а толку нет(некачает)

    Добавлено (12.04.2012, 21:06)
    ---------------------------------------------
    Всё!!!!!


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    Nekit_AutДата: Четверг, 12 Апреля 2012, 21:07 | Сообщение # 1869
    The Dizziness - Man
    Сейчас нет на сайте
    А ты Download нажал? Или просто подожди немного на страничке.

    LaushДата: Четверг, 12 Апреля 2012, 22:20 | Сообщение # 1870
    почти ветеран
    Сейчас нет на сайте
    Просто касперский блокирывал скачивание,остановил защиту и заработало

    Добавлено (12.04.2012, 21:08)
    ---------------------------------------------
    Quote
    А ты Download нажал? Или просто подожди немного на страничке.

    У меня тогда этой странички даже небыло wacko

    Добавлено (12.04.2012, 22:13)
    ---------------------------------------------
    Скачал,теперь не работает вот это:

    Добавлено (12.04.2012, 22:20)
    ---------------------------------------------
    Всё,решил проблему


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата


    Сообщение отредактировал Laush - Четверг, 12 Апреля 2012, 22:15
    СамоделкинДата: Пятница, 13 Апреля 2012, 09:25 | Сообщение # 1871
    участник
    Сейчас нет на сайте
    Работа с xml-файлами на локальном диске выполняется теми же методами что и с xml-файлами в сети?
    Code
    import System.Xml;
          var www = new WWW (url);
          yield www;
          var xml = new XmlDocument();
          xml.LoadXml(www.text);

    Меня смущает это "www"
    В инете нашел что-то о том что различия есть для загрузки из инета (streaming) и с харда, но примеры только для сетевого варианта на юнитискрипте.
    Как выглядит строка на JS загрузки данных xml-файла с локального диска? (из папки с проектом например). Просто указать относительный путь вместо url?
    Если так, то относительно какой папки?
    (Планирую хранить карты в xml - значение высот (y) вершин + размер карты - загружать их в массив и по нему строить меш)
    Справку честно ковырял, но только в разделе Scripting Reference что-то есть по www. А в Manual и Reference не могу найти то что нужно.


    Сообщение отредактировал Самоделкин - Пятница, 13 Апреля 2012, 09:26
    romgermanДата: Пятница, 13 Апреля 2012, 10:22 | Сообщение # 1872
    старожил
    Сейчас нет на сайте
    На сайтах, например, при написании относительного адреса картинки или еще чего-то получается так:
    "../файл.формат" - файл ищется в начальной папке (обычно там лежит главная страница).
    "Файл.формат" - файл ищется в папке, где лежит страница (в коде которой прописан такой путь).
    Возможно в юнити так же.


    Сообщение отредактировал romgerman - Пятница, 13 Апреля 2012, 10:25
    СамоделкинДата: Пятница, 13 Апреля 2012, 12:55 | Сообщение # 1873
    участник
    Сейчас нет на сайте
    я подозреваю, что там другой класс используется или синтаксис немного другой. Нашел вариант с text.asset (когда просто закидываешь файл txt или xml в папку проекта) но он не подходит, тк не предназначен для записи в файл (как я понял по мануалу)
    pixeyeДата: Пятница, 13 Апреля 2012, 13:06 | Сообщение # 1874
    Red Winter Software
    Сейчас нет на сайте
    Quote (Самоделкин)
    Меня смущает это "www"
    В инете нашел что-то о том что различия есть для загрузки из инета (streaming) и с харда, но примеры только для сетевого варианта на юнитискрипте.
    Как выглядит строка на JS загрузки данных xml-файла с локального диска? (из папки с проектом например). Просто указать относительный путь вместо url?
    Если так, то относительно какой папки?
    (Планирую хранить карты в xml - значение высот (y) вершин + размер карты - загружать их в массив и по нему строить меш)
    Справку честно ковырял, но только в разделе Scripting Reference что-то есть по www. А в Manual и Reference не могу найти то что нужно.


    Нет, не через www. Прочесть xml можно по разному. Это не одна строчка в любом случае.

    если ты будешь ТОЛЬКО загружать информацию из xml файла то самый простой вариант создать папку Resources - это юнитевская папка в которую идут все объекты которые могут быть использованы в игре "на лету". Недостаток в том, что туда насколько мне известно нельзя сохранять данные.

    Если идти таким методом то непосредственно загрузка выглядит очень просто.

    Привожу пример из своей игры. В папку "Resources" создаем xml документ. Например levels.xml

    потом в коде пишем так. Пишу на c# - так что потрудись переконвертить сам.

    Code
    TextAsset textAsset = (TextAsset)Resources.Load ("levels");
      XmlDocument xmlDoc = new XmlDocument ();   
      xmlDoc.LoadXml(textAsset.text);


    Все - загрузка завершена. Вот твой xml - однако это вообще ничего не дает так как данные от этого в твою игру не перекачуют.

    Я делаю "товер дефенс" - и храню в таком документе разметку уровня и волны противников. У меня это выглядит так :

    Кусок моего xml
    Code
    <wave>
         <squads enemyTYPE="normal" amount="6" hp="2" speed="2" size="1" side="pos1" rate="1.0"> </squads>
         <squads enemyTYPE="normal" amount="14" hp="1" speed="2" size="1" side="pos1" rate="1.0"> </squads>
         </wave>
         <wave>
         <squads enemyTYPE="normal" amount="10" hp="2" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         <squads enemyTYPE="normal" amount="1" hp="5" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         <squads enemyTYPE="normal" amount="3" hp="2" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         <squads enemyTYPE="normal" amount="1" hp="5" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         </wave>  
          
             <wave>
         <squads enemyTYPE="normal" amount="3" hp="2" speed="4" size="1" side="pos1" rate=".5"> </squads>
         <squads enemyTYPE="normal" amount="1" hp="10" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         <squads enemyTYPE="normal" amount="5" hp="3" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         <squads enemyTYPE="normal" amount="10" hp="1" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         </wave>
            
         <wave>
         <squads enemyTYPE="normal" amount="10" hp="1" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         <squads enemyTYPE="normal" amount="4" hp="3" speed="3" size="1" side="pos1" rate="1.5"> </squads>
         </wave>  
                        
         <wave>
         <squads enemyTYPE="normal" amount="12" hp="1" speed="2" size="1" side="pos1" rate="1.5"> </squads>
          <squads enemyTYPE="normal" amount="4" hp="2" speed="3" size="1" side="pos1" rate="1.5"> </squads>
         </wave>  
          
          
         <wave>
         <squads enemyTYPE="normal" amount="2" hp="1" speed="6" size="1" side="pos1" rate=".5"> </squads>
         <squads enemyTYPE="normal" amount="2" hp="15" speed="1" size="1" side="pos1" rate="1.5"> </squads>
         </wave>  


    Code
    XmlNodeList waveList = level.SelectNodes("wave");
                  int waveid = 0;   
                     foreach (XmlNode wave in waveList)  
                           {
                            
                        List<Squade> squades = new List<Squade>();
                        
                                 
                            NodeList = wave.SelectNodes ("squads");
                        
                            for (int i=0; i<NodeList.Count; i++) {
                            node = NodeList [i];
                      attCol = node.Attributes;
                             s1 = attCol[0].Value;
                            var _sq0 = (Squade.ENEMYTYPE)System.Enum.Parse (typeof(Squade.ENEMYTYPE), s1);         
                             s1 = attCol [1].Value;
                            int _sq1 = System.Convert.ToInt32 (s1);  
                             s1 = attCol [2].Value;
                            int _sq2 = System.Convert.ToInt32 (s1);  
                            s1 = attCol  [3].Value;
                            float _sq3 = System.Convert.ToSingle(s1);                    
                            s1 = attCol [4].Value;
                            float _sq4 =   System.Convert.ToSingle (s1);
                            s1 = attCol [5].Value;
                            var _sq5 = (Squade.SIDE)System.Enum.Parse (typeof(Squade.SIDE), s1);
                            s1 = attCol [6].Value;
                            float _sq6 = System.Convert.ToSingle (s1);
                             
                             
                            squades.Add(new Squade(_sq0, _sq1, _sq2, _sq3, _sq4, _sq5, _sq6));
                          }
                             
               
                            _level.waves.Add(new Wave(squades.ToArray(),waveid));
                            waveid++;     

                  }


    Грубовато но работает. На данном этапе работы тут очень мало "юнитивских" фишек. Есть абстрактные классы уровня, волны и сквадов.
    Code
    XmlNodeList waveList = level.SelectNodes("wave");

    Создает список нодов Wave
    Дальше в каждой волне свой список сквадов. В каждом скваде делается выборка атрибутов и передача данных. В игре создается экземпляр уровня и выуживаются данные.

    О загрузке xml так же почитать здесь
    Клик


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    ReSeRДата: Пятница, 13 Апреля 2012, 15:40 | Сообщение # 1875
    постоянный участник
    Сейчас нет на сайте
    как создать выбор уровней ? Просто на стандартных кнопках или нужен какойто специальный инструмент для гуи?

    FastRoad[PC][Android](Забыто)
    COSMO 3D[PC][Android](Забыто)
    SnowBall[PC][Android](Замороженно)
    pixeyeДата: Пятница, 13 Апреля 2012, 16:09 | Сообщение # 1876
    Red Winter Software
    Сейчас нет на сайте
    Quote (ReSeR)
    как создать выбор уровней ? Просто на стандартных кнопках или нужен какойто специальный инструмент для гуи?


    эм - как Хочешь?) можешь на стандартных кнопках. Если у тебя каждый уровень новая сцена то кнопкам прописывай id

    потом по нажатию вызовешь Application.LoadLevel(id);


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    ReSeRДата: Пятница, 13 Апреля 2012, 16:24 | Сообщение # 1877
    постоянный участник
    Сейчас нет на сайте
    pixeye, ну я в принцепи так и сделал))) только мне надо ещё как то для каждого уровня свою меременную сохранять) которая будет отвечать за то что Уровень открыт или нет)) например если Score == 100 то показанно 2 уровня) и т.д

    Добавлено (13.04.2012, 16:24)
    ---------------------------------------------
    pixeye, ну я в принцепи так и сделал))) только мне надо ещё как то для каждого уровня свою меременную сохранять) которая будет отвечать за то что Уровень открыт или нет)) например если Score == 100 то показанно 2 уровня) и т.д


    FastRoad[PC][Android](Забыто)
    COSMO 3D[PC][Android](Забыто)
    SnowBall[PC][Android](Замороженно)
    pixeyeДата: Пятница, 13 Апреля 2012, 16:26 | Сообщение # 1878
    Red Winter Software
    Сейчас нет на сайте
    Quote (ReSeR)
    pixeye, ну я в принцепи так и сделал))) только мне надо ещё как то для каждого уровня свою меременную сохранять) которая будет отвечать за то что Уровень открыт или нет)) например если Score == 100 то показанно 2 уровня) и т.д


    int score = playerpreference.GetInt("score",0); ( берет значение скор если его нет по умолчанию ноль )

    playerpreference.SetInt("score",100); - сохраняет значение;


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    ReSeRДата: Пятница, 13 Апреля 2012, 16:42 | Сообщение # 1879
    постоянный участник
    Сейчас нет на сайте
    Это C#? А как на JS эт будет?
    Code
    BCE0005: Unknown identifier: 'playerpreference'.


    FastRoad[PC][Android](Забыто)
    COSMO 3D[PC][Android](Забыто)
    SnowBall[PC][Android](Замороженно)
    pixeyeДата: Пятница, 13 Апреля 2012, 16:47 | Сообщение # 1880
    Red Winter Software
    Сейчас нет на сайте
    Quote (ReSeR)
    Это C#? А как на JS эт будет?


    это быдлокод)))

    PlayerPrefs.SetInt("score",твое значение);

    про остальные команды в мануале прочти


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    Поиск:

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