Вопрос-[ответ] по 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, Хех... Не юзал. Не знаю
|
|
| |
Laush | Дата: Четверг, 12 Апреля 2012, 20:51 | Сообщение # 1865 |
почти ветеран
Сейчас нет на сайте
| У кого то качает Unity 3D ?? У меня нет
[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 нажал? Или просто подожди немного на страничке. У меня тогда этой странички даже небыло
Добавлено (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 - игра над которой работаю
|
|
| |