Вопрос-[ответ] по Unity
| |
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
Aizen | Дата: Воскресенье, 27 Декабря 2015, 10:39 | Сообщение # 7501 |
был не раз
Сейчас нет на сайте
| Доброго времени суток! Помогите, пожалуйста, новичку. Проблема такова: не могу применить вращение к персонажу. При чем тем же самым способом другой объект вращается нормально
Код void throwPortal(GameObject portal, bool isItFirst) { int x = Screen.width / 2; int y = Screen.height / 2; Ray ray = player.GetComponent<Camera>().ScreenPointToRay(new Vector3(x, y)); RaycastHit hit;
if (Physics.Raycast(ray, out hit)) { if (isItFirst) firstDirection = hit.normal; else secondDirection = hit.normal; portal.transform.position = hit.point; portal.transform.rotation = Quaternion.LookRotation(hit.normal); //здесь вращение применяется } }
А вот здесь почему-то нет
Код void OnTriggerEnter(Collider other) { if (other.tag == "Player") { other.transform.position = otherPortal.transform.position + otherPortal.transform.forward*1; if (isFirst) direction = other.GetComponent<ThrowPortal>().getDirectionSecond(); else direction = other.GetComponent<ThrowPortal>().getDirectionFirst(); player.transform.rotation = Quaternion.LookRotation(direction); // не работает. Вектор direction тот же самый, что и выше //player.transform.position += direction * 5; // кстати, вот это работало, то есть вектор все-таки до этого метода добрался } }
|
|
| |
Maxplant | Дата: Среда, 30 Декабря 2015, 11:57 | Сообщение # 7502 |
был не раз
Сейчас нет на сайте
| Помогите пожалуйста с решением проблемы. Пишу AI, сейчас он может патрулировать местность и атаковать врага. И все было бы хорошо, если бы не одна странность: Когда проект собран под ПК или Android, то бот почему-то перестает патрулировать территорию. Он стоит у стартовой точки патруля, ну и собственно все. Гоняется за игроком, возвращается обратно к точке старта и снова стоит. Совершенно непонятно в чем дело. Код в порядке, в Юнити все работает. Помогите разобраться, если кто знает решение этой проблемы, буду благодарен!
|
|
| |
8Observer8 | Дата: Среда, 30 Декабря 2015, 11:59 | Сообщение # 7503 |
заслуженный участник
Сейчас нет на сайте
| Maxplant, вы AI делали через встроенный NevMesh?
Сообщение отредактировал 8Observer8 - Среда, 30 Декабря 2015, 12:54 |
|
| |
Maxplant | Дата: Среда, 30 Декабря 2015, 12:10 | Сообщение # 7504 |
был не раз
Сейчас нет на сайте
| Цитата 8Observer8 ( ) вы AI делали через встроенный NevMash? нет, простой скрипт и объекты в качестве точек патруля.
|
|
| |
skripka | Дата: Четверг, 31 Декабря 2015, 19:44 | Сообщение # 7505 |
был не раз
Сейчас нет на сайте
| Помогите 1 Нужно сделать камеру, которая поворачивается при поворачивании мыши и двигается синхронно мыши при зажатой ПКМ 2 Не могу понять, как сделать, чтобы в самой игре при нажатии динамически появлялся объект из префаба скрипты нужны на языке C# (как правильно называть документы со скриптом, чтобы не было ошибки?) Заранее благодарю
|
|
| |
allods | Дата: Четверг, 31 Декабря 2015, 23:15 | Сообщение # 7506 |
почти ветеран
Сейчас нет на сайте
| Цитата skripka ( ) Помогите 1 Нужно сделать камеру, которая поворачивается при поворачивании мыши и двигается синхронно мыши при зажатой ПКМ 2 Не могу понять, как сделать, чтобы в самой игре при нажатии динамически появлялся объект из префаба скрипты нужны на языке C# (как правильно называть документы со скриптом, чтобы не было ошибки?) Заранее благодарю
Создай пустой скрипт и посмотри как он называется и что написано в скрипте и "как правильно называть документы со скриптом, чтобы не было ошибки?" уже спрашивать не будешь
1-посмотри стандартный скрипт камеры их там много
|
|
| |
8Observer8 | Дата: Пятница, 01 Января 2016, 10:51 | Сообщение # 7507 |
заслуженный участник
Сейчас нет на сайте
| Цитата skripka ( ) 2 Не могу понять, как сделать, чтобы в самой игре при нажатии динамически появлялся объект из префаба Ответ здесь: http://docs.unity3d.com/Manual/InstantiatingPrefabs.html
|
|
| |
skripka | Дата: Суббота, 02 Января 2016, 00:01 | Сообщение # 7508 |
был не раз
Сейчас нет на сайте
| Статью я читал. У меня получились блоки, при начале игры разлетающиеся во все стороны. Если можете, расскажите кто-нибудь поподробнее, как сделать, чтобы при нажатии лкм по полю появлялся блок, который префаб. Желательно, чтобы он ставился по определенной сетке.Добавлено (02 января 2016, 00:01) --------------------------------------------- Скачал скрипт, теперь ставятся блоки, отлетающие друг на друга, изменение массы не помогает. Буду искать ответы дальше.
|
|
| |
ivan2009 | Дата: Вторник, 05 Января 2016, 18:57 | Сообщение # 7509 |
частый гость
Сейчас нет на сайте
| Доброго времени суток...Тут такая ситуация... в методе динамически объявлял обобщенную коллекцию,после определенного события добавлял в эту коллекцию объект. И вот тогда у меня вылетала ошибка NullReferenceException: Object reference not set to an instance of an object - это как я понимаю не был указан параметр в методе List<>.Add(); Решить проблему у меня получилось...но причину я как то не уловил....собственно чего и начал писать тут, объясните мне неучу почему этот вариант коллекции выдавал ошибку - List<GameObject> activeAllPoints = null; а вот этот не выдавал и все у меня заработало - List<GameObject> activeAllPoints = new List<gameObject>(); Буду очень благодарен если объясните в чем разница между этими вариантами...
ниже кусок скрипта где все это происходило.
Код if (GameObject.FindGameObjectWithTag (ChipTag)) { //если значения кубов больше нуля. if (dice1 > (int)0 || dice2 > (int)0) { //собираем все активные фишки в коллекцию. List<GameObject> allChip = GameObject.FindGameObjectsWithTag (ChipTag).ToList (); //вызываем метод возвращающий фишку с наибольшим приоритетом. activeChip = ai.getMaxPriorityChip (allChip); //вызываем метод определения активных поинтов, в зависимости от значений кубов. ai.Move (activeChip.GetComponent<ChipButton> ().currentPosIndex, pointsCol, activeChip, GameObject.FindGameObjectsWithTag (ChipTag)); List<GameObject> activeAllPoints = new List<GameObject>(); //Debug.Log ("Значение куба1 >>>> " + dice1 + " Зачение куба2 >>>> " + dice2); foreach (GameObject point in pointsCol) { if (point.transform.FindChild ("Spotlight").GetComponent<Light> ().enabled) { //собираем все активные поинты в коллекцию. activeAllPoints.Add(point);[b] Вот тут я через дэбаг режим смотрел у меня вылетало с первым вариантом обьявления коллекции[/b] //Debug.Log ("Поинт с мндексом " + pointsCol.IndexOf (point) + " активен!!!"); } } //вызываем метод возвращающий поинт с максимальным приоритетом. GameObject activePoint = ai.checkPriorityPoint (activeAllPoints, pointsCol); activePoint.GetComponent<PointButton1> ().moveAIChip (activeChip, pointsCol); } else { endPlay (); } }
что то я посидел подумал....в первом варианте я создавал просто ссылку на коллекцию но не саму коллекцию, а во втором варианте уже создавал саму коллекцию....Правильно ли я понял?)
Сообщение отредактировал ivan2009 - Вторник, 05 Января 2016, 19:43 |
|
| |
beril | Дата: Четверг, 07 Января 2016, 01:42 | Сообщение # 7510 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Почитай что делает null и new и что такое ссылочный тип :)
Ты ведь не делаешь так?
Код class MyClass { public int i; }
class MyClass2 { MyClass my = null my.i что там.... а делаешь вот так вот MyClass my = new MyClass() }
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
ivan2009 | Дата: Четверг, 07 Января 2016, 17:07 | Сообщение # 7511 |
частый гость
Сейчас нет на сайте
| Цитата beril ( ) Ты ведь не делаешь так? Обычно присваивал уже существующие объекты как то так :
Код class MyClass{ public string s; }
class MyClass1{ string s1 = MyClass.s; }
ну или что то подобное...потому и на тупил...
Тут вот такой вопрос.Как мне при помощи метода Vector.Lerp переместить объект по каждой позиции объектов находящихся в коллекции. Сколько объектов в коллекции определяется динамически. И текущая позиция перемещаемого объекта будет постоянно изменятся и определятся динамически. пробовал сделать что то такое.
Код //метод для плавного перемещения фишки по поинтам. private void myLerp(GameObject chip, List<GameObject> allPoints){ //получаем индекс последней позиции фишки. int lastIndex = chip.GetComponent<ChipButton> ().currentPosIndex; //колекция для поинтов в промежутке между последней позицией фишки и будущей. List<GameObject> activeRangePoint = new List<GameObject> (); //вспомогательная переменная. int countPoint = allPoints.IndexOf (gameObject) - lastIndex; //заполняем коллекцию поинтами. activeRangePoint.AddRange (allPoints.GetRange (lastIndex, countPoint)); //перемещаем фишку по каждому поинту. foreach (GameObject point in activeRangePoint) { chip.transform.position = Vector3.Lerp(chip.transform.position, point.transform.position, Time.deltaTime* rools.getChipSpeed()); }
}
но тут получается косяк в том что в цикле foreach не дожидаясь окончательного перемещения объекта на указанную позицию происходит переход к следующему элементу коллекции... и получается так что весь цикл отрабатывает а перемещаемый объект не становится даже на первую позицию...
|
|
| |
zisX | Дата: Воскресенье, 10 Января 2016, 01:48 | Сообщение # 7512 |
Neto Zis
Сейчас нет на сайте
| На сервер посылаю запрос на пинг при этом упаковываю 1 параметр ( DateTime.Now.Ticks ) На сервере обрабатываю запрос ( Создаю новую переменную и вычитаю из DateTime.Now.Ticks параметр переданный клиентом ). Потом посылаю евент на сервер с параметром ( пинг в тиках ) и в конце концов на клиенте конвертирую из тиков в миллисекунды.
Пинг 15-30.
P.S. Но это все происходит на моем домашнем пк, мб я не так считаю?
P.S.S Photon Server
|
|
| |
Excelsiorer | Дата: Среда, 13 Января 2016, 01:43 | Сообщение # 7513 |
частый гость
Сейчас нет на сайте
| Создаю интерфейс не через скрипт, а через канвас, сразу на сцене. Как мне применить к кнопкам, созданным таким способом, GUI skin?
|
|
| |
8Observer8 | Дата: Среда, 13 Января 2016, 15:27 | Сообщение # 7514 |
заслуженный участник
Сейчас нет на сайте
| Цитата allods ( ) Может кто сказать возможно ли и как назначить другого игрока на роль сервера если игрок в роли сервера тот отключится или еще что похуже http://docs.unity3d.com/Manual/UNetHostMigration.html
|
|
| |
STRATEG766 | Дата: Четверг, 14 Января 2016, 20:53 | Сообщение # 7515 |
частый гость
Сейчас нет на сайте
| Скажите пожалуйста, как вместо текста "Кнопка1" добавить переменную целочисленного типа? Хотел бы, чтобы там выводились какие-то числа. GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), "Кнопка1");
Сообщение отредактировал STRATEG766 - Четверг, 14 Января 2016, 20:58 |
|
| |
beril | Дата: Четверг, 14 Января 2016, 21:09 | Сообщение # 7516 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата STRATEG766 ( ) GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), "Кнопка1"); GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), "Кнопка1" + число.ToString())
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
8Observer8 | Дата: Четверг, 14 Января 2016, 21:14 | Сообщение # 7517 |
заслуженный участник
Сейчас нет на сайте
| Цитата STRATEG766 ( ) GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), "Кнопка1");
Код int number = 1; GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), string.Format("Запустить ракету номер {0} в небо :)", number));
Сообщение отредактировал 8Observer8 - Четверг, 14 Января 2016, 21:59 |
|
| |
STRATEG766 | Дата: Четверг, 14 Января 2016, 21:15 | Сообщение # 7518 |
частый гость
Сейчас нет на сайте
| Цитата beril ( ) GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), "Кнопка1" + число.ToString()) Спасибо!!Добавлено (14 января 2016, 21:15) ---------------------------------------------
Цитата 8Observer8 ( ) int number = 1; GUI.Button(new Rect(Screen.width - 80, Screen.height - 65, 80, 50), string.Format("Запустить ракету номер {0} в небо :)", number)); Спс))
|
|
| |
Storm54 | Дата: Пятница, 15 Января 2016, 07:37 | Сообщение # 7519 |
постоянный участник
Сейчас нет на сайте
| Цитата zisX ( ) P.S. Но это все происходит на моем домашнем пк, мб я не так считаю?
Насколько я помню, в Photon Sever по-умолчанию выставлена небольшая задержка перед обработкой пакетов. Этот параметр можно изменить в конфиге сервера.
|
|
| |
zisX | Дата: Пятница, 15 Января 2016, 17:19 | Сообщение # 7520 |
Neto Zis
Сейчас нет на сайте
| Storm54, Я тоже так сначала думал, но походу его куда то перенесли т.к. в конфиге его нету. Проверил ещё раз, не нашел точно такого же названия параметра задержки как в инете, но нашел что-то похожее, поменял на 0, свой кастомный класс выдает 5-10 пинг, стандартный параметр пинга у пира выдает 0 пинг.
|
|
| |
|