Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски

[Ответить в тред] Ответить в тред

Check this out!


<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
1028 | 132 | 213

Unity Thread Аноним 02/08/17 Срд 18:45:13  427717  
unity.jpg (59Кб, 750x422)
Добро пожаловать в тред Unity - лучшего 3D и 2D игрового движка современности!

Прошлый тред: https://2ch.hk/gd/res/401747.html

Официальный сайт: https://unity3d.com/ru
Документация: https://docs.unity3d.com/ru/current/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com/
Магазин ассетов: https://unity3d.com/ru/asset-store
UnityWiki: http://wiki.unity3d.com/index.php/Main_Page

На Unity сделано много замечательных игр - Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие. Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.

FAQ

- Какие у Unity сильные стороны?
- Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.

- Какие у Unity слабые стороны?
- Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.

- На каких языках я могу писать скрипты для Unity?
- На выбор два языка - C# и UnityScript. UnityScript - это что-то среднее между JavaScript и ActionScript. Выбирай язык по своему вкусу, они оба вполне удобны, но помни, что большинство примеров написано на C#.

- Для каких жанров подходит Unity?
- Для абсолютно любых! Жанр ограничивается лишь фантазией разработчика (и его умением писать скрипты, разумеется). Можно создавать и РПГ, и стратегии, и слэшеры. Можно делать VR-проекты или Minecraft-подобные песочницы.

- На каких платформах работают созданные с помощью Unity игры?
- Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.

- Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
- Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.

- Что такое стартер киты?
- Starter Kit - это набор скриптов и префабов, а зачастую и графических элементов для игры. Они призваны облегчить разработку игры определённого жанра и как правило разбиты по жанрам (Action-RPG Starter Kit, RTS Starter Kit, 3D Shooter Starter Kit, Space Game Starter Kit, VR Starter Kit и так далее). Также бывают стартер киты различных игровых элементов, не связанных с геймплеем (Nature Starter Kit с дополнительными природными объектами, Medieval Starter Kit со средневековыми объектами и так далее). По сути, стартер киты выполняют в разработке игры ту же роль, что и фреймворки в программировании. Однако стоит отметить, что использование геймплейного стартер кита принуждает разработчика изучать большое количество чужого кода и чужой структуры для внесения своих изменений и полноценного использования. В связи с этим большинство разработчиков предпочитает писать почти всё с нуля, получая полное понимание работы своей игры. Новичкам крайне не рекомендуется начинать знакомство с Unity со стартер китов.

- Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
- Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).

- Бесплатен ли Unity?
- Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.

Обучение

- Язык
Итак, с чего же начать изучение этого замечательного движка? Прежде всего, с изучения языка. Самые основы C# можно узнать на интерактивных курсах здесь:
https://dotnetcademy.net/CSharp/Beginner
или в текстовом туториале здесь:
https://www.tutorialspoint.com/csharp/csharp_quick_guide.htm
Для изучения основ UnityScript выучи вначале основы JavaScript:
https://learn.javascript.ru/
Помни, что далеко не все элементы JS есть в US. Чтобы понять, в чём разница между этими двумя языками, прочти эту статью:
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
Помни, что тебе достаточно одного языка из двух и учить их оба одновременно не нужно.

- Движок
Если ты уже умеешь использовать язык, то можно приступать непосредственно к изучению движка. Крайне рекомендется купить/скачать книгу Unity in action (Unity в действии). В ней подробно описываются множество возможностей движка.
http://www.ozon.ru/context/detail/id/34792570/
Также посмотри на видеотуториалы с официального сайта:
https://unity3d.com/learn/tutorials
Если же ты не любишь видеотуториалы (или не понимаешь разговорный английский) и предпочитаешь текст, то посмотри здесь:
http://catlikecoding.com/unity/tutorials/
Тут крайне подробно описан процесс разработки и приведены примеры кода. Эти туториалы универсальны и описывают множество различных частей игры, от работы с текстурами до генерации карты мира. А вот в этом туториале описыватся разработка двухмерной игры с видом сверху:
https://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started
Это будет полезно, даже если ты планируешь разрабатывать трёхмерную игру. Ни в коем случае нельзя обойти вниманием этот сборник туториалов:
https://noobtuts.com/unity
В нём подробно описывается процесс пошагового создания разных игр - двухмерных и трёхмерных.

Разумеется, все эти туториалы охватывают лишь часть возможностей Unity. Самый надёжный способ выучить Unity - это начать делать игру и по мере разработки гуглить непонятные моменты.

Шапка: http://www.writeurl.com/publish/zukmrogwv45ptyuseyol

Аноним 02/08/17 Срд 19:00:17  427739
Всем привет от Серёги!
Аноним 02/08/17 Срд 19:47:25  427791
Тут что так мертво или юнити девелоперы вымерли?
Аноним 02/08/17 Срд 19:49:41  427792
Реквестирую подробные, и чем подробнее тем лучше, манулы по сишарп скриптам по тематике трансформ, методы подметоды итд. Кватерионы, тригонометрия, интересности
Аноним 02/08/17 Срд 20:06:47  427797
>>427422
Кстати, я об этом не подумал, придётся таки рейкастами делать, похоже. Спасибо, анон.
Аноним 02/08/17 Срд 20:10:51  427800
>>427797
> придётся таки рейкастами делать, похоже
Там и делать нефиг.

GameObject[] objects;
public GameObject closestObject;

void Start () {
objects = GameObject.FindGameObjectsWithTag ("Object");
}

void Update () {
RaysMode (objects);
}

void RaysMode (GameObject[] objs) {
closestObject = null;
float minDist = Mathf.Infinity;
foreach (GameObject obj in objs) {
RaycastHit hit;
Ray ray = new Ray (transform.position, obj.transform.position - transform.position);
if (Physics.Raycast (ray, out hit))
if (hit.transform.tag == "Object" && hit.distance < minDist) {
closestObject = obj;
minDist = hit.distance;
}
}
}
Аноним 02/08/17 Срд 20:20:19  427806
2beaverCastorca[...].jpg (129Кб, 640x478)
Насколько разумно создавать гейм менеджер и другие подобные вещи, как синглтоны, вызывая конструктор в get {}? Он не будет сидеть на пустом объекте (в мире), а просто как скрипт. Можно будет гарантировать порядок создания критически важных объектов.

Как в таком случае удобнее загрузить в него префабы, через Resources.Load?
Аноним 02/08/17 Срд 20:21:59  427808
Искусственный интелект с пакетом RAIN

Годнiта чi нi?
Аноним 02/08/17 Срд 20:24:07  427811
>>427792
Что тебе там не понятно?
Аноним 02/08/17 Срд 20:30:44  427813
>>427791
Это тебе не засмеялся-обосрался тред, чтоб по 20 постов в минуту набивать.
Аноним 02/08/17 Срд 20:35:42  427814
Анончи,есть одна анимация котика.Как её запустить ровно после пяти секунд после начала сцены?
Аноним 02/08/17 Срд 20:36:00  427815
Анончи,есть одна анимация котика.Как её запустить ровно после пяти секунд после начала сцены?
Аноним 02/08/17 Срд 20:43:37  427817
>>427815
Coroutine с yield return WaitForSeconds
После чего там же запускаешь анимацию

Или Invoke("zapuskaemKotika", 5)
Аноним 02/08/17 Срд 20:51:14  427820
>>427792
https://www.youtube.com/watch?v=ZbHRl7jzEww
Аноним 02/08/17 Срд 21:02:52  427823
>>427800
А почему такие операции обычно записывают в отдельные функции, а не просто кидают в Update?
Аноним 02/08/17 Срд 21:05:04  427824
>>427823
Можешь и просто в апдейт. Просто мне так привычнее, не люблю когда в апдейте насрано (а в больших скриптах обычно так и получается), так что я методы инкапсулирую, по итогу в апдейте строк 5-8 и все они по разным методам лежат.
Короче, мне так чисто для восприятия легче.
Если хочешь — пихай в апдейт, суть не поменяется.
Аноним 02/08/17 Срд 21:40:47  427833
Girls.png (490Кб, 449x401)
>>427824
> методы инкапсулирую
Аноним 02/08/17 Срд 21:41:59  427834
>>427833
Пардон, какой в шараге сленг был, такой в памяти и остался. Мы академиев не кончали.
Аноним 02/08/17 Срд 21:47:29  427838
>>427817
Анончик,слушай,я вообще не прогромист.Может ты напишешь этот скриптик для меня,плиз?
Аноним 02/08/17 Срд 21:48:33  427839
>>427838
Если ты не погромист и даже это не понимаешь, то нахера тебе это вообще нужно? Только чтобы анимация котика была?
Аноним 02/08/17 Срд 21:51:02  427842
>>427839
Именно,только чтобы анимация была.Так ты поможешь?
Аноним 02/08/17 Срд 21:52:55  427844
>>427842
Тут одним кодом не поможешь. Тут надо пояснить как аниматор создать, как на объект перенести, как в него анимацию передать (если она вообще есть), как туда передать состояние и т.д.
Короче, волшебного кода, который можно просто скопипастить, не получится.
Аноним 02/08/17 Срд 21:56:53  427847
>>427844
>Тут надо пояснить как аниматор создать, как на объект перенести, как в него анимацию передать (если она вообще есть), как туда передать состояние и т.д.
Вообще то,уже это знаю и всё готово.Говорю же,нужно сделать сделать запуск после 5 секунд после начала сцены.
Аноним 02/08/17 Срд 21:58:37  427848
>>427847
Окей. И как называется переменная для перехода из состояния "котяра статичен" в состояние "котяра анимирован"?
Аноним 02/08/17 Срд 22:05:04  427850
>>427848
Я,конечно,не погромист,но переменные вроде как угодно можно называть.Так что пусть будит "KotikObormotik".
Аноним 02/08/17 Срд 22:06:13  427851
>>427850
> но переменные вроде как угодно можно называть
Можно, ага. Только они должны совпадать с теми, что в аниматоре.
Аноним 02/08/17 Срд 22:08:27  427853
Безымянный.jpg (19Кб, 663x465)
Суп, анон. Щитаю, что нахожусь в скилл-брекете между аппер-интермедиэйт и адвансед, но к сожалению совсем не знаю шейдоры. Чтобы исправить это досадное положение, а поставил себе цель запилить редактор шейдеров не уступающий в качестве знаменитому ShaderForge за 2 недели. И сделать его опенсурсным, конечно. Чтобы взорвать пуканы авторов этого ассета. И разработчиков юнити, конечно. Отношение которых к добавлению важных новых функций в движок характеризуется фразой "пчелы против меда": зачем добавлять бесплатную функцию, если можно получать стабильно шекели из ассет стора? Давайте лучше переделаем пост-эффекты и сделаем новое окошко, в котором можно редактировать анимации! ynuti 2017! революция!

На скрине прогресс за сегодня
Аноним 02/08/17 Срд 22:09:56  427854
blob (10Кб, 271x108)
>>427851
Ты про эти?
Аноним 02/08/17 Срд 22:10:56  427855
>>427854
Не совсем. По Cat_contrl дважды кликни и покажи что откроется.
Аноним 02/08/17 Срд 22:13:41  427857
blob (15Кб, 491x289)
>>427855
Это?
Аноним 02/08/17 Срд 22:14:36  427859
>>427857
Уже лучше. Если просто запускаешь сцену - котяра анимируется? К нему вообще хоть какой-то скрипт привязан?
Аноним 02/08/17 Срд 22:16:22  427860
>>427859
Анимируется,один раз проходит анимация сразу после запуска сцены.Никаких скриптов.
Аноним 02/08/17 Срд 22:20:02  427862
>>427860
> один раз проходит анимация
А надо чтоб было постоянно?
Если да, то жмаки по файлу анимации и в инспекторе поставь галочку на Loop Time. А потом уже и скрипт добавишь.
Аноним 02/08/17 Срд 22:21:53  427863
>>427862
Нинад чтобы постоянно.Только разок после 5 секунд после запуска сцены.
Аноним 02/08/17 Срд 22:30:20  427868
15017009964580.png (8Кб, 271x108)
>>427863
Лезть в переменные аниматора будет явно надолго, так что давай велосипедить.
1. Если сцена запущена — останови.
2. Сними галочку с аниматора (ту что на пикрилейтеде).
3. Создай C# скрипт, назови его CatAnimation.
4. Открой его в редакторе, удали там вообще всё, до последнего символа. И копипасти туда вот это

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CatAnimation : MonoBehaviour {

Animator animator;

void Start () {
animator = GetComponent<Animator> ();
Invoke ("Animate", 5f);
}

void Animate () {
animator.enabled = true;
}
}

5. Перетяни этот скрипт в инспекторе на тот объект, на котором висит аниматор (скорее всего это и есть твой кошак).

Если всё сделаешь правильно, то заработает.
Аноним 02/08/17 Срд 22:34:16  427878
image.jpg (114Кб, 433x427)
Закатился в тред начинающий, но уже имеющий один проект, разработчик. Собрал значит я свою казуальную кликалку на андроид и встал вопрос о компиляции под гейфоны. Уже несколько месяцев пытаюсь накатить виртуалки, хакинтоши, найти способы компиляции под шиндовс, но пока нашёл только один ассет по цене в 100 Бачей. Подскажите может кто находил хороший способ сборки под эпл без мака. Алсо игра висит в гугл плее, но поиграть я в неё могу только с телефона друзей, а хочется на своём родном айфоне позалипать, ибо писал под себя.

Аноним 02/08/17 Срд 22:49:00  427891
GOAP анон, ты всё ещё здесь?
Как ты с подобной реализацией навигации для действий реализуешь прохождение через двери требующие открывания?
Аноним 02/08/17 Срд 22:54:40  427895
14650205754350.jpg (45Кб, 600x570)
Сука блять, какого хуя билд абсолютно пустой сцены весит 35 метров? Это, блять, дефолтный сплэшскрин столько жрёт что ли?
Аноним 02/08/17 Срд 22:57:24  427896
bandicam-2017-0[...].gif (440Кб, 1264x532)
>>427868
Спасибо,анончик.Всё работает как надо.Люблю тебя:3
Аноним 02/08/17 Срд 22:58:37  427897
>>427896
Да на здоровье.
А вообще ты какой-то странный. Накатывать юньку только чтобы заанимировать котика — это даже не микроскопом гвозди забивать, это уровнем повыше.
Аноним 02/08/17 Срд 23:02:26  427899
>>427897
Мне просто нравиться сцены из ассетиков собирать.А котика я в блендере анимировал.
Аноним 02/08/17 Срд 23:05:25  427900
>>427891
GOAP неприменим к играм. Не трать время на ерунду и используй behavior tree
Аноним 02/08/17 Срд 23:10:05  427903
>>427824
Спасибо за разъяснения все.
Аноним 02/08/17 Срд 23:46:11  427952
>>427800
Это у мобов такое? От этого пекарня не сгорит случайно? Я бы в coroutine, а не в апдейт запихал, на крайняк.
Аноним 02/08/17 Срд 23:47:08  427953
>>427952
>От этого пекарня не сгорит случайно?
Как там в 97м?
Аноним 03/08/17 Чтв 00:05:01  428008
>>427952
Поехал что ли? Там нагрузки хуй да нихуя.
Аноним 03/08/17 Чтв 00:12:16  428024
>>428008
А на мобилках тоже лагать не будет?
Аноним 03/08/17 Чтв 00:39:13  428061
>>428024
Ну если у тебя там будет под две сотни мобов на одной сцене, то может и будет.
Аноним 03/08/17 Чтв 01:05:37  428105
Почему Character Controller с Rigidbody с гравитацией может проваливаться сквозь пол? Пол - платформа с коллайдером, без Rigidbody. Второго коллайдера на плеере нет.
Аноним 03/08/17 Чтв 04:03:13  428211
>>427800
Как сделать это в 2D?
Аноним 03/08/17 Чтв 06:35:47  428221
>>428211
Сам догадался уже. Но вот возник более жоский вопрос. Всю ночь гуглил, не смог сделать нормально, рофл.
Как замутить передвижение персонажа в 2D игре с видом сверху, не используя rb?
Пробовал разные варианты через RigidBody2D, но все они очень сильно сказываются на производительности, хотя я мей би ошибку делаю, на всякий случай вот код с использованием rb, если его можно оптимизировать до нужного уровня, то и так сойдет:

using System.Collections;

using UnityEngine;

public class CharacterController2D : MonoBehaviour {
public float speed = 7f;
private Rigidbody2D rb;

void Start () {

rb = GetComponent<Rigidbody2D>();
}

void Update () {


float deltaX = Input.GetAxis("Horizontal");
float deltaY = Input.GetAxis("Vertical");


Vector2 movementXY = new Vector2 (deltaX, deltaY);
movementXY = Vector2.ClampMagnitude(movementXY, speed);
movementXY = speed;
movementXY
= Time.deltaTime;
rb.MovePosition (rb.position + movementXY);

}
}

Аноним 03/08/17 Чтв 06:37:35  428222
>>428221
>\t
)))))

using System.Collections;
using UnityEngine;

public class CharacterController2D : MonoBehaviour {
public float speed = 7f;
private Rigidbody2D rb;

void Start () {

rb = GetComponent<Rigidbody2D>();

}

void Update () {

float deltaX = Input.GetAxis("Horizontal");
float deltaY = Input.GetAxis("Vertical");

Vector2 movementXY = new Vector2 (deltaX, deltaY);
movementXY = Vector2.ClampMagnitude(movementXY, speed);
movementXY = speed;
tmovementXY = Time.deltaTime;
rb.MovePosition (rb.position + movementXY);
}
}


Аноним 03/08/17 Чтв 06:45:11  428223
AlDLaKV2Wik - к[...].jpg (69Кб, 1132x353)
>>428222
да ёбаный в рот, ебучая разметка
Надо было сразу так сделать.
Аноним 03/08/17 Чтв 08:20:39  428229
>>427710
>Теперь понял, это примерно как мой второй вариант. Меня в этом варианте смущает сложность контроля за перемещением, ведь после начала движения уже никакое действие не контролирует процесс, прерывания и достижение результата это опосредовано делается в прекондишене занятия ковра
как ты делаешь то. у тебя чтоли каждый тик ИИ не пытается выполнить текущее действие? только выполняет готовый план? на каждом тике при попытке исполнить действие же можно в разные ифы лезть.

>И придётся пердолиться с другими действиями, которые могут инициализировать движение: надо будет где то хранить приоритет действия задавшего движение или что то в это роде.
у тебя же только один текущий экшон. если экшон вообще требует перемещения то он и рулит. если ему рулить ненадо то ИИ делает что-то глобальное.

>>427808
да так себе он. хороший бихейвор три редактор, но плохая навигация.

>>427853
в одно рыло это не выглядит реальным и за 3-4 месяца. как сделать то планируешь?

>>427891
укатывался. я то часто в тред заглядываю, но реагируютолько если показывают что-то интересное.

>Как ты с подобной реализацией навигации для действий реализуешь прохождение через двери требующие открывания?
ну это ты загнул. пока никак. в моем навмеше пока что поломана сериализация для зон которые бы ссылались на конкретные объекты, как починю можно было бы и такое сделать. чтобы была возможность иметь зоны, на которые ссылался бы компонент, который бы переключал их доступность.
но тут это можно разве что если "попасть куда-то" является самим действием. например было бы действие "попасть в склад номер пять", у него было бы прекондицией открытие двери, тогда кнопка открывающая дверь бы генерировала внешнее действие открывающее путь только на этот склад. но если делать хитрожопое что-то например "сломать стену чтобы схватить за задницу сзади", то тут мне придется сильно глубоко лезть в навигацию чтобы такое сделать.
Аноним 03/08/17 Чтв 08:34:33  428233
>>427853
вообще, вот интересное что-то пилишь. правда шейдеры лучше всетаки изучи хоть как-то. там столько мистической тайной хуйни что две недели можно их просто крутить туда-сюда чтобы хоть как-то разобраться.

я вот тоже что-то покажу из этой категории. делаю по человечески свой простенький генератор террейна, но чтобы у него был нодовый редактор который бы работал внутри маски биома.
интересно когда уже в юнити сделают сериализацию абстрактных коллекций. сериализовать ссылки на ресурсы юнити в нодах даже не знаю как.
Аноним 03/08/17 Чтв 08:35:08  428234
Unity 2017-08-0[...].png (259Кб, 1168x796)
Unity 2017-08-0[...].png (56Кб, 1168x796)
>>428233
скриншоты забыл
Аноним 03/08/17 Чтв 09:02:44  428237
>>428105
> Character Controller
> с Rigidbody
Ты либо крестик сними, либо трусы надень.
Что-то одно выбери, короче.
Аноним 03/08/17 Чтв 10:30:48  428261
>>428229
>как ты делаешь то
Я использую reGOAP с парой мелких допилов.

Планер пилит последовательность действий для достижения текущей приоритетной цели. Потом агент начинает выполнять начиная с самого первого. Каждый экшн выполняет своё процедурное тело до успешного завершения и перехода дальше по плану, либо до прерывания с инвалидацией всего плана и перепланированием.

>на каждом тике при попытке исполнить действие же можно в разные ифы лезть
И в каждом действии контролировать перемещение? Со временем охуеешь.

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

В общем подумаю ещё между выносом навигации и реактивным планером внутри действийвсё равно наверное буду пилить макропланер для сквадов
Аноним 03/08/17 Чтв 11:03:53  428268
>>428221
> Как замутить передвижение персонажа в 2D игре с видом сверху, не используя rb?
Через трансформ, ебать.
Аноним 03/08/17 Чтв 11:43:14  428294
>>428268
Через трансформ эффект хуёвый, если на препятствие пойти. Он каг бы не останавливается, а идёт туда и отбрасывается назад из-за коллайдера.
Аноним 03/08/17 Чтв 11:44:47  428296
>>428294
Лэйтапдейт используй.
Аноним 03/08/17 Чтв 11:46:32  428301
>>428237
Спасибо, уберу контроллер.


Алсо, я тут думаю сделать дамаги и прочие взаимодействия через интерфейсы и GetComponent. Например, интерфейс IDamageable {void TakeDamage(int amount)}, IPickable и т.п. Это кажется более гибким, чем наследовать все классы, которые делают какое-то взаимодействие, от одного.


ОнТриггер/ОнЧегоНибудь()
{
var health = (Idamageable)GetComponent(typeof(IDamageable));
if(health != null)
health.TakeDamage(amount);
}

Норм способ, или раковая задумка, и существуют более правоверные способы?
Аноним 03/08/17 Чтв 11:48:26  428305
>>428301
> Спасибо, уберу контроллер.
Я бы убрал риджидбади, если тебе только и надо что ходить и взаимодействовать без особого физона, но то уже сам смотри.
Аноним 03/08/17 Чтв 13:19:37  428419
>>428301
> и существуют более правоверные способы?
Других способов нет. Либо ты делаешь общий родительский класс под все, у чего есть здоровье, либо интерфейс. О, точно, мне же надо как-то ломать всякую мебель и прочее говно. Пойду прикручу к своей йобе.
Аноним 03/08/17 Чтв 13:26:56  428430
>>428419
> Других способов нет. Либо ты делаешь общий родительский класс под все, у чего есть здоровье, либо интерфейс.
Ты сильно недооцениваешь местных повелителей костылей.
Аноним 03/08/17 Чтв 14:36:47  428517
>>428430
Ну хуй знает, что еще. Проверять тег геймобджекта, и в функции на атакующем персонаже в List<> хранить значение здоровья?
Аноним 03/08/17 Чтв 14:43:58  428527
>>428301
Правильно, но проще так: damagable = GetComponent<IDamagable>();
Аноним 03/08/17 Чтв 14:45:22  428531
>>428305
Rigidbody надо чтобы физика была в курсе что эти коллайдеры динамические.
Аноним 03/08/17 Чтв 15:10:11  428590
>>428301
ECS
C
S
Аноним 03/08/17 Чтв 17:01:15  428729
У Юнити есть стандартизированные даты обновлений? Когда они будут выпускать 6.0?
Аноним 03/08/17 Чтв 17:05:17  428733
>>428729
6.0 не будет. Вместо него 2017, который уже выпустили.
Аноним 03/08/17 Чтв 17:09:18  428740
>>428733
А до этого была одна версия каждый год?
Аноним 03/08/17 Чтв 17:30:30  428753
>>428740
Да, предыдущая 5-ая версия была собрана в 5-ом году от рождества Христова.
Аноним 03/08/17 Чтв 18:12:07  428774
Безымянный.png (49Кб, 793x473)
>>428233
Да я помню твои посты лол. Помню охуевал от твоих скиллов.
Теперь вот тоже хочу сделать что-нибудь эдакое. Ну про уровень shader forge я конечно-же пошутил. Это просто так, великая цель для мотивации.
Апдейт. Как оказалось, в юнити уже есть свой фреймворк для создания графов. И именно на нем сделан и редактор анимаций. Если кому интересно, то интро можно найти тут http://unity3de.blogspot.ru/2015/08/reveal-unknown-graph-and-graphgui-class.html. Остальное в дизассеблированных исходниках. Там ничего особенно, но можно сократить время на несколько дней.

Теперь в принципе осталось-только придумать как сгенерировать шейдоры из графа спиздить из shader forge. Пока думаю о чем-то вроде темплейтов
Аноним 03/08/17 Чтв 19:02:41  428810
Сап, аноны.
Есть пустой gameObject, к которому прицеплен скрипт, вращающий этот самый gameObject с помощью gameObject.transform.Rotate().
У этого пустого объекта есть два child: сфера и text mesh.
Когда я вращаю родительский объект, то текст слегка убегает от сферы, примерно на пару градусов. Когда вращение останавливается, сфера снова догоняет текст.
Пробовал то же самое с кубом вместо текста, ведет себя точно так же.
Чому так?
Аноним 03/08/17 Чтв 19:15:55  428823
>>428810
> Когда я вращаю родительский объект
Как вращаешь? Ручками на сцене? Через скрипт?
Ты давай подробнее, по твоему посту хер что поймёшь.
Аноним 03/08/17 Чтв 19:17:53  428824
>>428823
>вращающий этот самый gameObject с помощью gameObject.transform.Rotate()
Аноним 03/08/17 Чтв 19:21:42  428827
>>428824
А, да, пардон, только проснулся.
Всё равно тут надо знать в каких координатах текст и сфера находятся относительно пустого объекта, что там у тебя в ротейте и т.д.
Давай со скринами и/или видосом.
Аноним 03/08/17 Чтв 19:35:04  428838
>>428827
В общем я неправильно описал проблему.
На сфере с помощью Vectrocity нарисована разметка трехмерными линиями. И эта разметка отстает при вращении сферы, дочерние объекты не при чем.
Аноним 03/08/17 Чтв 19:38:45  428839
2017-08-0319-35[...].mp4 (2209Кб, 1280x720, 00:00:04)
>>428810
>примерно на пару градусов

Запили шебм, мне даже интересно стало. Может это из-за Rigidbody?
Аноним 03/08/17 Чтв 19:45:33  428841
>>428839
>>428838
Ошибся я, сорян. Это Vector Lines как-то с лагом рендерятся.
Аноним 03/08/17 Чтв 20:39:01  428861
На собеседовании дали задание - создать UI на юнити.
Структура - главное меню, страница просмотра изображения, страница воспроизведения видео, etc.
Поясните, что они подразумевают под страницей?
Шарп хорошо знаю, но вот юнити пока не очень, UI пилил, но вот что за страницы, так и не понял.
Аноним 03/08/17 Чтв 20:44:33  428867
>>428861
> Поясните, что они подразумевают под страницей?
Ну это тебе лучше знать, хрустальный шар тут у всех давно сломался.
А вообще весь UI в юньке есть изначально.
Аноним 03/08/17 Чтв 20:47:40  428872
>>428867
Страница просмотра видео же, так у меня написано в задании, но вот что это за страница, и как она должна выглядить, я так и не понял.
Аноним 03/08/17 Чтв 20:49:43  428873
>>428872
Ну, видимо, весь канвас, либо его часть. Юнька вполне способна напрямую хавать и рендерить видео.
Аноним 03/08/17 Чтв 20:54:05  428875
>>428873
Т.е. это должен быть объект в пространстве, который будет воспроизводить видео?
Спасибо за помощь, анон.
Аноним 03/08/17 Чтв 20:55:14  428876
Unity 2016-12-2[...].png (220Кб, 1144x818)
покажу старое но клевое. кстати есть ли у кого какие клевые идеи как сделать прыжки на навмеше? у меня есть сорт оф споты для прыжков на подобии старых прыжков юнити, но это имеет свои минусы.

>>428261
>Я использую reGOAP с парой мелких допилов.
а я кстати его не читал ещё. я свой гоап то с нуля написал. как там организовали хранение стейтов мира?

>И в каждом действии контролировать перемещение? Со временем охуеешь.
так не во всех. у меня например исполнение действий организовано с некоторой иерархией с ГОАП и контролером. у ГОАП в экшоне есть булл будет ли это действие контролировать перемещение, этот бул доступен через менеджер-прослойку контролеру, контролер ещё внутри свой небольшой менеджер стейтов имеет, какая анимация чего делает, чтобы знать когда анимация прерывается. например текущий экшон "поднять предмет", в действии описано "топи туда, если ты уже там то подбирай предмет", в итоге на каждом тике ИИ он топит куда сказали, а когда доходит то предмета идет в менеджер-прослойку и говорит что хочет поднять вот это. тогда уже контролер в своем менеджере анимаций переключает флаг что его активное действие это поднятие предмета и это действие и верхнюю и нижнюю половину тела для этого требует. а ГОАП тем временем через менеджер ждет когда это действие из активного либо провалится, либо завершится. когда анимация завершается в конце триггер что хопа действие завершено которое переключает статус в менеджере анимаций. а потом уже и ГОАП на следующем апдейте видит что флажок переключен на нужный, завершает через менеджер анимацию целиком ставя её на не активную и говорит что действие выполнено(или провалено). проверять кондиции вроде "есть ли предмет", кстати, было довольно плохой идеей, потому что он появляется в инвентаре в момент когда ИИ рукой его хватает, но ему ещё надо распрямится. отсюда и наличие менеджера анимаций, который все упрощает.
а действия вроде "перезарядка" никаких перемещений не требует, но занимает верхнюю половину тела. в итоге пока действие делается, менеджер следует своей активной задаче и управляет перемещением контролера. в итоге контролер и перезаряжается и бегает по укрытиям сразу, а в действии ГОАП описано только то что надо сделать. начать перезаряжатся, ждать когда завершится анимация в конце которой в случае успеха анимации отнять из инвентаря одну обойму.
на время выполнения действий отключаю обновление планирования, чтобы ИИ не подумал что "ооо да у меня же предмет нужный в руке надо бы его использовать" пока он ещё не распрямился после его поднятия, чтобы текущее активное действие было залочено. прерывание действий пока не сделал, но это будет не так и сложно.
пока что лучше не придумал как сделать подобную иерархию, вроде решает все проблемы.

>Сейчас это просто в теле действия, если на пути агента есть дверь, то он тормозит движение, открывает дверь и продолжает после. Делать отдельно действие понадобится только, если делать множество различных решений преодоления двери.
А я бы так не делал. а вдруг дверь будет требовать ключ? вообще технически можно глобальную навигацию сделать через ГОАП. вот у тебя есть набор комнат, некоторые комнаты требуют предмет. при перемещении из комнаты А в Б проверяем через ГОАП весь путь, если путь чист то строим путь через навмеш и идем. если надо ключ то проверяем путь черезе ГОАП уже до комнаты с ключем. один хуй поиск пути на навмеше слабо отличается от поиска пути по нодам ГОАП.

>>428774
Лол, надо же, меня помнят и читают.

>Как оказалось, в юнити уже есть свой фреймворк для создания графов.
вхоу. молодец что нашел. надо будет посмотреть. интересно не спрячут ли в один прекрасный день. интересно что туда положили.

>Теперь в принципе осталось-только придумать как сгенерировать шейдоры из графа
Я кстати читал пару имплементаций таких редакторов. он в итоге был чем-то вроде визуального текстового редактора. когда тыкал кнопку "получить шейдор" то оно там задавало целевым переменным имена, подставляло их на текстовые заготовки, соединяло все заготовки в выбранном порядке и хопа шейдор готов. создание такого выглядит каким-то особым сортом пердолинга, но выглядит достижимым.
Аноним 03/08/17 Чтв 20:55:52  428877
>>428875
> Т.е. это должен быть объект в пространстве, который будет воспроизводить видео?
Ну блин, я ТЗ полностью не видел, но "UI с воспроизведением видео" звучит так, что надо тупо рендерить видео.
Аноним 03/08/17 Чтв 21:01:25  428879
1.jpg (350Кб, 2048x1536)
>>428877
Аноним 03/08/17 Чтв 21:05:13  428880
>>428879
Нууу, и что не ясно? Вот меню с кнопочками: "посмотреть картинку", "посмотреть видосик", "покрутить ползунки".
Как хуйнуть картинку (видосик делается почти так же) на панель — думаю, знаешь, раз на такую работу метишь. Про ползунки вообще молчу.
Аноним 03/08/17 Чтв 21:09:08  428881
>>428880
Не ясно было, что подразумевают под страницей. Как это делается, знаю. Спасибо, что пояснил.
Аноним !gOlrx2AM8I 03/08/17 Чтв 23:08:02  428955
14585496864990.png (49Кб, 383x394)
Безымянный.png (133Кб, 986x850)
>>428861 >>428867 >>428872
>>428877 >>428879 >>428880
это классика, это знать надо
однажды подают мне значит такое вот же ТЗ
типа, шарики в хуюнити отрисовывай, мы тебе 20к заплатим, тыж спец по графену вроде
а кроме меня там в команде еще погромист и руководитель группы, и тот погромист то вообще нахуй студент.
ну делаю ТЗ, прихожу к погромисту, говорю: вот тебе кнопочки, чо там с прогой, давай на листенеры навешивай функции, а он, пацаны, достаёт значит свой нетбук и показывает скрипт на js под веб, типа, ЯЗДЕЛЯЛЬ.
пиздос, там дедлайны приближаются, я начинаю ему объяснять что в юнети значит component-entity-system, понимаю что он нихуя не понимает, сажусь писать сам
И ТУТ ХУЯК, ОКАЗЫВАЕТСЯ наша контора-заказчик ПРИНЦИПИАЛЬНО, блять, не использует продукты от майкрософт, их всех в детстве билл гейтс покусал похоже, причем сука не просто всюду линуксов понаставили, но даже У НИХ ПРИНЦИП ПРОТИВ СИ и его вариаций, ГОСПОДЬ ВСЕМОГУЩИЙ ЭТАЖИ ПРОДУКТ МАЙКРОСОФТ ТЫ ЩО ДЕЛАЕШ ОКАЯННЫЙ.
а в js я знаю примерно столько чтобы было достаточно div'ы на сайтике скрывать/показывать. var, блять, хуяр! что за нетипизированное говнище. кое-как заговнокодил всё это дерьмо, ну тут классическое У НАС ИЗМЕНИЛАСЬ КОНЦЕПЦИЯ (х2).
доебало пиздец короче. сейчас вообще реквесты потипу пикрелейтед идут.
до сих пор не заплатили.
самарец не человек
Аноним 03/08/17 Чтв 23:41:11  428970
>>428955
>var, блять, хуяр! что за нетипизированное говнище.
В книге читал, что в юнити запили типизацию под js, энивей, автор рекомендовал юзать шарп.
Аноним 03/08/17 Чтв 23:58:45  428987
>>428970
> запили типизацию под js
она в яваскрипте как тема в ТВГ. она есть и можно делать по теме, а можно и не по теме. приписывать var raspidor : GameObject по острому желанию можно.

> энивей, автор рекомендовал юзать шарп
а в монодевелопе js-ников вообще публично унизили, сломав им всплывающие подсказки для автонабора строк.
Аноним 04/08/17 Птн 00:19:01  429019
Unity 2017-08-0[...].png (10Кб, 532x372)
Unity 2017-08-0[...].png (15Кб, 616x460)
>>428774
даа, это они там накрутили. почитал немного. так правда и не нашел пока как в контекстное меню что-то добавлять свое даже после того как в ILSpy расковырял. надо будет потом внимательно прочитать, я даже не знал что есть такая хуйня как EditorUtility.DisplayCustomMenu например. а то я свое контекстное меню уже навелосипедил.
Аноним 04/08/17 Птн 00:19:42  429021
>>428955
>без Шарипов
Валяюсь.
Аноним 04/08/17 Птн 00:26:24  429049
>>429019
>так правда и не нашел пока как в контекстное меню что-то добавлять свое
Никак. меню захардкожено в protected ShowContextMenu() в OnGraphGUI() в классе GraphGUI. Единственный вариант, это перегрузить OnGraphGUI() и копировать туда весь код из оригинала, кроме меню
Ну это явно не для публичного использования делалось
Аноним 04/08/17 Птн 00:47:29  429091
>>428987
Монодевалоп и меня унижает. Регулярно крашится, ломается копи-паст, и еще кое-чего.
Аноним 04/08/17 Птн 04:30:52  429155
>>429091
Специальная бесплатная редакция студии для кириллов поставляется прямо с юнити. Нет, хочу опенсорс какашку кушать. И это разработчики, блядь!
Хотя лично у меня крашится сам юнити во время дебага, студия живее всех живых.
Аноним 04/08/17 Птн 06:15:48  429157
>>428876
Мда, охуительная история.
Вспомнил случай, когда парень откликнулся на вакансию юнитиёба, ему дали тестовое задание — сделать прототип тауэр дэфэнс на юнити.
Он сделал, выслал, а ему ответили, мол, всё хуйня, вы не сделали игру, вы поработали с движком, а уже движок сделал игру. Он отвечает "ну что просили, то и сделал, давайте скорректируем ТЗ и доработаем, если что-то не так", на что получил ответ "нам нужна игра на юнити, но сделанная самостоятельно, а не движком. а вы этого не сделали, вы сделали на юнити".
Можно погуглить, это вроде на юнити3д.ру было.
Аноним 04/08/17 Птн 06:23:27  429159
Это >>429157 сюда >>428955
Аноним 04/08/17 Птн 08:02:56  429165
>>428876
>как там организовали хранение стейтов мира?
Словарь<,>

>"поднять предмет", в действии описано "топи туда, если ты уже там то подбирай предмет", в итоге на каждом тике ИИ он топит куда сказали, а когда доходит то предмета идет в менеджер-прослойку и говорит что хочет поднять вот это

Не совсем уловил этот момент. У тебя действие поднятия остаётся активным, пока ты топишь? Завершается по инициализации движения и ставит в очередь действие поднятия?

В классическом ГОАП они выполняются чётко по порядку, следуя установленному плану. Ни одно действие особо не волнует что будут делать другие, оно просто даёт какой то результат и имеет пререквизиты.

У тебя же действия выполняются почти "параллельно":
пока одно не загружает какой то элемент контроллера, на нём могут выполняться другие. Это почти как два синхронизирующихся через состояние навигации планировщика. Выглядит очень круто, но с разрастанием могут появиться проблемы.


>а вдруг дверь будет требовать ключ?
Так я написал же, что отдельное действие необходимо если есть различные способы преодоления двери. Например, АИ может всё так же проходить через дверь, если у него есть ключ, и искать другие пути, если нет.
Если вариантов ещё больше, то стоит сделать отдельный стейт (DoorOpen, true), действия ведущие к нему, и строить навигацию как последовательность дверей и участков пути между ними.


>прерывание действий пока не сделал, но это будет не так и сложно.
Я при старте действия делаю динамический список стейтов мира - прерывателей с учётом стейта цели. Пока работает хорошо.
Аноним 04/08/17 Птн 09:26:37  429171
>>429165
>Не совсем уловил этот момент. У тебя действие поднятия остаётся активным, пока ты топишь? Завершается по инициализации движения и ставит в очередь действие поднятия?
действие поднятия предмета остается активным пока ИИ топит к предмету. оно отвечает и за перемещение к предмету и за его поднятие. на мой взгляд мало смысла вообще разделять перемещение к предмету и поднятие предмета. действия которые стопроцентно будут идти одно за другим не должны разделятся. вообще я кстати пробовал разделять. у меня была концепция "кучка предметов", и на каждую кучку было процедурное действие "подбежать к кучке номер такой" и каждая кучка ещё действия возвращала связанные с тем какие предметы в ней и у каждого поднятия был рекваермент "быть у кучки такой-то". потом репу почесал и задумался нахуй такая конструкциям нужна.

>пока одно не загружает какой то элемент контроллера, на нём могут выполняться другие. Это почти как два синхронизирующихся через состояние навигации планировщика. Выглядит очень круто, но с разрастанием могут появиться проблемы.
да, вероятно могут. но вообще я пока слабо могу представить какие проблемы не могут быть решены через это. пока есть прослойка которая сообщает ГОАП о статусе действия и эта-же прослойка лимитирует паралельные действия за пределами ГОАП. может быть если буду делать возможность использования техники для ИИ что-то пойдет не так, или когда появятся действия не связанные с ГОАП требующие много времени(лазанье по лестнице например). но в любом случае все это выглядит решаемо.
по моему этот вариант куда лучше чем эта боль с попыткой совместить перемещение и действие. этак на каждый пердеж будет пара вариантов. вроде "перезарядка", "перезарядка на бегу", "перезарядка бегая за укрытие" и прочее. ГОАП конечно здорово, но забивать им гвозди тоже не стоит.
Аноним 04/08/17 Птн 11:15:11  429188
>>429171
>на мой взгляд мало смысла вообще разделять перемещение к предмету и поднятие предмета
Главное преимущество в том, что можно сделать женерик действие перемещения и разгрузить остальные действия.

>по моему этот вариант куда лучше чем эта боль с попыткой совместить перемещение и действие. этак на каждый пердеж будет пара вариантов. вроде "перезарядка", "перезарядка на бегу", "перезарядка бегая за укрытие" и прочее.
Да, разбираться в этой куче добра со временем станет очень не весело.
Но я пожалуй откажусь от параллельного планирования: буду просто инициировать движение действием и тут же запускать реплан с учётом того что (isOnMove, true). И при завершении движения вызвать коллбек, прерывающий текущий план и пытающийся прервать действие.
Останется только подумать как лучше запилить перывание движения отдельными действиями. Наверное просто для всех действий, требующих остановки, добавлю процедурный прекондишн, сравнивающий приоритет цели, вызвавшей движение и приоритет прерывателя.
Аноним 04/08/17 Птн 11:50:37  429205
>>429188
>Главное преимущество в том, что можно сделать женерик действие перемещения и разгрузить остальные действия.
да как-то оно не выглядит преймуществом. перемещение до нужной точки один хуй отдается на откуп прослойке между ГОАП и контролером, в имплементации действия движение в итоге задается парой строчек. там же получается в итоге куча вариаций "иди в точку 1", "иди в точку 2", "иди в точку дохуилион". в реГОАП написано что есть обратный поиск, так что разумеется количество вариантов почти похуй, но тут можно и напортачить с флагами в пререкваерментах действий требующих нахождение рядом с нужной позицией. какая-то излишняя комплексность для передачи одного булеана. впрочем работать будет, да.

>Останется только подумать как лучше запилить перывание движения отдельными действиями. Наверное просто для всех действий, требующих остановки, добавлю процедурный прекондишн, сравнивающий приоритет цели, вызвавшей движение и приоритет прерывателя.
я бы так стал делать разве что заранее известны все варианты перемещения ИИ и их немного. если он в начале просто бегает туда-сюда то это ещё выглядит разумным, но если ИИ начнет прыгать на джетпаке, скакать по стенам, делать сальто и прочее то это уже не кажется таким уж разумным вариантом. ещё хуже эта схема выглядит если ИИ может менять мобильность. например ногу оторвало роботу, лежит на земле, но стреляет. что, подчищать у него варианты действий чтоли?
Аноним 04/08/17 Птн 12:53:45  429218
0Ke2hp61qxI.jpg (483Кб, 1920x1080)
amrehdxyrw.jpg (576Кб, 1920x1080)
Lp2Qw2bNww.jpg (328Кб, 1920x1080)
nzwVPzUJ9nA.jpg (366Кб, 1920x1080)
Скрины старые. Маты нормально не настроены.
Ммм... mesh-ы потерпели изменения, но я буду дорабатывать их. Ну там... интерьер добавлю и тд.
Аноним 04/08/17 Птн 13:00:13  429223
>>428955
Хипстер-контора какая то. Принцип против микрософт и жабоскрипт везде.
Аноним 04/08/17 Птн 13:46:25  429240
>>429205
ГОАП обычно подразумевает обратный поиск, поэтому необходимая точка берётся из следующего действия.
Ещё одно преимущество вынесения действия перемещения - возможность добавления различных вариантов перемещения. Например, АИ может идти/бежать/ползти, что будет делать тремя разными действиями со своими прекондишенами. В твоём варианте надо будет в каждом экшене, требующем перемещения делать ифы, выбирающие один из способов перемещения.

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

Например, за АИ-лесорубом гонится лесной нёх, планер берёт цель спасения, которую реализует укрытим в убежище, для чего необходимо оказаться в убежище -> инициируется перемещение, действие завершается. Планер в это время строит новый план, учитывая, что АИ перемещается и конечная цель обладет приоритетом Х.
Но во время бега у него повышается уровень жажды и становится доступной цель удовлетворения биопроблем с приоритетом У, удовлетворить которую он может выпив из фляги в инвентаре, остановившись на месте.
Действие питья требует прерывания активного движения, поэтому в его процедурном прекондишене мы сравнивает приоритеты Х и У, и либо выполняем текущий план, либо инвалидируем и продолжаем движение.
При этом вообще не важно идёт/бежит/летит/телепортируется лесоруб - навигацией занимается другой блок, от которого требуется только посылать коллбек о завершении движения и обрабатывать прерывание.

Робот из примера выше просто будет иметь стейт (CanMove, false), который будет учитываться планером.
Аноним 04/08/17 Птн 14:22:30  429251
>>429240
>В твоём варианте надо будет в каждом экшене, требующем перемещения делать ифы, выбирающие один из способов перемещения.
зачем? метод перемещения диктуется глобально. то есть если мы крадемся то вообще всё перемещение будет украдкой. а если мы бегаем то все перемещение будет бегом. какие-то сложные варианты вроде "мы быстро подбегаем к медведю но остаток проходим тихо-тихо" легко описывается глобальным "стелс". где если мы не в радиусе обнаружения врагов то бежим, если в радиусе то ползем. какая вообще ситуация возможна когда ГОАП должен руководить методом перемещения?

>Не пойму суть проблемы? То что он лежит на земле никак не должно мешать стрелять.
>Робот из примера выше просто будет иметь стейт (CanMove, false), который будет учитываться планером.
ошибся. не действий. целей. часть целей перестает вообще быть валидными же. иметь много наборов целей под каждое состояние мобильности?

я уже начинаю представлять слабо твой вариант имплементации. начало движения это сразу успешное выполнение движения чтобы пока оно шло делалось сразу следующее действие? а как тогда будешь менять цель движения, если требуется поменять маршрут, но не действие? например действие "сесть в укрытие", но пока идешь до укрытия оно перестает быть валидным.
Аноним 04/08/17 Птн 14:23:32  429253
>>429157
Нашёл, если кому интересно.
http://unity3d.ru/distribution/viewtopic.php?f=111&t=18479
Аноним 04/08/17 Птн 15:30:23  429283
>>429251
>метод перемещения диктуется глобально
Но планировщик должен решать как именно мы перемещаемся.

>часть целей перестает вообще быть валидными же
Да, и отметутся планером. У робота без ног останется цель заниматься патрулём, просто она никогда не активируется.

>начало движения это сразу успешное выполнение движения чтобы пока оно шло делалось сразу следующее действие?
Не следующее действие, а вообще другой план. Так что это будет ближе к провалу действия. Здесь нужно расширение терминологии.

>а как тогда будешь менять цель движения, если требуется поменять маршрут, но не действие?
Прокладкой маршрута занимается навмеш же. Если ты имел в виду другие действия, требующие перемещения, то для них нужна такая же проверка как для действий с остановкой: побеждает наивысший приоритет.

>например действие "сесть в укрытие", но пока идешь до укрытия оно перестает быть валидным.
Этот вариант я упустил. Для этого можно сделать цель трансформом, а не точкой и периодически менять точку назначения навмеш агента. Если трансформ вдруг стал нуллом(сенсор укрытий инвалидировал укрытие например) - остановка и реплан.

Если собрать всё вмнесте, то схема примерно такая:
- инициируем движение и отметаем этот план(но без занесения в блеклист, если мы занимаемся подобным)
- пока движение активно, выполняем менее приоритетные действия, не взаимодействующие с перемещением
- если в плане появляется новое действие требующее перемещения, сравниваем приоритеты целей и либо принимаем новый план с новым перемещением, либо отметаем его(желательно занося в блеклист на какое то время)
- при окончании движения прерываем текущий план, если его цель имеет меньший приоритет, чем цель движения, и пытаемся прервать действие. В случае прерывания после реплана мы по идее:3 вернёмся к плану, инициировавшему изначальное движение
Аноним 04/08/17 Птн 15:58:24  429323
Впорос к продвинутым или тем кто таковыми себя считают
Как много сложной математики вы использовали в разработке игр? Было ли что-то не из школьных векторов? Матрицы, теория графов? Пригождалось за знание кватернионов? Вообще, какие разделы математики приходится использовать, не считая те что в школе проходят?
Аноним 04/08/17 Птн 16:00:52  429324
>>429323
Смотря что делаешь. Если какую-нибудь мобильную тыкалку а-ля "три в ряд", то там математики считай что нет. В шутанах от первого лица - тоже.
А начнёшь писать свой физон, например, вот там уже начинается.
Аноним 04/08/17 Птн 16:18:40  429350
>>429324
А для шейдеров?
Аноним 04/08/17 Птн 16:23:49  429357
>>429350
Там вектора, градусы, косинусы-хуёсинусы, матрицы. Ничего особо сложного. Хотя при желании можно и в дебри залезть.
Аноним 04/08/17 Птн 16:47:16  429393
code.jpg (210Кб, 1481x775)
>>429323
Матрицы, немного тригонометрии. О теории графов знаю только из детских книжек про минимальное количество цветов на карте и обход графа одним росчерком.
Но я кодил узкоспециализированные функции, где все это нужно и ИРЛ, в обычном коде, манипулирующем gameObject'ами, только векторная алгебра, которую надо представлять очень хорошо, иначе заебешься.
Что такое кватернионы в курсе (вчера погуглил), как конкретно они используются в юньке - хз, только в общих чертах знаю. Хотя хватает.
Аноним 04/08/17 Птн 16:53:25  429411
image.png (72Кб, 928x132)
image.png (134Кб, 1513x593)
Ребят, помогите плиз найти ошибку в коде.
Аноним 04/08/17 Птн 17:06:37  429425
>>429411
Ты дурак что ли, э?
Аноним 04/08/17 Птн 17:07:47  429431
>>429425
Ну да, а что?
Аноним 04/08/17 Птн 17:08:32  429434
>>429431
Да ничего.
Аноним 04/08/17 Птн 17:19:00  429461
>>429393
Слушай, а если в твоём коде везде дабл заменить на флоат — всё к хуям сломается? Я просто в юньке дабл никогда не юзал.
Аноним 04/08/17 Птн 17:29:45  429465
>>429240
>Например, за АИ-лесорубом гонится лесной нёх, планер берёт цель спасения
Вот тут-то и проблема. Планер не должен "брать" никаких целей. Планер должен спланировать последовательность действий, которая приводит к заданному конечному состоянию. Суть планера в том, что эта последовательность теоретически очень большая, и суть планера в переборе и нахождении наиболее оптимальной (короткого) цепочки действий.
А ГОАП это внебрачный сын простой utility-системы и каких-нибудь state machine. Планер ему там нахуй не всрался по большому счету. Только лишний балласт
Аноним 04/08/17 Птн 17:46:37  429488
>>429461
Дабл для точности. Не должно сломаться, наверное, просто решил с запасом взять, у меня там расстояния в солнечной системе в метрах фигурируют.
Аноним 04/08/17 Птн 17:51:51  429493
>>429465
>Планер не должен "брать" никаких целей.
Схуяли? Цель - желаемое состояние мира, планер подбирает последовательность действий, которые переведут текущее состояние мира в целевое.
Планер должен брать самую приоритетную цель.
ФСМ вообще далеко, потому что для каждого действия нет чётко определённых переходов.
Может ты что то путаешь?
Аноним 04/08/17 Птн 17:57:17  429506
>>429493
Хуй знает о чем вы спорите, но с точки зрения здорового программирования выбором цели и проложением маршрута должны заниматься две разные сущности.
Аноним 04/08/17 Птн 17:59:51  429513
Народ объясните в двух словах. Нейросети это, как я понимаю, куча одинаковых объектов, с универсальными классами, способные взаимодействовать, классифицированные по типам: база данных, оператор, какая то хуйня. Верно ли я понимаю концепцию нейросетей или посложнее будет?
Аноним 04/08/17 Птн 18:04:50  429524
>>429506
Проложением маршрута будет заниматься навмеш. Да в любом другом случае слабо представляю как это можно с чем то совмещать
Аноним 04/08/17 Птн 18:08:46  429527
>>429513
Нейрон в нейросети это просто функция, принимающая значение в зависимости от вектора аргументов.
Вся нейросеть это пирамида, где ты последовательно преобразуешь овер 9000 значений в одно единственное, которое дает тебе некоторую информацию.
Аноним 04/08/17 Птн 21:22:49  429645
1.png (68Кб, 742x621)
>>429283
>Но планировщик должен решать как именно мы перемещаемся.
но зачем? вообще ты как-то решаешь планированием больше задач чем следует. у тебя как будто отсутствует концепция глобальных стейтов ИИ. можно же сделать изначально несколько глобальных стейтов например по уровню встревоженности. "спокойный / встревоженный / набрасывается" например. где стейты имели бы разные наборы экшонов, меняли паттерн перемещения, являлись модификатором для трешхолда некоторых целей. а планирование нужно только для построения комплексных планов из последовательности самих действий, чтобы ИИ не залип на чем-то элементарном.

>Этот вариант я упустил. Для этого можно сделать цель трансформом, а не точкой и периодически менять точку назначения навмеш агента. Если трансформ вдруг стал нуллом(сенсор укрытий инвалидировал укрытие например) - остановка и реплан.
описывать точку пути трансформом выглядит настолько кривой идеей насколько это возможно. это будет ещё и охуевшее структурирование уровня в добавок. а что если точка пути не является трансформом но её все равно надо сменить?

>Если собрать всё вмнесте, то схема примерно такая:
лол ну ты и придумал. иметь два набора планов, один из которых для движения, а другой для действий во время движения. мне кажется с такими идеями ты достигнешь лимитов этой схемы гораздо быстрей чем я своей. синхронизация этого выглядит ещё большей еботней чем то что я придумал. а что если во время движения появилось действие с долгой имплементацией из разряда неотменяемых и очень важных а конец пути уже недалеко? или осталось то-же самое действие, но нужно поменять паттерн перемещения во время действия? например ИИ обматывается бинтиком прячась в кустах, волк его покусал. а тут хопа его волк нашел, действие поменялось с "обматываться бинтиком в укрытии" на "обматываться бинтиком убегая". прерывать обматывание бинтиком и начинать снова чтоли? или "обматыватся бинтиком" это отдельно, "сидеть в укрытии / бежать в другое укрытие" это другой набор действий?

>Не следующее действие, а вообще другой план. Так что это будет ближе к провалу действия. Здесь нужно расширение терминологии.
какая-то хуевая схема если требует расширение терминологии на самом деле.
вообще нахуй ты такую конструкцию то лепишь? могущество ГОАП то в том что у него трешхолд целей есть и только одна цель является актуальной, само планирование важно, но сравнительно второстепенно. взвешивать валидность целей легко в рамках ситуации и важно именно это. а у тебя уже пошло какое-то планирование двух целей разом, охуеть можно. как-то сильно не хватает того что объединяло бы всю эту конструкцию и упрощало. как по мне так проще иметь несколько раздельных довольно простых конструкций, которые бы объединялись общими ограничениями и соединялись одной целью.
так хоть знать будешь что если ИИ нападает то он как-то охуительно напрыгнет на пути к цели, а планирователь позаботится о том чтобы стрелы были и лук был в руках и выстрелит когда увидит. а если отпиздили то он убегает а планирователь делает все чтобы выжить по дорожке.
можно же совмещать несколько типов ИИ в одном сразу. стейтмашина для глобальных статусов которая всему голова, FSM для стратегических решений, GOAP для планирования цепочки действий и более тактических решений. так шанс того что хоть что-то из этого разрастется до критической массы и нахуй рухнет задавив под собой весь проект гораздо ниже, чем пока они по отдельности работают на одни и те-же цели. а ты через GOAP решаешь уже такую хуйню которую проще решить другими методами.

>>429323
написал навмеш, терию графов только копнул снаружи, матрицы тоже. больше всего пригодилась линейная алгебра из школьной программы, за время написания неплохо так вспомнил её. дольше ебешся с чтением о каких-то хитрых алгоритмах, или имплементацией их, чем всей этой магией цыфр.
надо тоже что-то клевое и нечитабельное показать!
Аноним 04/08/17 Птн 22:26:23  429655
>>429645
>но зачем? вообще ты как-то решаешь планированием больше задач чем следует
Потому что тип передвижения зависит от действия? Если агент хочет подкрасться - он будет красться, если он сваливает - он бежит. Зачем для этого менять какие то глобальные стейты?

>описывать точку пути трансформом выглядит настолько кривой идеей насколько это возможно
Не точку пути, а пункт назначения. Иначе как ты например будешь гнаться за движущейся целью?

>иметь два набора планов, один из которых для движения
Почему два плана? Просто у некоторых действий будет в пререквизитах (OnMove,false)

>что если во время движения появилось действие с долгой имплементацией из разряда неотменяемых и очень важных а конец
Очевидно агент остановится и завершит действие на месте.

>нужно поменять паттерн перемещения во время действия?
Если понадобилось сменить паттерн движения, значит произошло что то достаточное для реплана.

>с "обматываться бинтиком в укрытии" на "обматываться бинтиком убегая"
А как это решит твоя схема?

>а у тебя уже пошло какое-то планирование двух целей разом
целей может быть сколько угодно, приоритетная одна.

>как по мне так проще иметь несколько раздельных довольно простых конструкций, которые бы объединялись общими ограничениями и соединялись одной целью.
То есть это _простой и понятный_ вариант.

>если ИИ нападает то он как-то охуительно напрыгнет на пути к цели
Ну ёбана, у него будет действие наскока с какими то пререквизитами. В чём проблема то?

>ты через GOAP решаешь уже такую хуйню которую проще решить другими методами
А надо решать что то уровня подбора стрел и лука для стрельбы? Тут уж точно ГОАП не всрался, это можно жесткими стейтами в фсм сделать. Суть ГОАП именно гибком подстраивании под ситуацию. У тебя какие то behavior trees а сбоку костылём планировщик из двух с половиной действий
Аноним 04/08/17 Птн 23:38:51  429677
>>429655
>Потому что тип передвижения зависит от действия? Если агент хочет подкрасться - он будет красться, если он сваливает - он бежит. Зачем для этого менять какие то глобальные стейты?
чтобы не плодить сущьности, разумеется. комбинации действий должны быть пересечениями статусов, а не описываться каждый по отдельности. если ИИ атакует и его заметили, то он уже просто не будет подкрадыватся. он не будет, а тебе описывать.
если что-то можно описать простым методом то именно так это и надо делать.

>Не точку пути, а пункт назначения. Иначе как ты например будешь гнаться за движущейся целью?
да не суть важно даже. я к тому что не все целевые места перемещения могут быть привязаны к объектам глобально.

>А как это решит твоя схема?
если бинтование занимает только руки то ИИ встанет и начнет убегать бинтуя себя. перемещению ничего не мешает, а за перемещением следит другая хуйня.

>Ну ёбана, у него будет действие наскока с какими то пререквизитами. В чём проблема то?
да зачем действие наскока? вот бегает например киборг, прыгает через стены, летает через камни, в полете кидает гранаты, стреляет, таскает павших товарищей, иногда подбегает кнопки жмет. навигация из А в Б у него происходить должна сама собой, навигация подстраиваться под положение противников и свой статус, действия под собственную позицию, одни действия должны переходить в другие не волнами а постоянно. и только редкие задачи должны говорить ему где надо быть чтобы их выполнить. паузы между действиями вообще быть не должно.

>А надо решать что то уровня подбора стрел и лука для стрельбы?
йеп. или более сложные комбинации. например ИИ хочет корзинку кокосов, кокосы есть только у продавца, надо денег, идет в лес и собирает ягоды, или на реку ловить рыбу, или палкой червей копает, меняет лут на кокосы. или если ничего не может то бьет палкой продавца и отбирает кокосы если очень надо. это - планирование. описывать детали в нем не нужно. детали можно отдать на откуп другим более специализированным штукам.

>Тут уж точно ГОАП не всрался, это можно жесткими стейтами в фсм сделать.
в динамичном мире нельзя. плюс ГОАП помимо очевидных же в том что пулл действий можно менять на ходу. выпал предмет - появились действия связанные с ним, например. это в ФСМ делать по человечески нельзя.
ну и другой плюс ГОАП в том что пулл целей может шариться между членами сквада, разумеется, чтобы была иерархия.
гибкость ГОАП то в первую очередь в том что эти листы можно редактировать.

>У тебя какие то behavior trees а сбоку костылём планировщик из двух с половиной действий
ну так. планирование там где вообще должно быть планирование в какой-то форме. для манипуляций с инвентарем просто заебись, групповые действия тоже просто заебись, глобальная навигация заебись. везде где требуется планирование в динамичной ситуации заебись. а вот для тонких манипуляций требующих параллельности совсем не заебись.
ты вот решил костылем решить, я решил что проще сделать метод синхронизации и указать кто тут клитором коммандует. мне вот очень интересно посмотреть что у тебя выйдет, у меня то вон рабочий прототип же есть уже. может ты там что-то ещё лучше придумаешь.
Аноним 05/08/17 Суб 00:37:09  429716
>>429677
>а тебе описывать
Что описывать то?
Чем вообще вынесение стейтов отдельно - не пложение сущностей по сравнению с держанием этого в стейтах мира?

>если бинтование занимает только руки то ИИ встанет и начнет убегать бинтуя себя
То есть это не два набора планов, один для движения, а второй для действий?

>да зачем действие наскока?
То есть он не выполняет какое то действие, а просто наскакивает на ифах?

>ну и другой плюс ГОАП в том что пулл целей может шариться между членами сквада
Мне всё больше кажется, что ты постепенно изобретаешь hierarchical task network

>ты вот решил костылем решить
>я решил что проще сделать метод синхронизации и указать кто тут клитором коммандует
Прямое и явное решение.

>мне вот очень интересно посмотреть что у тебя выйдет
Ладно, попробую то, на чём остановился. Разговор всё равно зашёл в тупик.
Аноним 05/08/17 Суб 01:06:34  429729
>>429716
>Чем вообще вынесение стейтов отдельно - не пложение сущностей по сравнению с держанием этого в стейтах мира?
нет конечно, они же глобальные для ИИ, доступные всем его компонентам. цели ГОАП ориентируются на стейты, навигация ориентируется на стейты, все на них ориентируется. но планирование уже следует цели у ГОАП. в плане поведения ИИ можно очень много писать его глобальным состоянием. пытается он стелс, или набигает, или убигает, или спокойный или ещё какой. проще задавать общие паттерны поведения же и потом ими пользоваться везде так как они будут стопроцентно и довольно легко менять оценку состояния.

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

>То есть он не выполняет какое то действие, а просто наскакивает на ифах?
йеп. ну тоесть можно же и посложней конечно чем ифы сделать логику, чтобы ИИ там смотрел откуда выгодней набигать, выставлял рейтинги оружий как модификаторы оценки для ГОАП основываясь на окружении, например. главное что эта логика существует самостоятельно и её можно в любой момент поменять без особых страданий.

вообще, вот человек когда в игры играет он как думает? надо набижать, надо убижать, надо обойти, надо скрытся. думает над путями согласно плану, подстраивает снаряжение под обстановку. если есть друганы то уже кооперация с друганами задает общий статус и планирует снаряжение и дальнейший паттерн поведения. так-же надо примерно выстраивать мышление и для ИИ. память конечно через гоап мы нормально не сделаем, но такая ветвистость логики дает ощутимую универсальность за счет того что обстановку проще проанализировать слоями.

>Ладно, попробую то, на чём остановился. Разговор всё равно зашёл в тупик.
показать не забудь. в этом разделе все обсуждение ИИ загибается по каким-то нелепым причинам. видать давно люди не играли в игры вроде FEAR, или сталкера
Аноним 05/08/17 Суб 07:37:25  429772
>>428296
Что это? Это слово даже не гуглится, рофл.
Аноним 05/08/17 Суб 07:42:19  429773
>>429772
LateUpdate()
Аноним 05/08/17 Суб 08:12:36  429778
>>429773
Ну я попробовал через ЛейтАпдейт. Все-равно, если идти в стену. то персонаж по кд пытается в неё зайти и выталкивается.
Аноним 05/08/17 Суб 08:22:42  429779
>>429729
>пытается он стелс, или набигает, или убигает, или спокойный или ещё какой
>а тебе описывать
Ну всё же расскажи что лишнего и неудобного описывать планом в подобной ситуации. Мне правда интересно, может я упускаю что то очевидное.
Давай возьмём пример: у нас есть скрытный пидор, который может красться(что обещает ему пребывание невидимым для врага), а может бежать, может атаковать врага открыто, а может бить сникатакой, требующей пребывания невидимым. Удар сникатакой имеет более низкую стоимость, значит будет в приоритете. Цель - бить врага.
Чего лишнего описывается в этом случае по сравнению с вариантом с заведением глобальных стейтов стелс/хуелс, разблокирующих каждый по два действия?
Аноним 05/08/17 Суб 08:41:15  429782
Мне, вот, такая хуйня в голову пришла. Вот если раз 10 - 15 в секунду двигать вертексы в меше, что эффективнее? Каждый раз читать их с меша или хранить копию в виде массива и мешу только присваивать вертексы.
Аноним 05/08/17 Суб 09:03:56  429785
>>429779
если смотреть в рамках вопроса то ничего. удар обычный, удар из стелса с пререкваерментом - в этой схеме ничего лишнего, не говоря о том что такие вещи как удар в мили должны так-же имплементить особые сорта перемещения до цели. если выйти перед десантником то у него так-же удар прикладом будет в приоритете, он подбежит и ебанет.

если смотреть в рамках всего обсуждения то в случае наличия глобальных статусов можно например менять стоимость у таких действий как "использовать лук", или "использовать кинжал", вместо чего-то громкого. так-же если стелс активен то персонаж например меняет приоритетность у других зон карты и выбирает пути через высокую траву чтобы попасть куда надо, залезает под лесенки более охотно, старается уйти из конуса обзора при навигации. чтобы ГОАП сказал "иди сюда" и ИИ пополз в стелсе туда обходя все заметные места. например за спину жертвы. ну и в конце концов сет анимаций поменять чтобы ИИ ходил горбатым и башкой нервно мотал. можно много придумать как подобный статус могли бы имплементить другие элементы ИИ.

>>429782
храни копию. торговать памятью всегда эффективней, если её ещё много в запасе. но вообще лучше скажи че там делаешь, все кроется в деталях как всегда же.
Аноним 05/08/17 Суб 09:08:40  429786
>>429785
Спасибо, дружище. Как-то уже пытался, но решил начать снова. Запилить простенькую деформацию террейна а-ля СПИНТАЙЕРС под ведро.
Аноним 05/08/17 Суб 09:23:08  429789
>>429778
Ну значит ты наговнокодил. У меня на голых коллайдерах с коллизиями всё нормально было.
Аноним 05/08/17 Суб 09:26:21  429790
>>429786
а, а я кажись тебя помню. кстати а чего ты вертексы собрался редактировать то? может шейдор ебанешь чтобы вот примерно как в бэтмане?
вообще где-то у меня был клевый ютубер который что-то похожее на коленке за часик слепил. https://www.youtube.com/watch?v=l_2uGpjBMl4 может интересно будет
Аноним 05/08/17 Суб 09:53:49  429794
scrin.jpg (50Кб, 496x304)
>>429789
https://youtu.be/FvCmPlUF-T8
Аноним 05/08/17 Суб 09:55:04  429796
>>429794
> float Скорость
А с тобой шутки плохи, да?
Аноним 05/08/17 Суб 09:56:09  429797
15009158489411.jpg (38Кб, 479x395)
>>429794
> public float Скорость
Аноним 05/08/17 Суб 09:56:56  429798
>>429790
Не, я тут, вроде, не делился ничем таким. В шейдеры я не умею.
Аноним 05/08/17 Суб 10:05:02  429801
>>429796
>>429797
Ну я хз, мне просто прикольным кажется, когда в редакторе переменные на русском написаны. Этож не влияет ни на что, рофл.
Аноним 05/08/17 Суб 10:06:51  429802
>>429801
> мне просто прикольным кажется, когда в редакторе переменные на русском написаны
Продолжай, у тебя всё получится.
Аноним 05/08/17 Суб 10:09:46  429803
>>429801
> рофл
Настримятся своими дотами, а потом рофлят и ебут друг друга в жопы.
Рашид, завязывай кодить.
Аноним 05/08/17 Суб 10:14:29  429805
>>429802
>>429803
Вы чего порвались на пустом месте? Ну нравится человеку, пусть хоть на хинди называет.
Аноним 05/08/17 Суб 10:15:14  429806
>>429802
Ну я просто не шарю совсем. Так нельзя делать? Я думал, что так не делают от того, что это поуебански выглядит.

Аноним 05/08/17 Суб 10:15:31  429807
>>429805
Да кто порвался-то? Я ж и говорю, пускай развлекается, всё получится.
Аноним 05/08/17 Суб 10:19:10  429808
>>429806
> Так нельзя делать?
Если ты кодишь чисто для себя чисто руку набить — называй как хочешь, хоть хуйпизда. Но лучше сразу приучаться к стандартам оформления, чтоб потом не переучиваться.
Аноним 05/08/17 Суб 10:52:38  429819
scrin.jpg (68Кб, 592x356)
Так а как это пофиксить и сделать, чтобы персонаж просто упирался в стену, как через rigidbody? Если я пытаюсь делать через rb, то всё фризить начинает:
https://www.youtube.com/watch?v=wrHmbiv41h0


>>429808
Понял, принял.
Аноним 05/08/17 Суб 11:55:38  429838
>>429819
Я сейчас наткнулся на статейку, где говорится, что transform.position/transform.rotation сильно снижают производительность, если использовать это на объектах с rigidbody. Враги у меня имеют rb, но перемещаются и поворачиваются с помощью transform. Еще я замечал, что если удалить их и использовать rb для движения, то лагов не будет.
Я в правильном направлении думаю? Мне надо переделать движение врагов для повышения производительности?
Аноним 05/08/17 Суб 11:57:37  429839
>>429838
> transform.position/transform.rotation сильно снижают производительность, если использовать это на объектах с rigidbody
Ага, прям пекарня горит.
Хуйнёй не занимайся.
Аноним 05/08/17 Суб 12:06:43  429842
>>429839
Так я не понимаю, с чем тогда связаны лаги при использовании rb? Типо, я так гуглил, большинство считает, что это охуенная штука, врядли бы так считали, если бы это так сильно убивало производительность.

Вот статейка, кстати:
https://habrahabr.ru/post/248391/
Аноним 05/08/17 Суб 12:08:41  429843
>>429842
Статейка от 15-го года? Окей.
Аноним 05/08/17 Суб 12:25:45  429844
>>429785
>если смотреть в рамках всего обсуждения то в случае наличия глобальных статусов можно например менять стоимость у таких действий как "использовать лук", или "использовать кинжал", вместо чего-то громкого. так-же если стелс активен то персонаж например меняет приоритетность у других зон карты и выбирает пути через высокую траву чтобы попасть куда надо, залезает под лесенки более охотно, старается уйти из конуса обзора при навигации. чтобы ГОАП сказал "иди сюда" и ИИ пополз в стелсе туда обходя все заметные места
Но это всё может быть сделано просто в действии скрытного перемещения. Весь глобальный стейт стелса заменяет ворлдстейт (StayHidden,true). Но если ты захочешь сделать так чтобы этот же скрытный пидр мог бить сник атакой вне стелса, например, ослеплённых противников, то прийдётся лепить ещё один иф для нахождения вне стелса.
Мне просто кажется, что тебе ГОАП вообще не нужен: ты используешь глобальные стейты, а действия распределяешь _просто ифами_, называя работой ГОАП формирование пула действий.
Рили попробуй HTN, мне кажется это то, что ты пробуешь изобрести.
Аноним 05/08/17 Суб 14:36:17  429871
>>429868
> А вот если мне нужно еще и источники света расставить по карте? Я же не могу ставить их наугад и каждый раз смотреть нормальная ли яркость света, нормальный ли радикс освещения, нормальный ли цвет. Как тут быть?
Чего блять? Ставишь свет и крутишь как надо.
Аноним 05/08/17 Суб 15:06:05  429877
>>429873
Что ты несёшь? Ты вкладку Scene вообще видел?
Аноним 05/08/17 Суб 16:29:44  429902
>>429881
>таких редакторов полно.
Ну так и в чем проблема? Берешь любой из множества доступных редакторов и пользуешься.
Аноним 05/08/17 Суб 19:33:37  429959
>>429870
Навмеш хорошо оптимизирован, на больших открытых пространстван даже эффективнее Астара с тайлами.
Аноним 05/08/17 Суб 19:34:40  429961
Нужно сделать красивый выпадающий список как на пик1. Его я смог сделать скопировав код пик2 из какой-то статьи. Но я так и не понял как использовать значения в скрипте? Как мне понять что из этого меню выбрано? Что такое ComponentType? Что значит { StartDialogue = 1, LoadScene = 2 } ? Если выбрано StartDialogue, то значение переменной становится 1? В интернете не смог найти.
Аноним 05/08/17 Суб 20:01:05  429971
>>429970
Нууу, можно через GetComponent проверять наличие какого-либо компонента, например.
А вообще не заморачивайся, если у тебя это несколько раз используется, то никто от этого не помрёт.
Аноним 05/08/17 Суб 20:07:23  429973
>>429961
В игре или в редакторе?
Если второе, то enum показывается в редакторе в виде этого самого выпадающего списка.
Аноним 05/08/17 Суб 20:13:34  429976
>>429961
Ну как всегда после вопроса на дваче я нахожу нужную страницу. Разобрался уже.
Аноним 05/08/17 Суб 21:48:02  430023
Соре за оффтоп, но почему эта тема такая активная? Всмысле, я мало игр знаю от харкача, а в разделе жизнь кипит.
Аноним 05/08/17 Суб 21:50:27  430024
>>427791
> Тут что так мертво или юнити девелоперы вымерли?
>>430023
> почему эта тема такая активная?
Это даже мило.
А вообще — у движка большое комьюнити, оттуда и оживлённая беседа.
Аноним 05/08/17 Суб 21:56:02  430028
>>430024
А можешь посоветовать места, куда можно вкатиться новичку? Или, в целом, это не особо нужно и хватит гугла?
Я быдло, в ангельский не могу.
Аноним 05/08/17 Суб 21:57:07  430029
>>430028
Да в шапке всё есть.
И туториалы и книги (и на русском в том числе).
Аноним 05/08/17 Суб 22:11:48  430034
>>430028
> в ангельский не могу
Будет сложновато. Не сложнее чем на другие движки, но без английского реально хуево. Я полгода назад вкатился в геймдев, и уже пришлось прочитать одну книгу на английском, сейчас начал еще одну. Плюс самый охуенный инструмент на начале - это ответы на форумах Юнити, а они в основном на английском, да и гуглить надо правильно на английском.
Аноним 05/08/17 Суб 22:15:56  430035
>>430034
> да и гуглить надо правильно на английском
Удваиваю этого благородного дона.
Как затык придёт — на русском хуй чё найдёшь.
Аноним 05/08/17 Суб 23:21:53  430051
Короче, я тут недавно спрашивал насчет диалогов и ассетов. Сейчас откопал пиратские и попробовал. Заключение:
1) Dialogue System For Unity - говно для даунов-аутистов, до сих пор удивляюсь откуда у него такие хорошие оценки в сторе
2) NodeCanvas - годнота. Всё сделано по человечески. Плюс помимо диалогов можно еще делать АИ и прочие крутые штуки.

По крайней мере, это первое впечатление. Глубоко не зарывался.
Аноним 06/08/17 Вск 00:01:50  430058
>>430051
>NodeCanvas
Отсутствие безбладной демки едва ли облегчит выбор.

Надоть видосики глянуть тьюторриалные
Аноним 06/08/17 Вск 00:04:10  430059
>>429844
в действии должно быть описано только само исключительно само действие. ты погромировал чтоли мало в своей жизни, шишки не набил с размазыванием логики? не доверял слишком много функциям которые вызываются хуй пойми когда и где? если я захочу чтобы скрытый пидор мог бить сник атакой вне стелса то либо надо задать альтернативные условия для действия, либо скопипастить эти 3.5 строчки описывающие действие с новыми условиями где если враг ослеплен то можно его ебануть хорошо.
вообще ты как-то странно структурируешь ИИ. ты понимаешь в какую мусорку превратится ГОАП если там будет описано просто всё? и оно будет размазано по действиям? это ебануться можно редактировать все это.

>а действия распределяешь _просто ифами_
>Мне просто кажется, что тебе ГОАП вообще не нужен
да по моему это ты не совсем понимаешь нахуй этот ГОАП нужен и пытаешься возложить на него больше чем надо.
я же уже показывал скриншотик, где у ИИ винтовка разряженная в инвентаре, рядом лежит ещё одна и отдельно патроны к ней и надо выстрелить из винтовки. это по твоему как ифами ебануть то? а варианты где взять патроны, или винтовку, могут множится и множится.

внутри простых действий требующих навигацию разумеется проще пользоваться ифами.
нахуй вообще описывать перемещение в действии ГОАП? ты ещё там ебани всю логику перемещения, чтобы оно там следило когда бегать, когда прыгать, чтобы лезло в аниматор, позицию там проверяло. чтобы открыл а перед тобой стена текста тыщи на полторы строк в которой какая-то не читаемая мешанина. а когда отдаешь все это на откуп глобальному менеджеру и контролеру и уже можешь это читать и даже наследоваться от него и менять имплементацию деталей то все что остается делать в ГОАП это описать в действии перемещения одну сраную строчку. а нахуй оно надо то? лучше уж под врага завести экшон "ебануть врага номер такой" где в имплементации "если далеко то подбеги" и ссылка на врага чтобы можно было сказать менеджеру "беги хи-и-итро".

>Рили попробуй HTN
он не пользуется A* же. как таким в динамичном мире пользоватся? я понимаю георию графов достаточно хорошо чтобы понимать пользу от поиска пути на нем, чем ГОАП и является.

>>429842
что у тебя за проблемы такие? нахуй ты в трансформ вообще лезешь если у тебя RB? если у тебя RB то манипуляции уже делай все через него. у тебя же специальные AddForce, AddTorque и прочие есть которые гарантируют тебе что все будет через физон.

>>429798
лол ну ты тогда не первый в этом случае. а в шейдеры смоги. полезно же. например в бэтмане клево сделали, у них там везде есть поверхности под которыми ортогональная камера которая рендерит только глубину на максимальную дистанцию там где поверхность заканчивается. все что попадает в эту камеру рисует на ней. а нарисованное появляется на поверхности как карта всех этих вмятин. если бы не мобилки то можно было бы ещё ебануть всякую симуляцию в компьют шейдорах например что типа ветер дует и вмятины деформируются со временем.

>>429870
да через навмеш делай навигацию даже с тайтловой картой если у тебя никакой логики не завязано на этих тайтлах. если делаешь пошаговую стратегию то да, тайтлы нужны, а так то нахуй оно надо

>>429918
ебани свой редактор прямо в юнити. займет пару вечеров, а от страданий избавит на все время разработки проекта.

>>429970
почитай про ссылочные типы и про валуе типы, а потом подумай о том что строка это массив с буквами. тогда поймешь о чем речь тут идет. вообще можно и через теги проверять, просто не создавай каждый раз строку просто чтобы сравнить с ней, а пользуйся ссылкой на эту строку. тебе же инструменты дали заебись, пользуйся но с умом.
Аноним 06/08/17 Вск 00:30:54  430064
>>430058
Ну да, у канваса трудно сделать первую ступеньку, но потом намного легче. На ютьюбе есть ролики от народа, они помогают.
А у Диалог Менеджер слишком переусложнен. Я так понимаю он сделан для тех кто вообще не хочет залезать в спрайты, так что там много всяких финтов странных, которые хуй просечешь. И документация хуевая, я за целый день так и не понял как напрямую из скрипта вызывать диалог, например. У НодКанваса это сразу же показывается. Алсо, может знающие пояснят, нахуя они впилили туда Lua?
Аноним 06/08/17 Вск 00:33:15  430065
>>430059
Я не то чтобы доебаться, но ты шифт из клавы выдрал что ли?
Аноним 06/08/17 Вск 00:42:14  430066
>>430065
meh
я и точки не пишу иногда. вот так общаешься в интернете два десятка лет, пишешь стены текста. а со временем техника печатания оптимизируется сама собой чтобы требовать меньше и меньше усилий. в итоге перестаешь давить на шифт, ставить точки, пользуешься грамматикой только там где это может вызвать недопонимание
Аноним 06/08/17 Вск 00:45:04  430067
>>430066
Ну ты же лукавишь, запятые сами себя не прожмут.
Но а вообще, повторюсь, я без всякого этсамого.
Аноним 06/08/17 Вск 00:55:14  430068
>>430067
запятые то нужны, без них страдает построение предложения и передача смысла. этим нельзя жертвовать на форумах. к тому же запятые ставятся нажимая правый шифт, а не левый. там если два пальца рядом то они сами нажимают это комбинацию. сложней ставить вопросительный знак, в русской расскладке он ну пиздец как неудобно расположен, чаще переключаюсь на английскую расскладку чтобы его поставить.
левый шифт я вообще предпочитаю не нажимать, разве что когда восклицательный знак ставлю то жму его, или кавычки в русской раскладке
вообще это большая тема и не в рамках обсуждения юнити она
Аноним 06/08/17 Вск 01:19:14  430070
Уважаемые юнитибояре, поясните ньюфагу, как вы делаете в своих играх менюшки и окошки. Хотелось бы отделять код логики окна от кода всяких там анимаций, кнопочек и прочхуеты. Кнопки делаю из Image-ей. Поясню свою проблему.

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

В юньке вместо леайута по сути получается мой префаб окна. Но в шарпике же как я понял методы контроллера в виде коллбэков не покидаешь нормально в кнопки? Или я не прав? Вроде есть какие то "делегаты", но чет они слегка замудрено выглядят. Юнитискрипт не предлагать.

А для каждого окна пилить десяток классов кнопок (Button1Script, Button2Script, CloseButtonScript, ...) просто чтобы на клике по ним делать что-то по типу парент.гетКомпонент<контроллерОкошка>().методКоторыйДолжнаДернутьКнопка1() (и т.п), мне кажется неудобной хуетой. Вижу конечно частичное решение замутить некоторую "базовую" кнопку из имейджа и конкретные десять в окнах наследовать от нее, но это ж как то неудобно.

Как в итоге грамотно замутить подобную систему? Шоб повесить на префаб окошка скрипт контроллера и он десятку абсолютно идентичных с точки зрения кода кнопочек - прокинул свои методы, которые кнопочки будут послушно дергать? Другими словами, хочу повесить на 10 кнопок один и тот же скрипт (БазарюКнопка.cs), но чтобы он делал разные действия, которым его научит батя (контроллер окошка) уже где надо. Все ради того, чтобы в самой юньке один раз собранное окно ващщщще не шатать, а в случае если нужно будет что-то поправить, спокойно фиксить код. Или я довнич и это велосипед и лучше так не делать?
Аноним 06/08/17 Вск 01:20:48  430071
>>430070
> как вы делаете в своих играх менюшки и окошки
Через UI
Дальше не читал
Аноним 06/08/17 Вск 01:27:40  430073
>>430070
> Но в шарпике же как я понял методы контроллера в виде коллбэков не покидаешь нормально в кнопки?
неа, не прав. делегаты так-же отлично и через код присваиваются. ты бы API почитал. https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html просто у юнити есть ещё этот редактор делегатов. как иначе делать менюшки например с выбором разрешения? это же охуеть можно.
делегаты это методы которые работают как значение. чтобы ты например мог куда-то сказать "вот тебе функция, ебани её когда сделаешь свое говно".
Аноним 06/08/17 Вск 01:29:25  430074
>>430070
>>430071
Чет я сумбурно расписал, попробую проще:

Как запилить на C# такой скрипт (один на всю игру) для Image-а, чтобы он делал Image-ы (любые) универсальной кнопкой? (Как слушать события мышиные - понимаю). Чтобы кнопка не сама определяла, что она должна делать по клику, а кто-то извне ей сказал типа button.onClick = function "такая то".
Аноним 06/08/17 Вск 01:30:39  430076
>>430074
> Как запилить на C# такой скрипт (один на всю игру) для Image-а, чтобы он делал Image-ы (любые) универсальной кнопкой?
Добро пожаловать в мир классов и наследования.
Аноним 06/08/17 Вск 01:31:37  430078
>>430073
О, спасибо, анон, чет я ебался в глаза и не увидел что у уи уже есть Button, думал надо замутить Image и слушать клик самому (хотя наверное баттон делает то же самое).

Т.е. получается я делаю контрллер, вешаю его на окошко, заворачиваю его метод в делегат, делаю геткомпонент<ебанаяКнопка>() и ей его в поле сохраняю? а в TaskOnClick уже дергаю?
Аноним 06/08/17 Вск 01:34:49  430080
>>430078
> Т.е. получается я делаю контрллер, вешаю его на окошко, заворачиваю его метод в делегат, делаю геткомпонент<ебанаяКнопка>() и ей его в поле сохраняю? а в TaskOnClick уже дергаю?
Усложняешь. В юнити в UI уже листнеры висят, вешай на всё что хочешь, если у тебя на войде публичный модификатор.
Аноним 06/08/17 Вск 01:39:22  430081
>>430080
А если у меня будет скриптик MySuperAwesomeButton который там внутри кнопки слушает эвенты всякие и по разному ее анимирует (скажем скейлит при наведении, затемняет при клике, и тп), а я потом на те же самые эвенты понавешаю еще листенеров где-нибудь снаружи в контроллере, это не будет тормозно? Сужу все по тому же старому болезненному флэшу, где каждый ебаный эвент каждому своему листенеру при триггере порождал аллокацию и было выгоднее не 20 эвент листенеров регистрировать, а замутить 1 листенер который бы уже 20 методов разных дергал, или вообще коллбэками все обвязывать. Хотя наверное я дед инвалид и нормальные люди в юньке замутили хорошо...
Аноним 06/08/17 Вск 01:46:33  430084
>>430074
да я же уже ответил на твой вопрос и ссылку дал. вот понимаешь? есть функция. а хуяк можно функцию передать как значение. это - делегат. вот есть у тебя кнопка та ты такой мояКнопка.onClick.AddListener(МояФункция); и тогда хопа кнопка будет делать твою функцию когда довиш на неё.
кстати ты это, осторожней с делегатами сделанными из кода. особенно осторожней с теми делегатами которые присваиваются в цыклах, где в качестве инпута есть енумератор.

>>430078
там в меню кстати ещё и не весь функционал мог увидеть. самое охуительное когда тыкаешь у выбранного геймобжекта AddComponent в меню инспектора и лезешь во вкладку Layout.
баттон то в целом делает то-же самое и делает это приятно. вообще если тебя интересует имплементация то эти хуи делали этот UI опенсорсным, можешь почитать. https://bitbucket.org/Unity-Technologies/ui

>>430081
лол ты чего страдаешь то так. тут же методы вроде OnDeselect, OnMove, OnPointerDown, OnPointerEnter, OnPointerExit, OnPointerUp, OnSelect и прочее прочее у тебя публичные, ты API почитай. некоторый функционал и так уже есть вроде изменения цвета при наведении курсора. наследуйся от кнопки, оверрайдни эти функции которые для этого и сделаны, сделай там любую сраную хуйню вплоть до того что при наведении на элемент интерфейса приступ эпилепсии мог случится. можно ещё встроеным редактором анимаий воспользоваться с кривыми чтобы окошко там приятно размеры меняло или ещё че.
вообще на https://www.assetstore.unity3d.com/en/#!/content/25468 вот тебе официальные экзамплы, посмотри что там и как оно сделано
Аноним 06/08/17 Вск 01:51:35  430085
>>430064
>может знающие пояснят, нахуя они впилили туда Lua?

я >>430058
видосики нашлись и голос у говорящего приятный

Lua нужна для скриптирования, как я понял. Ясно, что можно было бы и обойтись чисто сисярпом.
Аноним 06/08/17 Вск 08:25:04  430098
>>430059
>в действии должно быть описано только само исключительно само действие
Ты там засыпаешь уже? Навигацией занимается не действие, а навмеш и настройка над ним. Действие лишь даёт команду идти и задаёт образ передвижения. Все эти весёлые и занимательные стейты с поиском кустов будут только в навигаторе с синхронизацией через одно вхождение в ворлдстейт, без необходимости подстраивать всё.

>ты погромировал чтоли мало в своей жизни, шишки не набил
>это ебануться можно редактировать все это
>не доверял слишком много функциям которые вызываются хуй пойми когда и где?
>в какую мусорку превратится ГОАП

>скопипастить эти 3.5 строчки описывающие действие с новыми условиями
Бля не дави плиз((( Рассказываешь о чистоте действий и сразу копируешь строчки кода с новыми условиями и делаешь два похожих действия для стелса и его отсутствия. Интуитивно редактируемо.

>нахуй вообще описывать перемещение в действии ГОАП?
>ты погромировал чтоли мало в своей жизни
Про ООП не слышал? Действие не реализует движение, оно описывает его характер.

>он не пользуется A* же
Там прямой поиск по графу. H - это hierarchical

>я понимаю георию графов достаточно хорошо чтобы понимать пользу от поиска пути на нем
>чем ГОАП и является
Ты кстати и не рассказал какие планы ты строишь и пути ищешь. Вот был пример с обоймой и внтовкой, но почему это не сделать ифами?




Аноним 06/08/17 Вск 08:50:39  430099
>>430098
>Навигацией занимается не действие, а навмеш и настройка над ним. Действие лишь даёт команду идти и задаёт образ передвижения. Все эти весёлые и занимательные стейты с поиском кустов будут только в навигаторе с синхронизацией через одно вхождение в ворлдстейт, без необходимости подстраивать всё.
чего план то такой хитрый? вот стейт ИИ сменился внутри гоапа, он стал у нас спрятанным, появилась возможность применять действия. но актуальный паттерн передвижения сменится только после следующего действия? тоесть типа стоит ИИ посреди поля в idle, понимает что он спрятался, видит враг идет и надо ебануть бы его и только тогда он приседает и ползет чтоли?

>Бля не дави плиз((( Рассказываешь о чистоте действий и сразу копируешь строчки кода с новыми условиями и делаешь два похожих действия для стелса и его отсутствия. Интуитивно редактируемо.
если занимают они 3.5 строчки, различаются одной кондицией пререкваермента то чего мудрить. назвал по другому. теперь у нас не StealthAttack, а SneakAttack, положил рядом. может ещё чего потом напишу. например StealthAttack чтобы делать надо сзади подбежать, а SneakAttack можно и не сзади. пока это два разных действия которые требуют хуй да нихуя описания то.

>Про ООП не слышал? Действие не реализует движение, оно описывает его характер.
как характер то описывать придумал?

>Там прямой поиск по графу. H - это hierarchical
там иерархический поиск по графу, сверху вниз. если бы делал РТС например где я всегда знал бы изначальную возможную последовательность действий и примерное их количество то это было бы адекватно. но не у меня.

>Ты кстати и не рассказал какие планы ты строишь и пути ищешь. Вот был пример с обоймой и внтовкой, но почему это не сделать ифами?
потому что винтовки может и не быть вообще, патрон может и не быть вообще, или чтобы их получить надо взять их, а чтобы взять надо залезть, а чтобы залезть надо ключ. разумеется некоторые действия скорей всего будут в конце, а некоторые скорей всего в начале, но учитывая все варианты цепочка может быть весьма длинной. как такое ифами то ебануть? а что если ебошить может не только винтовка, есть пистолет, но нет патрон к нему, но есть патроны к винтовке?
Аноним 06/08/17 Вск 11:53:19  430115
Как выглядит строчка кода, чтобы засечь время?
Например :

if {прошло 2секунды после actiona}
...
Аноним 06/08/17 Вск 11:54:40  430116
>>430115
Time хранит в себе время с момента запуска сцены. Используй его, Люк.
Аноним 06/08/17 Вск 11:57:44  430117
>>430116
Time.time если быть точнее
Аноним 06/08/17 Вск 12:35:11  430129
>>430099
>тоесть типа стоит ИИ посреди поля в idle, понимает что он спрятался, видит враг идет и надо ебануть бы его и только тогда он приседает и ползет чтоли?
Ты тралишь? Идл он будет с стелсе путём действия "сидеть в стелсе".
>ну вот лишнее действие! засрано всё
Но точно так же при переключении глобальных стейтов у тебя тоже действие идл на ифах будет обрабатываться иначе - спихивание кучи всего в одно место, от чего ты меня недавно предостерегал.

>если занимают они 3.5 строчки
А если больше, то уже что то ещё придумывать? А потом ещё что то новое?

>как характер то описывать придумал?
Передавать навигатору экземпляр класса NavigationContext очевидно же.

>а что если ебошить может не только винтовка, есть пистолет, но нет патрон к нему, но есть патроны к винтовке?
Ну то сеть мы лишнего в ГОАП не пихаем, но наличие всех видов оружия и патронов к ним мы там всёже храним?

>но учитывая все варианты цепочка может быть весьма длинной
Но весь однойзначной, не считаешь?
Что мешает сделать по ифу на видимость патронов, винтовки? Подбирание - действие с перемещением уже на ифах реализовано.
Аноним 06/08/17 Вск 12:40:17  430130
>>430129
Угаманись блять угаманись пока я тебя не пристрелил.
GOAP это был неудачный эксперимент по использованию планировщиков для ИИ игор. Все признали, что это неудачно и никто сейчас его не использует.
Аноним 06/08/17 Вск 12:42:17  430131
>>430130
> Все признали
"Все" это кто?
Аноним 06/08/17 Вск 13:16:25  430136
>>430131
ИНДУСТРИЯ
Аноним 06/08/17 Вск 13:39:53  430143
>>430141
> Или это можно как-то по-другому сделать?
Blend trees.
Аноним 06/08/17 Вск 14:04:41  430170
Пилю пиксельную игру. Я так понимаю мне нужно взять одно разрешение, например 16:9, и пилить под него? И если это запустят люди с другим разрешением, то у них это будет с черными полосами по бокам или сверху? По другому никак нельзя? Например расширять поле обзора?
Аноним 06/08/17 Вск 14:32:49  430181
>>430170
Пилильщик блин, ты б сначала самые элементарные азы почитал.
Ctrl+Shift+B - Player settings - Resolution and Presentation
Аноним 06/08/17 Вск 14:39:11  430182
>>430131
/gd/
Аноним 06/08/17 Вск 14:54:49  430186
>>430136
И к чему пришла индустрия?
Аноним 06/08/17 Вск 15:05:35  430188
>>430186
К тому, что ничего проще и лучше behavior tree нету
http://www.gdcvault.com/play/1023055/AI-Behavior-Editing-and-Debugging
Аноним 06/08/17 Вск 15:09:07  430189
>>430188
>Division
Результат заметен.
Аноним 06/08/17 Вск 16:30:19  430225
>>430181
Лол. Я уже полгода изучаю юнити, но про это окно узнал впервые. Уже делаю нормальные пиксели, как боженька завещал.
Кстати, зачем нужна галочка "Pixel Snap" на шейдерах? Что именно он снепит?
Аноним 06/08/17 Вск 17:44:58  430250
>>430188
>ничего проще
>FSM
Аноним 06/08/17 Вск 18:09:41  430263
>>430250
behaviour tree намного проще на самом деле
меньше boilerplate-кода
ты охуеешь делать стейт машины, если у тебя много состояний
Аноним 06/08/17 Вск 18:46:47  430272
>>430129
>Ты тралишь? Идл он будет с стелсе путём действия "сидеть в стелсе".
а что гарантировать то будет смену статуса? или что будет гарантировать то что стелс не вскроется потому что ИИ неожиданно захочет грибов собрать?

>Но точно так же при переключении глобальных стейтов у тебя тоже действие идл на ифах будет обрабатываться иначе - спихивание кучи всего в одно место, от чего ты меня недавно предостерегал.
ты же понимаешь что глобальные статусы будут активироватся не зависимо от текущего действия? вообще с чего бы в моем варианте обрабатыватся в одном месте то? я наоборот все разделяю. логика получения статуса отдельно, имплементация статуса отдельно, планирование отдельно, ничего друг другу не мешает.

>А если больше, то уже что то ещё придумывать? А потом ещё что то новое?
ну а хули? множить классы ничего не мешает пока они компактные.

>Ну то сеть мы лишнего в ГОАП не пихаем, но наличие всех видов оружия и патронов к ним мы там всёже храним?
ну а как ещё то? вообще каждый предмет должен хранить список экшонов связанных с ним, чтобы само наличие их давало варианты. использование плюса динамичного листа экшонов, хули.

>Что мешает сделать по ифу на видимость патронов, винтовки?
то что вкладки с ифами будут правей чем граница монитора?

>>430130
да что ты. вон на вскидку в третем фолаче ГОАП, в DeusEx:HR тоже ГОАП.

>>430141
https://unity3d.com/ru/learn/tutorials/topics/animation/avatar-masks


Аноним 06/08/17 Вск 19:50:04  430306
>>430272
>а что гарантировать то будет смену статуса?
Какую смену статуса? Он будет выполнять то, что требует приоритетная цель. Он будет сидеть в стелсе потому что это необходимо для текущей цели и действий, которые к ней ведут.
>или что будет гарантировать то что стелс не вскроется потому что ИИ неожиданно захочет грибов собрать?
Это уже совсем другое действие ведущее к другой цели. Но банально собирание грибов имеет как прекондишн отсутствие врагов.

>я наоборот все разделяю
Ты читал про что речь? Действие идл будет иметь несколько вариантов выполнения в зависимости от стейта. Или же будет несколько действий идл, зависимых от стейта? В чём тогда смысл отбора контроля за ним у планировщика?

>множить классы
>вот 3 строчки копирую, а потом ещё что
>множить классы

>ну а как ещё то?
Завести глобальный стейт для текущего оружия же

>>430263
>behaviour tree намного проще на самом деле
Редактировать деревья гораздо сложнее.

>ты охуеешь делать стейт машины, если у тебя много состояний
>стейт машины
>СТРИПС
Аноним 06/08/17 Вск 20:06:43  430312
>>430306
>Какую смену статуса? Он будет выполнять то, что требует приоритетная цель. Он будет сидеть в стелсе потому что это необходимо для текущей цели и действий, которые к ней ведут.
смену паттерна действий. чтобы сел в стелс и сидел там и это не прерывалось ничем пока стелс активен.

>Это уже совсем другое действие ведущее к другой цели. Но банально собирание грибов имеет как прекондишн отсутствие врагов.
тоесть у тебя будет отдельно собирание грибов чтоли? не будет дженерик действия "собрать предмет"? а что если надо оружие поднять в бою?

>Ты читал про что речь? Действие идл будет иметь несколько вариантов выполнения в зависимости от стейта. Или же будет несколько действий идл, зависимых от стейта? В чём тогда смысл отбора контроля за ним у планировщика?
слыш, мне вот интересно. а у тебя будет 3-5 вариантов под каждое действие чтоли? типа, идл в стелсе, идл нервный, идл хромой, идл выпивший и прочее? или вот если у тебя статус хранится как флажок в ГОАП, то как ты будешь менять модификаторы трешхолда у гоалов которые изначально бы зависели от статуса персонажа? когда например если персонаж счастлив то он мороженое хочет покупать, а когда грустно ему то он виски выпить в баре хочет.

>Завести глобальный стейт для текущего оружия же
а типы патронов как различать, м?
Аноним 06/08/17 Вск 20:34:52  430335
>>430312
>не прерывалось ничем пока стелс активен.
Написано же следование приоритетной цели, если текущий план валиден, то ничто не прервёт стелс.

>не будет дженерик действия "собрать предмет"? а что если надо оружие поднять в бою?
Дженерик собирание грибов с динамическими прекондишенами. У нас же обратный поиск, планер будет знать контекст подбирания предмета.

>типа, идл в стелсе, идл нервный, идл хромой, идл выпивший и прочее?
Да. Часть действий можно конечно свернуть в одно, если это не влияет на планирование.

>или вот если у тебя статус хранится как флажок в ГОАП, то как ты будешь менять модификаторы трешхолда у гоалов которые изначально бы зависели от статуса персонажа?
Процедурно извне.

>когда например если персонаж счастлив то он мороженое хочет покупать, а когда грустно ему то он виски выпить в баре хочет
Некорректное сравнение со стелсом. Грустным или радостным персонаж становится извне, что может менять приоритеты целей. Но в стелс АИ должен уходить сам, добивая своей цели по уничтожению противника.
Аноним 06/08/17 Вск 20:44:49  430341
Мимо тот же переселенец с флэша. Мануалы не читай - гдач спрашивай!

Сделал простенький дисплейчик - картинка и текст, прилепил на него скрипт (MyYobaDisplay), где на Start считываю компоненты дисплейчика в переменные и есть метод SetData(data:MyYobaData), в котором компонентам из переменных задаю параметры из этой самой даты (тексту стрингу, картинке цвет). Сделал "окно" в которое накидал с десяток таких дисплейчиков. Сделал контроллер окошка, в нем на Start ищу все MyYobaDisplay-и, сохраняю их к себе и генерю для них MyYobaData-ы, и сразу им прокидываю. Но поскольку Start бати (контроллера) логично дергается раньше чем Start чилдов (дисплеев), то в момент когда батей делаю SetData им, у них внутри еще нет ссылочки на их компоненты и они не могут нормально покраситься исходя из прокинутой датки.

Внимание вопрос: как "батей" грамотно подождать инициализации всех чилдов? Делать костыль с флагом на первом апдейте? А не будут ли тогда на долю секунды видны пустые белые хуйни с дефолтным текстом у MyYobaDisplay-ев? В юньке наверняка есть более грамотный метод шобы сделать пиздато... Может эвент какой подождать надо и на нем уже датку прокидывать? Как тру пацаны делают?
Аноним 06/08/17 Вск 20:59:18  430344
>>430341
upd:
Сделал очевидное решение - у дисплея храню датку внутри, и перерисовываю его на Start исходя из датки. Но все равно сцуко медленно, запустив сцену кнопочкой Play в юньке, сначала вижу почти полсекунды дефолтный белый дисплей и только потом он окрашивается в нужный цвет. Как-то можно запилить чтобы он сразу выглядел как надо?

И вообще почему так, это GetComponent такой медленный или другие причины (дебаг билд?)?
Аноним 06/08/17 Вск 22:32:07  430397
Необходима следующая логика (опишу на примере TD, хотя у меня не TD, это неважно): вот есть активные объекты (башни), есть крипы. Башням надо искать следующую цель: она берёт список крипов, итерируется по нему и находит нужного пиздюка. Делает она это с помощью FindGameObjectsWithTag("пиздюк"). Проблема в том, что башен много и пиздюков много. Как грамотней реализовать? Создать один скрипт, который хранит пиздюков: удаляет/добавляет в список, а остальные башни лезут к нему за инфой? Как сделать так, чтобы этот срипт запускался вперёд скриптов башен, чтоб инфа была актуальна?
Аноним 06/08/17 Вск 23:49:06  430410
Что вы обычно делаете глобальными переменными? Я просто не совсем понимаю когда их нужно использовать. Хорошая ли идея сделать глобальной переменной ссылку на объект игрока?
Аноним 07/08/17 Пнд 00:28:53  430412
>>430411
Анти-паттерн.
Аноним 07/08/17 Пнд 00:35:47  430413
>>430397
>Как грамотней реализовать? Создать один скрипт, который хранит пиздюков: удаляет/добавляет в список, а остальные башни лезут к нему за инфой?
Да.
>Как сделать так, чтобы этот срипт запускался вперёд скриптов башен, чтоб инфа была актуальна?
Awake? Ну или в редакторе можешь поменять очередность выполнения скриптов. Но через Awake, думаю, все решится.
Ну и если хочешь ссылаться башнями на эту логику, то вызываешь в этой логике ивент по удалению/добавлению пиздюка, типа OnPizdukiListChanged. Ну и в классе башни подписываешься на этот ивент. Через ObservableCollection можно ебануть, например.
Аноним 07/08/17 Пнд 00:39:58  430414
>>430397
Алсо, всякие там "Find" и "GetComponent" без крайней надобности не используй, ну или когда не важны фпсы, например(загрузка сцены там, еще чего-нибудь). Конкретно здесь они, например, нахуй не нужны. Да и вообще, я бы сказал, нужны крайне редко или не нужны вовсе - нужно лишь сделать нормальную архитектуру.
Аноним 07/08/17 Пнд 02:46:59  430427
>>430420
Я, например, делаю игру один и могу сказать, что вообще не похуй. Захочешь сделать какой-то скилл, например, или предмет там - тебя трахнет твой собственный код, а точнее ты сам себя трахнешь. И будешь сидеть и голову ломать, как в своей же понаписанной архитектуре что-нибудь добавить. Или будешь переписывать и в итоге придешь к тому, что надо было сделать изначально.
С нормальным же кодом, архитектурой, решение новых задач становится легким, приятным и лаконичным. Твой код сам тебе подсказывает решение и даже может делать за тебя всю работу.
Аноним 07/08/17 Пнд 05:03:10  430433
>>430427
>скилл
>синглтон
Твоя проблема не в синглтонах, а в том, что ты не очень умный.
Аноним 07/08/17 Пнд 06:46:04  430435
>>430335
>Написано же следование приоритетной цели, если текущий план валиден, то ничто не прервёт стелс.
я то про сохранение стелса на протяжении нескольких планов.

>Дженерик собирание грибов с динамическими прекондишенами. У нас же обратный поиск, планер будет знать контекст подбирания предмета.
а тебе непонятно чтоли что прекондиции зависят от контекста? например грибы собрать чтобы сожрать, или собрать грибы чтобы сделать из них яд, или в конце концов собрать грибы кинуть их во врага. ты контекст чтобы собрался в гоап совать? обратный поиск то это всего лишь нахождение пути с конца, а не с начала, когда ты от цели идешь к началу собирая в статус мира не эффекты, а рекваерменты. контекст ты по прежнему сунуть только в эффекты и рекваерменты действия можешь. представить то можешь какая у тебя мешанина из флагов будет? или что, ты собрался сделать полный пиздец но ещё хранить флаги о контексте в вариантах действия с самим предметом? типа, вот гриб лежит, ядовитый, у него два действия "поднять чтобы кинуть во врага" и "поднять чтобы сделать яд"? и они стопроцентно ничем не будут отличатся до конца жизни проекта кроме как одним флагом?

>Да. Часть действий можно конечно свернуть в одно, если это не влияет на планирование.
как бы я тебе уже давно говорю. разные варианты одного и того-же действия вообще не влияют на планирование. они у тебя влияют ололо на паттерн передвижения только почему-то. даже при отсутствии передвижения.

>Процедурно извне.
>Некорректное сравнение со стелсом. Грустным или радостным персонаж становится извне, что может менять приоритеты целей.
что ещё за "извне"? это вопрос того где хранить переменные с модификаторами чтоли? типа у ИИ есть ещё какой-то внешний советчик который говорит ему его статус?

>Но в стелс АИ должен уходить сам, добивая своей цели по уничтожению противника.
как-бы стелс это такой-же модификатор трешхолдов для целей же. ИИ хопа в стелсе и сразу у целей связанных с стелсом меняются приоритеты.

>>430341
>Сделал простенький дисплейчик - картинка и текст, прилепил на него скрипт
если у тебя такая вложенная иерархия то не имплементируй Start/Awake/OnEnable у его чайлдов, а просто заведи метод у них "DoShit(ParrentClass)" и вызывай его из верхнего класса передавая в параметры самого себя. ну или ещё лучше - паредавай не инстанс класса, а интерфейс.

>>430397
на самом деле поиск через FindGameObjectsWithTag мало чем отличается от того что ты сам будешь список говна составлять, юнити же не ходит по всей сцене когда ты это вызываешь, оно тебе просто список говна возвращает. хотя применимо это разве что для тагов. на мой вкус у тебя всего одна проблема - нахождение ближайшей цели. тут уже манипуляции в духе дистанции без квадратного корня врядли спасут. может quadtree ебанешь чтобы весь список не перебирать хотя-бы?

>>430410
все что существует в одном экземпляре, или то что регулярно чем-то из этого списка используется.

да, идея хорошая, но НЕ следует пользоватся этой переменной всегда-всегда. например вот надо сказать камере "следуй за игроком" и камера полетела взяв ссылку на игрока и схватила его трансформ. или вот менеджер интерфейса чтобы хочет показать сколько у игрока ХП, лезет в глобальную переменную и смотрит сколько там у него ХП и показывает. а если у тебя там в игре снаряд разорвался, то разумеется лезть в такую глобальную хуйню не следует.
Аноним 07/08/17 Пнд 14:35:03  430613
Есть ли какие-то профиты от использования мультитрединга в юньке? Я так понял, Unity API можно вызывать только из главного потока, соответственно, потоки стоит использовать только для расчетов каких-то своих? Типа построение маршрутов для ИИ, но подвинуть модельку этого ИИ ты не сможешь из соседнего потока хотя можно построить велосипед с передачей команд в главный поток и корутинами, но это другая история

И получается, всё что касается использования ядер и так далее - можно вообще не заморачиваться, ибо никаких настроек в юньке по этому поводу толком нет, а что можно - само разобьётся по нужным ядрам?
Аноним 07/08/17 Пнд 14:55:45  430626
Что вообще такое эти ваши префабы? Я имею в виду, как они хранятся в райнтайме, что они такое? Насколько верным будет утверждение, что это просто ГО, которые Disable+readonly?

Вот допустим есть у меня префаб prefab_manager, он имеет ссылки на все префабы. Так же есть ГО game_manager, которые имеет ссылку на префаб (не ГО!) префаб_менеджера. Когда гейм_менеджер хочет инстанциировать камеру, он делает типа Instantiate(prefab_manager.camera_prefab);

И вот чего я здесь решительно не понимаю, так это почему не выдаёт ошибку о том, что кагбэ экземпляра префаб_менеджера не существует! А ведь camera_prefab это не статическое поле! То есть без создания экземпляра префаб_менеджера мы не должны иметь доступа к полям, ибо их вообще нет нигде, они никому не принадлежат. Но пример абзацем выше работает. Почему?!

Окей. Вот еще пример. Есть в сцене ГО, в скрипте которого написано public SomePrefab sp; и потом в редакторе назначаем ссылку на этот sp - перетаскиваем SomePrefab в инспектор того ГО, который в сцене.

Так как SomePrefab является ссылочным типом, а нигде в коде я не делаю new или присваивание, но при этом экземляр типа SomePrefab доступен, как и все его поля (не статичные!), то получается только один вариант? Юнити имеет ГО этого SomePrefab и мы работаем с ним.

И что, если у меня в качестве этого SomePrefab будет огромный уровень или еще что-то такое с "тяжелыми" компонентами и так далее? Получается, юнити создаёт как минимум по одному экземпляру каждого префаба? Что жрёт оперативку и тд и тп....

Где я не прав? Буду рад любой информации.
Аноним 07/08/17 Пнд 15:04:02  430635
>>430613
йеп. потоки в юнити только для какой-то своей хуйни, а что-то этакое оно сделает само.

ну а профиты разумеется есть когда ты делаешь какую-то хуйню которой в главном треде быть не должно

>>430626
префабы это хитрая сериализация юнити того чего нет в сцене. которые можно передавать по ссылке, например. префаб это не класс, это уже сразу обьект на который можно ссылаться. все ссылки что ссылаются на один префаб - ссылаются на один префаб.

кстати эти ссылки переживают сериализацию юнити, при повторной загрузке они по прежнему будут ссылатся на один и тот-же объект.

у юнити кстати ещё и специальная хуйня существует ScriptableObject которая специально для хранения данных, а не геймобжектов которая так-же сериализуется.
хотя имеет свои минусы.
Аноним 07/08/17 Пнд 15:07:19  430639
>а также ваши доходы ограничены 100 000 долларов в год
Не понял, как это регулируется? Вот встрою я в свое говноподелие трусики на героиню за донат, и кто будет следить за объемом доходов?
Мимо ньюфаг
Аноним 07/08/17 Пнд 15:31:09  430670
>>430059
Чёт я глянул на шейдоры - трудна.
Ну, допустим, я буду использовать сорт оф дисплейсмент и во время игры рисовать по текстуре. А с нормалями чё делать? Никакого волшебного рекалкулейт нет. В интернетах какие-то грандиозные алгоритмы.
Аноним 07/08/17 Пнд 15:48:45  430691
>>430626
>>430635
Вообще, кстати, юнити далеко не всегда создает инстансы обьектов, если тебе интересно. если хочешь то воспользуйся https://docs.unity3d.com/ScriptReference/ISerializationCallbackReceiver.html чтобы узнать когда там че происходит.

впрочем префабы с охуительными массивами в компонентах действительно могут обосрать все.

>>430670
rконечно трудно, там кругом всякие тайные слова.
https://docs.unity3d.com/ScriptReference/Mesh.RecalculateNormals.html это чтоли хочешь
Аноним 07/08/17 Пнд 15:52:38  430696
>>430691
Оно, только мне в шейдоре нужно.
Аноним 07/08/17 Пнд 16:11:31  430705
>>430696
а, это. а хуй его знает, можно самому считать нормали конечно. но вообще как насчет того что иметь две текстуры? одну для дисплейсмента другую для нормалей. можно же на местах куда давят не только глубину брать, но и нормаль того что камера видит и поворачивать её наоборот.
Аноним 07/08/17 Пнд 16:14:50  430708
>>430705
Где это почитать можно? Не совсем понимаю, как это всё с глубиной и камерой. Я предполагал просто рисовать чёрным по серой текстуре.
Аноним 07/08/17 Пнд 16:19:31  430714
>>430708
даже не знаю откуда начать и чего тебе такого дать. почитай про render texture наверно для начала, камера может рендерить туда, а ты берешь оттуда.
Аноним 07/08/17 Пнд 16:22:16  430721
>>430714
а во. https://docs.unity3d.com/Manual/SL-CameraDepthTexture.html отдельная страничка даже есть
Аноним 07/08/17 Пнд 18:24:00  430909
В чем суть сериализации? Каждая вторая статья по юнити говорит мне СЕРИАЛИЗАЦИЯ, СЕРИАЛИЗАЦИЯ!!! МОНОБЕХИ ДЛЯ ЛОХОВ, ScriptableObject ДЛЯ ПОЧОНОВ! и тому подобное.

Но я никак не могу вдуплить. Зачем нам какая-то там сериализация, типа сохранять данные обьекта как последовательность байтов, если мы можем не записывать всё подряд а написать просто пару цифр, подразумевая что первая, например, это LVL, вторая это HP и так далее. Это же быстрее, меньше писанины в файлах, и никаких заморочек с атрибутами и возни с капризами юнити аля "ЭТО Я ХОЧУ СЕРИАЛИЗОВАТЬ, ТО Я НЕ ХОЧУ, БУДУ СБРАСЫВАТЬ" etc

Типа последовательность байтов быстрее считывается, чем просто несколько циферок, несмотря на то что в первом случае размер файла будет гораздо больше?
Или может это как раз для "удобства"? Типа написал чето в стиле "ну-ка, юнька, сериализуй-ка мне объект враг_3182", и типа можно не заморачиваться, какие там переменные хуеменные, позиция, вращение, кадр анимации, итд?
Аноним 07/08/17 Пнд 18:41:16  430943
>>430909
>написать просто пару цифр, подразумевая что первая, например, это LVL, вторая это HP и так далее
писать свою сериализацию то не затрахаешься на каждый тип данных?
Аноним 07/08/17 Пнд 18:46:03  430949
>>430909
Сериализация она разная бывает.
Я десериализую игровые объекты из json-файлов, например. Добавлять новые быстро, удобно, и не требует пересборки проекта. Это первое.
Второе - без сериализации ты не запилишь сейвы.
Аноним 07/08/17 Пнд 18:53:53  430956
>>430909
>мы можем не записывать всё подряд а написать просто пару цифр, подразумевая что первая, например, это LVL, вторая это HP и так далее

Избирательная сериализация, это тоже сериализация. Если ты хочешь делать это сам, то ради бога. Однако изначальный смысл использования Юнити это отсутствие необходимости изобретать собственные велосипеды и тратить на это время. Поэтому оно так и преподносится, дескать всё для тебя заранее запрограммировали, надо только вызвать пару методов.
Аноним 07/08/17 Пнд 18:59:53  430966
>>430956
хуево сделали только. юнити нонстоп сериализует всё подряд, они так и не сделали сериализацию абстрактных переменных. ещё эти манипуляции с hideFlags. гондоны.
Аноним 07/08/17 Пнд 19:25:48  430996
В соседнем треде задавал вопрос, но все скатили в метание говном и троллеркоастер. Спрошу здесь.
Использую [SerializeField] на все поля, которые хочу задавать через редактор, но не хочу делать public. Можно ли так вообще делать? Чем это может быть чревато?
Аноним 07/08/17 Пнд 19:27:13  430997
>>430996
да ничем. сериализует и ладно.
Аноним 07/08/17 Пнд 19:57:38  431052
>>430721
Спасибо. А не становится ли оно всё слишком сложно для мобилки?
Аноним 07/08/17 Пнд 20:26:27  431100
Безымянный.jpg (48Кб, 545x417)
>>428774
совершена первая в истории человечества конпеляция. ну почти.

в общем, я столкнулся с теоретической проблемой. так-как граф один, а функций как минимум ДВЕ (vertex и fragment), то теоретически ведь может получиться так, что будет такой конфликт зависимостей, когда один node использует значение другого, который вычисляется уже после него или вообще в другой функции. Как-то так.
Аноним 07/08/17 Пнд 21:00:25  431147
>>431052
Блять, да ну его нахуй. Ещё эти обрывчатые сведения по самым тёмным углам интернета собирать. Лучше вертексы двигать.
Аноним 07/08/17 Пнд 22:04:14  431265
>>427717 (OP)
Когда выходит Юнити 2017?
Аноним 07/08/17 Пнд 22:05:36  431268
>>431265
В 2017
Аноним 07/08/17 Пнд 22:32:38  431310
g-pe8LXh.jpeg (24Кб, 400x400)
>>431265
Аноним 07/08/17 Пнд 22:35:14  431313
>>431100
В общем я решил сделать по дереву для каждой функции шейдера отдельно.
Непонимаю, почему во всех редакторах все сведено к одному дереву. Это сильно ограничивает программируемость шейдеров
Аноним 07/08/17 Пнд 22:36:19  431316
>>431313
По сути, все что можно напрограммировать в вертексном шейдоре во всех нодовых редакторах - это всего-лишь добавить смешение вершине. И все.
Аноним 08/08/17 Втр 01:34:39  431610
cimg3709.jpg (25Кб, 530x438)
Извиняюсь за нубский вопрос, но как все-таки правильно двигать объекты? Везде блин противоречивая информация.

Как я понимаю: беру трансформу с коллайдером, цепляю rigidbody, без rigidbody двигать коллайдеры табу, ибо они static(или нет?). Далее, если тело кинематическое, я двигаю его через Rigidbody.Moverotation и Moveposition. Или через transform.position/rotation?? Есть разница? Одни пишут что через трансформу - нельзя, другие - что нужно, третьи советуют гонять трансформу вообще без rigidbody.

И еще, с чем все-таки сочетается CharacterController, с кинематическим телом??? Без rigidbody? В примерах вроде кинематика стоит.

Если не кинематическое, вроде все понятно, AddForce/AddTorque...
Аноним 08/08/17 Втр 02:05:51  431691
>>431636
С аддфорсом у тебя получается реалистичная физика, с инерцией и прочее, или ты трением все это гасишь?

Нашел кстати вот исследование по коллайдерам:
https://forum.unity3d.com/threads/moving-static-colliders-performance.474772/

Говорят начиная с Юнити 5 можно двигать статику(коллайдер без ригидбоди), и это даже быстрее, чем кинематика. Кажется, документация пиздит.
Аноним 08/08/17 Втр 03:16:20  431876
>>431691
Черт, кинематика проходит сквозь стены. Как же ее тогда использовать? Неужели есть два стула - реалистичная физика или CharacterController? Или самому писать детектор коллизий...
Аноним 08/08/17 Втр 03:26:03  431900
1323824808029.jpg (76Кб, 640x422)
>>431876
Похоже зря я выебал себе мозги, можно юзать обычное ригидбоди, и двигать его MovePosition. Слишком серьезно подошел к документации, мать ее за ногу.

Еще такой момент, видел в видосе в FixedUpdate домножали вектор передвижения на Time.FixedDeltaTime. Но ведь фикс апдейт и так фиксированный, по идее это сработает просто как константа?
Аноним 08/08/17 Втр 03:53:20  431960
148008596513659[...].jpg (55Кб, 600x440)
>>431908
Ну да, либо как ты говоришь, либо через MovePosition. Кстати глянул, в туториале они двигают через MovePosition в FixedUpdate, домноженный на time.deltaTime(чтобы обеспечить независимость от степа FixedUpdate, который оказывается можно менять). Такие дела.
Аноним 08/08/17 Втр 05:47:12  432211
>>431960
На time.deltaTime умножают чтобы скорость движения была одинаковой при любом FPS.
Аноним 08/08/17 Втр 08:42:10  432542
>>431960
>>432211
Чов? Дельтатайм в фикседАпдейт? Что за хуйня?
Аноним 08/08/17 Втр 11:24:11  432920
sresh.png (43Кб, 342x784)
Учимся программировать на Среше...
Аноним 08/08/17 Втр 11:27:33  432933
>>432920
Проснись, ты программируешь!
Аноним 08/08/17 Втр 12:54:10  433181
1.png (65Кб, 1185x433)
123123123.png (837Кб, 1173x852)
>>431100
клева, да.
а я эти дни потратил на вдумчивое чтение того говна что сунули в это dll. репу почесал и подумал что что-то мне эта хуйня не нравится. в итоге занимался тем что скурчивал сидение и колеса от этого велосипеда и приделывал к своему.
пока приделывал, кстати, обнаружил что есть такая хуйня как GenericMenu которое вот для контекстных меню сделали специально. сразу все стало по человечески.

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

>>431316
ещё вертексное освещение же делать можно и вабще

>>431052
да вроде нормально! рендерить только глубину и нормали то уж мобилки смогут.

>>431147
а ты все равно пытайся! вот у меня только с третьего наскока мотивации хватило. там везде какие-то тайные знания, да. зато какое могущество! смари какую хуйню можно делать в вычислительных шейдорах! здорово же

>>432542
в документации кстати написано что дельтатайм имеет разный результат в апдейте и фиксед апдейте. сам не проверял.
Аноним 08/08/17 Втр 13:24:35  433265
>>433181
Ты откуда такой продвинутый? Я тоже так хочу.
Аноним 08/08/17 Втр 14:00:44  433342
>>427717 (OP)
Посоны, а есть тут какие-нибудь КОМАНДЫ? Чтобы сидели в своих сычевальнях и вместе делали что-то. Есть такие? А можно к вам?
Аноним 08/08/17 Втр 15:11:01  433473
>>433181
> в вычислительных
Я и простые-то осилить не могу. А в чём соль вычислительных - даже не понял. В том, что они могут вернуть какую-то информацию процессору? И с мобилками не понял. Будто они плохо дружат.
Аноним 08/08/17 Втр 15:20:38  433492
Ну что вот за хуйня
Пытаюсь выстрелить из калаша процедурно созданным шаром--
он летит прямо как надо,но как только я через instantiate стреляю префабом пули -- она летит в точку 0,0,0 или хз еще куда,при том что код тот же самый,ниче не меняется,префаб пули никакого кода не исполняет,повернут как надо,все 10 раз перепроверил
Аноним 08/08/17 Втр 15:38:50  433526
Unity 2017-05-2[...].png (223Кб, 1168x696)
Unity 2017-05-2[...].png (209Кб, 693x726)
Unity 2017-05-2[...].png (174Кб, 1168x718)
Unity.png (122Кб, 1080x696)
>>433265
тогда садись и крути это говно днями.

>>433473
вернуть информацию могут в общем-то и обычные если похитрить. но в целом да, это вот написание программы для выполнения на видеокарте. если надо сделать какие-то вычисления с плавающей запятой тяжелые то на видеокарте то они за мгновения делаются. там же добрые несколько терафлопсов прохлаждаются. а круты то они много чем. например тем что внутри нескольких потоков можно синхронизировать память. например смотри на картинки.
вот где точки зеленые рисует их обычный шейдор, потом в этот буффер лезет вычислительный шейдор, двигает их там и они очень очень быстро крутятся вокруг выбранной мной точки. и их там я поставил чтоли лол десять миллионов. а фпс так и не просело. очень понравилось крутить эту тучу точек.
или например там где цыферки это какраз синхронизация памяти. группы потоков в общую память суют свой индекс, а он потом суммируется в первом у группы потоке.
или там где треугольник в квадратике - это прототип того что происходит с кубом без дна и верха. что-то более практичное. желтые линии это границы этих кубиков, шейдор выдает минимальную и максимальную высоту у нужной мне фигуры конкретно в этом месте.
вот какую-то тяжелую симуляцию с этой магией делать вообще заебись.

ну а про мобилки - мобилки чтото могут. наверно то что я предложил с тайной камерой они тоже смогут. я не знаю, я не проверял.

>>433492
да ты код нам дай, мы же не провидцы
Аноним 08/08/17 Втр 15:47:00  433537
>>433526
Впечатляющая штука. А может ты ещё и литературы по ним подкинешь? Или видосиков на трубе хватит? Ну и, собственно, куда их цеплять? Обычный в материал втыкается, а этот куда?
Аноним 08/08/17 Втр 16:00:06  433558
>>433537
по ним информации довольно много можно найти на самом деле, она больше собрана в кучу. вон на хабре например приятная статья была https://habrahabr.ru/post/248755/ правда про то какие индексы каким тредам присваиваются нигде нормально не рассказывают и там тоже есть свои тайные слова которые можно в код добавлять.

цеплять их никуда не надо, надо создать через Create>Shader>Compute Shader, потом сослатся на него, сунуть в него данные, взять кернел и сказать ему чтобы он делал все. а потом забрать то что он сделал. или не забирать а заставить другой шейдор залезть туда и нарисовать.

с мобилками правда оно не особо дружит, если тебе это важно. но хоть с синтаксисом ознакомишься, может после этого и в обычные шейдоры проникнешь.
Аноним 08/08/17 Втр 16:04:12  433563
>>433558
Во, отлично, спасибо. Ну а на ведре потом сам гляну, как оно будет себя вести.
Аноним 08/08/17 Втр 16:07:27  433568
>>433181
>у меня есть схожая проблема. нельзя чтобы на графе были замкнутые круги.
лел, тоже об это подумал. Я так понимаю, что такие закольцованые ноды - это ошибка. Как это во всяких Shader Forge сделано, интересно.

А как-ты вычисляешь значения в своих нодах?
Аноним 08/08/17 Втр 16:22:55  433594
>>433568
иерархично снизу вверх. в прошлом прототипе у меня были ноды-ассеты, где в качестве инпута были собственно всякие ассеты. какие-то ноды рисовали траву, какие-то деревья, какие-то текстурки на земле, какие-то геймобжекты расставляли всякие вроде грибочков под деревьями. ноды-ассеты смотрели: "у нас есть такие слоты, граф, давай мне инпут из этих слотов". граф лез в ноды которые присоединены в этот слот и просил аутпут уже у них, а если ещё и этим нодам нужен какой-то инпут то так и следовал по цепочке до самого верха. ну и все это разумеется громко ругалось в консоль если я пытался применить граф с нодами где не заполнены слоты с обязательным инпутом.

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

а в шейдор фордже не знаю. я им не пользовался. наверно примерно так-же. проверяют и кнопка "сделать шейдор" не включается пока граф не валиден. наверно тоже проверяют всю цепочку чтобы левые ноды смотрели только в сторону инпута, а правые только в сторону аутпута.
Аноним 08/08/17 Втр 16:26:58  433605
>>433594
хотя кстати хуй даже знает как поступать с всем этим многообразием типов. всякие там float float2 float3 float4 float4x4 и так далее то. для каждого типа свои специфичные ноды чтоли писать?
Аноним 08/08/17 Втр 16:39:39  433623
>>433563
кстати чуть не забыл. http://on-demand.gputechconf.com/gtc/2010/presentations/S12312-DirectCompute-Pre-Conference-Tutorial.pdf обязательно прочти. на тему оптимизации. там пошагово на пальцах обьясняют как можно сделать очень быстрым что-то такое элементарное как суммирование всех элементов массива.
Аноним 08/08/17 Втр 16:51:28  433641
sfssmainpagea.jpg (545Кб, 1613x907)
>>433594
>но как такую схему перевести в текст у меня довольно мутные идеи
у меня пока наоборот, при компиляции все ноды добавляются в список снизу-вверх, а потом выполняются сверху вниз. идея в том, что каждая node это что-то вроде сниппета кода.

я имел ввиду обновление нод при изменении параметров. всякие текстурки там в риалтайме.
Аноним 08/08/17 Втр 17:01:57  433660
>>433641
а, предпросмотр промежуточных результатов. а если честно хуй его знает. не выглядит как то что следует делать шейдорами. может сделать в нодах имплементацию на шарпе специально для предпросмотра результатов?
Аноним 08/08/17 Втр 17:15:15  433683
Кто-нибудь продажей ассетов в юнити-сторе занимается? Что там лучше всего покупается, кроме мошн-паков?
А то смотрю, количество юнити-лохов всё растёт и растёт, похоже на них можно неплохо зарбатывать, но слабо представляю, что пользуется спросом. Шейдеры? Расширение функционала самого движка? Гуи? Наборы "сделай игру жанра Х"?
Аноним 08/08/17 Втр 17:47:41  433728
>>433683
Чтобы в сторе поделие продавалось, мало сделать что-то нужное всё то, что юнети не предаставляет из карёпки (AI, диалоги и т.д.), но нужно и понятно преподать: тьюториалы на ютюбе, практичные примерчики. По статистике у таких и больше покупают.
Аноним 08/08/17 Втр 18:15:11  433739
>>433623
Далеко я не уехал.
Аноним 08/08/17 Втр 18:22:35  433741
>>433526
так дело не в коде,код работает когда создаю шар
а когда создаю префаб он не работает
я думаю это баг движка
Аноним 08/08/17 Втр 18:29:19  433743
>>433683
я за так отдаю свое. в топ пэйд долгое время висит А*. вообще я сомневаюсь что можно продать что-то из разряда того что юнити напильником дорабатывает и надо всем. конкурентов много, сделать лучше чем они сложно. продавать красивые модельки и анимации скорей всего лучший вариант.

>>433739
это ожидаемо и я говорил

>>433741
думаю это твой баг, а не баг движка. поэтому давай показывай все, а мы подумаем кто виноват и как это исправить.
Аноним 08/08/17 Втр 18:34:17  433745
Unity 2016-02-1[...].png (724Кб, 1168x918)
Unity 2016-02-1[...].png (540Кб, 1144x796)
Unity 2016-02-1[...].png (302Кб, 1144x796)
>>433743
кстати о багах юнити. покажу один старый но забавный. до сих пор никаких идей как же это вышло. воспроизвести не смог. обычный вид сцены, слегка необычный вид сцены, вид сцены когда я камерой покрутил
Аноним 08/08/17 Втр 18:42:25  433747
>>433745
Всё очень просто.
https://www.youtube.com/watch?v=ilF5AAf41s0
Аноним 08/08/17 Втр 22:04:58  433792
jSxj3Dg5yg.jpg (379Кб, 1920x1080)
n8WACCeRrLY.jpg (327Кб, 1920x1080)
PBYg3f-wVo.jpg (310Кб, 1920x1080)
ZgmrkoegBmE.jpg (377Кб, 1920x1080)
Ну а я sypermarket делаю.
Аноним 08/08/17 Втр 22:05:25  433793
>>433792
> sypermarket
Простите, я обдолбан.
Аноним 08/08/17 Втр 22:23:47  433798
>>433797
>> 3 пик очень всратый из-за пола
- Это "холодильная камера"
По этому пол там и такой =)
Аноним 09/08/17 Срд 00:26:03  433845
test1.jpg (1351Кб, 1920x1080)
test2.jpg (1521Кб, 1920x1080)
test3.jpg (1558Кб, 1920x1080)
>>433804
?
Не совсем понял как бы..
Аноним 09/08/17 Срд 02:58:29  433865
>>433845
>УЕЧ
>вконтакте
>AIMP
>спизженные substance painter, photoshop и maya
>васянская тема
Эталонный набор говноеда
Аноним 09/08/17 Срд 04:28:54  433870
Бывает, у объекта есть дочерние объекты, которые должны двигаться за ним, но не должны вертеться вместе с ним. Вот думаю, стоит их отделять через transform.parent = null, или проще вертеть каждый фрейм, возвращая им изначальный поворот? Первое решение ведет к дополнительным усилиям при включении/выключении объекта, и при повторной инстанциации(нужно следить за остатками). Может есть какое-то элегантное решение проблемы?
Аноним 09/08/17 Срд 06:08:22  433874
>>433870
Риджидбади на дочернем объекте есть?
Аноним 09/08/17 Срд 06:23:56  433875
>>433874
Нету.
Аноним 09/08/17 Срд 07:17:51  433878
>>433875
Ну тогда что-то типа такого.

void Start () {
Quaternion origRotation = transform.rotation;
}

void LateUpdate () {
transform.rotation = origRotation;
}
Аноним 09/08/17 Срд 07:24:56  433879
>>433878
А, не, объявлять в старте не надо, там только определять.
Короче, ты понял.

Quaternion origRotation;

void Start () {
origRotation = transform.rotation;
}

void LateUpdate () {
transform.rotation = origRotation;
}
Аноним 09/08/17 Срд 09:40:13  433893
>>433342
Может есть какие конфочки?
Чтоб там можно было смотреть дейли прогресс всяких упоротых и задовать и отвечать на глупые вопросы?
Аноним 09/08/17 Срд 10:32:00  433908
Где бест практисес для структуры проекта и основных классов на ивенты и интерфейсов можно посмотреть?
А то хочу влезть в юньку, ничего не знаю, и хочу поддерживаемый проект, чтобы хватило сил докончить
Аноним 09/08/17 Срд 11:18:26  433916
А чего, поменять цвет индивидуального вертекса нельзя? У меня так не работает. Приходится менять в копии массива и присваивать массив целиком.
Аноним 09/08/17 Срд 11:19:16  433918
>>433865
>> Эталонный набор говноеда
Всё, откукарекался?
Аноним 09/08/17 Срд 11:43:56  433929
>>433916
Ты тупой.
Аноним 09/08/17 Срд 11:56:07  433933
>>433929
О, заебись, заработало. Спасибо.
Аноним 09/08/17 Срд 13:31:43  433958
Юнитач, приводить типы в апдейте это плохая идея, да? Да.
Аноним 09/08/17 Срд 13:38:51  433960
Без имени-1.png (8Кб, 710x132)
Почему я таким образом всегда получаю позицию первого по порядку колеса, которое не в воздухе?
Аноним 09/08/17 Срд 14:46:19  433977
>>433960
Блять. Пиздец какой-то. Нихуя не понимаю.
Аноним 09/08/17 Срд 15:17:24  433982
Девач, есть специфическая проблема. Хочу перевести чужую игру на юнити. Вопрос: как можно это сделать? Можно или из уже скомпилированной игры вытащить исходники? Можно ли отдельно найти файлы с текстом? Как?
Аноним 09/08/17 Срд 17:48:52  434028
>>430059
>что у тебя за проблемы такие? нахуй ты в трансформ вообще лезешь если у тебя RB? если у тебя RB то манипуляции уже делай все через него. у тебя же специальные AddForce, AddTorque и прочие есть которые гарантируют тебе что все будет через физон.
У меня проблема в том, что если я мучу передвижение через физон, то игра резко становится очень требовательной, я хз почему так. Ну мей би это как-то с мобами связано, т.к. если я их удаляю, то всё ок становится.

Кстати, а вот касательно мобов вопрос. Им же по сути вообще rigidbody не нужен, только при смерти, по логике?
Аноним 09/08/17 Срд 18:01:44  434031
dsc00820.jpg (621Кб, 1584x1600)
Разбираюсь вот с Фотоном, прикрутил по дефолту PhotonTransformView, а там такое написано:

currentPosition = Vector3.Lerp( currentPosition, targetPosition, Time.deltaTime * m_Model.InterpolateLerpSpeed );

Это я чего-то недопонимаю, или у них детская ошибка в лерпе? Оно же неравномерно двигаться будет. Надо видно свой скрипт писать. Если есть фотонщики, каково ваше мнение?
Аноним 09/08/17 Срд 18:01:56  434032
>>433982
>вытащить исходники
Нет.
>найти файлы с текстом
Если автор их выкладывал, то можно.
Аноним 09/08/17 Срд 18:08:32  434033
>>433958
Тащемта нет.
И вообще не надо ничего оптимизировать, если оно не тормозит.
Аноним 09/08/17 Срд 18:10:48  434034
>>433870
Сделай им обоим общего родителя, который двигается, и вращай только того чайлда, которого нужно.
Аноним 09/08/17 Срд 18:20:40  434038
game.png (4Кб, 287x226)
>>434032
Потыкался. Нашёл файлы без расширения, открыл. Весь текст в 50+ файлах примерно такого вида. Втупую заменил одну фразу на русский перевод - игра кмк просто не стала загружать этот файл, т.е. запустилась, но на сцену с заменённой фразой не перешла. Вернул обратно - нормально. Поменял кодировку файла (они изначально в ansi) - игра крашнулась.
Аноним 09/08/17 Срд 18:38:50  434043
14205117567140.jpg (106Кб, 707x682)
>>434038
> Втупую заменил одну фразу на русский перевод
Аноним 09/08/17 Срд 18:55:07  434053
>>434043
Я пытался попробовать даже откровенную хуйню.
Аноним 09/08/17 Срд 19:19:09  434064
>>433893
есть одна но ты туда не ходи там какие-то мудаки сидят.

>>433958
на самом деле не особо. что-то на уровне "похуй".

>>434028
включи ка профайлер в юнити и посмотри.
Аноним 09/08/17 Срд 19:24:30  434068
>>427717 (OP)
Посоветуйте, как более эффективно вкатиться в эти ваши скрипты? Я неделю пытаюсь разные фишечки реализовывать, просто, чтобы научиться скриптить.

Не смотря на то, что я никогда в жизни не занимался программированием, мне вроде всё кажется интуитивно понятным. Но проблема в том, что если я хочу хоть что-то реализовать, то мне надо сидеть и часами гуглить свою вещь. Почему часами? Да потому что я не знаю английский. Пробовал почитать книгу "Юнити в действии", но как и везде, там описаны какие-то частные вещи и, если, я, например, хочу сделать продвинутый ИИ или что-то в этом роде, то уже зная и представляя, как это будет работать, я просто гуглю сами команды языка. Собственно, есть ли кто-нибудь, кто как я вкатывался с нуля и, в итоге, нормально так умеет? И что можете посоветовать для более качественного развития?
Аноним 09/08/17 Срд 19:46:42  434073
Есть смысл читать книгу из шапки, если я имею опыт в проганье, но не имею в использовании игровых движков? Или книга для совсем ньюфагов?
А то я к книгам по разработке отношусь предвзято.
Аноним 09/08/17 Срд 20:17:14  434082
>>434064
Можно организовать другую конфу. И редкостных мудаков кикать. Просто я хз, есть ли вообще желающие. Т.к. может и тут хватает общения?
Запилить дискорд сервер то просто
Аноним 09/08/17 Срд 20:19:06  434084
>>434068
>Да потому что я не знаю английский.
Тебе нужно учить не скрипты, а английский, сынок.
Аноним 09/08/17 Срд 20:20:47  434085
>>434073
> Есть смысл читать книгу из шапки, если я имею опыт в проганье, но не имею в использовании игровых движков?
Читай внимательнее, блин.
> Если ты уже умеешь использовать язык
> Крайне рекомендуется купить/скачать книгу Unity in action

Перевожу: книга как раз для тех, кто умеет кодить, не не знает движок.
Так что ответ на твой вопрос: да.

Научитесь же вы читать уже
Аноним 09/08/17 Срд 20:21:24  434086
>>434085
*но не знает движок
Аноним 09/08/17 Срд 22:08:33  434114
>>434038
Реквестирую какой-нибудь материал про юнити и кодировки, потому что чую проблему в них. Как юнити работает с кодировками?
Аноним 09/08/17 Срд 22:29:42  434116
8.png (90Кб, 400x388)
> length =5;
> vertPerSide = 10;
> float step = length / vertPerSide;
> print(step);
> 0
Я, наверное, с ума схожу, да?
Аноним 09/08/17 Срд 22:35:30  434119
energybeambylyr[...].jpg (114Кб, 500x900)
Как сделать эффекты энергетических лучей(пиу-пиу)? Есть какие-нибудь годные туториалы? Что мне приходит на ум, так это пустить частицы префаером с вращением, но как-то не уверен, опыта очень мало.
Аноним 09/08/17 Срд 22:36:34  434120
>>434116
float a = 5;
float b = 10;

void Start () {
float c = a / b;
print (c);
}

Выдаёт 0,5. Ищи где ты наговнокодил.
Аноним 09/08/17 Срд 22:39:40  434123
>>434120
Блять, да у меня ж инты делились. Вот оно что. C (float) перед делением всё нормально.
Аноним 09/08/17 Срд 22:48:26  434126
>>434114
Да какого же хрена он читает скрипты только на ansi? В utf вылетает, у меня идей нет.
Аноним 09/08/17 Срд 22:52:21  434127
>>434119
Еще нашел вариант - эмитить из цилиндрического меша в разные стороны, вроде как живенько, но частиц получается дофига. Как сделали бы батьки?(инбифо пошли в магазин и купили ассет за 300$)
Аноним 10/08/17 Чтв 09:29:59  434235
>>434068
лучше английский выучи чтобы хоть что-то на базовом уровне понятно было, хоть в процессе поиска доучишь. это анальное страдание будет у тебя без этого

>>434073
если погромировать умеешь то документацию лучше начни читать, а не книжки. решай проблемы по мере их поступления. но для начала что нибудь простое ебани чтобы освоится

>>434082
это так не работает

>>434119
https://www.assetstore.unity3d.com/en/#!/content/5141
вон старый экзампл почитай. если бы я хотел сделать какое-то там вращение то я бы наверно сделал процедурненько цепочку рэйкастов чтобы лучик пускать, потом вокруг него ещё повращал бы сколько-то линий красиво через лайн рендерреры вычисляя их позицию относительно основной линии, ебанул бы партиклов красивей с обоих концов.
Аноним 10/08/17 Чтв 14:00:09  434262
>>434068
> Пробовал почитать книгу "Юнити в действии"
Нахуя ты читаешь книгу, которая рассчитана на тех, кто уже знает язык, при этом сам язык ты не знаешь?
Аноним 10/08/17 Чтв 15:08:45  434272
9O0LwXruMJQ.jpg (16Кб, 500x340)
Вот у меня есть префаб объекта 2D. Как сделать так, чтобы я мог поместить его на сцену, и с помощью ползунков настроить цвет разных его частей. Куда копать? Я так понимаю чтобы делать это "на лету" используется шейдеры, но мне нужно просто в эдиторе настроить его, поставить куда надо, и забыть.
Аноним 10/08/17 Чтв 16:38:46  434284
>>434272
Погуглил сейчас про это. Насколько я понимаю нужно разделить мой спрайт на части с одинаковым цветом. И на каждую часть применять renderer.color = new Color(blabla); в Start(), при этом сделать public цвет, который можно выбирать в инспекторе. Всё правильно?
Аноним 10/08/17 Чтв 16:49:34  434286
Делаю 2д анимацию.
Эта сука почему-то пропускает крайние ключи (последний или первый). НЕзависимо от того, как работает ключ - включение геймобжекта / спрайтрендера / кадры спрайтшита.
Не улавливаю где проёб.
Аноним 10/08/17 Чтв 19:26:21  434478
>>434085
>>434235
Ну и кому из вас верить?

Вот и в интернетах в комментах на хабре и проч мнения диаметрально противоположные по этому поводу, надеялся анон подскажет.
Хуй с вами, буду параллельно читать книгу и пробовать чот свое по докам и гуглежу.
Аноним 10/08/17 Чтв 19:28:03  434481
>>434478
> Ну и кому из вас верить?
Обоим. Книга для тех, кто язык уже знает. И английский учить тоже надо.
Аноним 10/08/17 Чтв 19:31:23  434487
>>434478
>>434481
А ты не тот, кто про английский спрашивал.
В любом случае, можешь и документацию курить и книгу прочесть. Там 300+ страниц всего, за несколько вечеров осваивается. Лишней уж точно не будет, особенно если в движке слабо ориентируешься.
Аноним 10/08/17 Чтв 22:01:40  435270
>>434262
Нужно ли умножать на дельтатайм при движении через rb?
Аноним 10/08/17 Чтв 22:47:35  435504
14251471382542.jpg (350Кб, 1920x1200)
Как писать свой шейдер который при этом поддерживает встроенные функции освещения и всяких нормал-карт? Шейдер ведь один на материал. Нужно тупо копировать свой код в код нужного шейдера, или как?
Аноним 10/08/17 Чтв 22:57:21  435559
Unity 2017-08-1[...].png (76Кб, 1168x796)
Unity 2017-08-1[...].png (413Кб, 1168x796)
Unity 2017-08-1[...].png (1114Кб, 1168x796)
о. а мое говно сегодня даже стало что-то делать! травку садит, текстурки накладывает, деревья делает.

>>434478
верь мне во всем. вообще нахуй тебе какие-то книги читать? погромировать то на каком языке умеешь уже? в юнити конечно есть какие-то особенные фичи касаемые взаимодействия компонентов и вот много уже за тебя сделали. первое может быть не очевидным, второе вот только с гуглом и найти можно.

>>435270
умножать то не нужно, но полезно.

>>435504
сейчас я дам тебе что-то очень интересное. обязательно прочитай.
http://beta.unity3d.com/download/472613c02cf7/builtin_shaders-2017.1.0f3.zip
Аноним 10/08/17 Чтв 23:00:37  435577
>>427800
2 объекта. 1 ближе, 2 дальше. Если 1 объект встанет на одну линию со вторым, то для второго (hit.transform.tag == "Object" && hit.distance < minDist) выполняется.
Аноним 10/08/17 Чтв 23:01:05  435582
>>435559
>погромировать то на каком языке умеешь уже
Работаю жс-ёбом не вебмакака, с шарпом имел теплые дружеские отношения.
>в юнити конечно есть какие-то особенные фичи касаемые взаимодействия компонентов
Например?
Аноним 10/08/17 Чтв 23:02:24  435587
>>435559
>сейчас я дам тебе что-то очень интересное
т.е. таки нужно вживлять свой код в готовые шейдеры? Оке, спасибо.
Аноним 10/08/17 Чтв 23:06:33  435603
>>435582
если жс то че, нормально все. почти одно и то-же.

а например вот есть чтото особенное как SendMessage или SendMessageUpwards которое удобно. ещё и имеет разную производительность в едиторе и сбилженном проекте.

>>435587
я к тому что прочитай то как можно делать освещение, нормал мапы и прочее.
Аноним 10/08/17 Чтв 23:09:26  435608
>>435587
https://docs.unity3d.com/Manual/SL-SurfaceShaders.html
Аноним 10/08/17 Чтв 23:34:03  435651
>>435582
а, кстати, вот стоит ещё сказать особенное. почитай про то как юнити обманывает систему с удалением обьектов. если сделать Destroy(object) то объект то удалится. но как по твоему что станет с ссылками на этот объект у тех у кого она уже есть? или ещё лучше - как на это будут реагировать коллекции вроде хэшсета?
почитай про сериализацию в юнити, тоже интересное чтиво. можно вон теоретически создать инстанс абстрактного класса.
про корутины как заменитель тредов и даже такой базовой хуйни как апдейт почитай.
Если собрался костыли немного писать то почитай про Event.current и control id.
у юнити то много всякой удивительной хуйни творится которая в целом в большинстве своем довольно могущественная но в ней могут творится удивительные вещи.
Аноним 11/08/17 Птн 13:25:52  436262
>>435559
Мне нравится твой редактор. Он лучше дефолтного.
Я тоже пытался сделать свой, но не осилил прокрутку. Да и вообще что-то приуныл от осознания того, что придется слишком много времени потратить на изучение всратого юнитивского гуи.
Аноним 11/08/17 Птн 15:30:36  436290
Есть ли в юнити система анимации как во флеше(нативно или плагином) чтоб у каждого обьекта были кадры и в разных кадрах я мог добавлять обьекту другие обьекты(допустим в 7 кадре вложить меч в руки) и у этих обьектов были свои ленты в которых я добавлю обьекты?И чтоб это все можно было в wyswig редакторе редоктировать ручками
Аноним 11/08/17 Птн 15:42:57  436296
>>436290
Рядом с кнопкой "сделать пиздато"
Аноним 11/08/17 Птн 16:22:20  436300
>>428774
Итак, прошла первая неделя. За это время было сделано ничего.
В общем, у меня появилась некая теория как это все сделать. Я хочу сделать что-то вроде простого ShaderDOM, из которого затем генерировать код шейдора.
Так-же у меня появилась идея как можно не разделять граф на 2 шейдора. Для этого нужно один и тот-же граф конпелировать в 2 прохода: суть в том, что во время вертексного прохода, все связанные с вертексным шейдером ноды запишут какой нужно код, а во время пиксельного - соответственно запишут пиксельный код. Правда я не уверен насчет того, что это все будет работать.

В общем, я пока решил сделать просто демку генерации surface-шейдера из графа. Без preview и прочих мокрописек.
Аноним 11/08/17 Птн 17:09:33  436331
>>436290
> редоктировать
От слова "редоктор"?
Аноним 11/08/17 Птн 17:29:07  436353
Дратитя. Я у мамы параноик, поэтому хочу зашифровать код своего юни-поделия, чтобы любой школьник не мог вытащить через ILDasm или типа того. Да-да, знаю, что это глупо и не надо нахуй.

Так как я ТРУЪ-indei читай "нищеброд" то использовать проприетарные дорогие обфускаторы не могу. И тут я подумал, а что если практически весь код, ну скажем кроме гейм-менеджера, перенести в ДЛЛ на с++?

1. Не потеряю ли таким образом кросс-платформенность?
2. Я слабо представляю, как это делается и какой обьём работы предстоит. Достаточно ли будет написать типа враппера какого-то, ну регистрация функций, да и всё? Насколько вообще ебанутая идея?
3. И как думаете, на производительность сильно повлияет?
Аноним 11/08/17 Птн 17:46:18  436374
>>436353
Анус себе зашифруй, пес.
Аноним 11/08/17 Птн 17:48:43  436375
Можно ли проверять радиус между лучами, выпущенными из одной точки? Хз, понятно ли сформулировал. Например, из объекта выпущен луч вперёд и влево, соответственно у них радиус 90 должен выйти.
Аноним 11/08/17 Птн 17:55:51  436376
>>436375
Это угол, а не радиус. Ещё не проходили что ли?
Аноним 11/08/17 Птн 18:22:00  436381
>>436375
Косинус угла между векторами равен скалярному произведению векторов, поделенному на произведение модулей векторов.

В принципе можно ручками посчитать. Простейшие вещи, в школе такое проходят.

Ты, дружище, видимо совсем не в теме. Необязательно, конечно, матан и сопромат знать для инди-геймдева, но какие-то школьные основы не помешало бы.

Можно и так:
Vector3.Angle (a, b);
Аноним 11/08/17 Птн 18:25:16  436382
Можно ли проверять котангенс между точками, расположенными на одной прямой? Хз, понятно ли сформулировал.
Аноним 11/08/17 Птн 18:27:25  436383
>>436382
Ну продолжил бы. Типа "Например, между точкой А и точкой Б 2 метра, соответственно у них котангенс 2 должен выйти."
Аноним 11/08/17 Птн 18:29:33  436384
p.png (326Кб, 1180x810)
>>436262
я бы дал свой да он на самом деле тоже так себе. просто приспособил под свои нужды и не имплементил всякую хуйню вроде множественного выбора нод. и реализовал соединение не через перетягивание а просто через нажатие двух кнопок в гуи. и не писал эту ерудну с пропертями у нод, ололо. даже не знаю нахуй это сделали.
у юнити то на самом деле этот лэйаут гуи довольно клевый, советую ознакомится.

прокрутка у меня буквально заимплеменчена как
if(Event.current.type == EventType.MouseDrag && graphExtents.Contains(mousePosition)) {
scrollPosition -= Event.current.delta;
needRepaint = true;
}

>>436300
а я кстати таки сорт оф сделал для некоторых важных нод. можно нажать пкм и сказать чтобы оно показало. например если нажать на превью ноды "Biome bool". правда пришел к выводу что это надо делать отдельно для каждого слота, или чтобы там был предпросмотр с закладками чтобы каждый отдельный аутпут слот мог показать что он там другим передает.

>>436375
уверен ли ты что ты хочешь именно радиус? ведь он 90 должен быть.
Аноним 11/08/17 Птн 20:31:41  436407
Привет всем. Я абсолютный новичок в геймдевелопинге, но у меня есть очень годная идея для игры. На данный момент осваиваю юнити и C# + прописываю диалоги, квесты и прочий текстовый контент + рисую арты для игры.
Хотел бы найти такого же новичка для создания чего-то вроде команды, ибо в одного пилить очень трудоемко. Если говорить кратко, то хочу сделать нечто вроде гибрида This is the Police + Космические рейнджеры 2. Если вдруг заинтересовало, то предлагаю скооперироваться и разрабатывать её вместе - если получится реализовать задуманное, то все доходы 50/50.
Мой скайп - the_twixxie
Аноним 11/08/17 Птн 20:39:45  436408
>>436407
>у меня есть очень годная идея для игры
Расскажи ка.
мимо-менеджер-ЕА-пизжу-идеи-на-дваче
Аноним 11/08/17 Птн 21:01:45  436412
>>436376
>>436381
>>436384
Я в школе еще не проходил просто этого, спасибо большое.
Аноним 11/08/17 Птн 21:57:57  436426
scrin.jpg (33Кб, 786x98)
Друзья, подскажите, пожалуйста, где я проебался? Я реально понять не могу, тут всего 2 строчки, почему он с некоторых сторон не видит игрока?
Вот видео, если я хуёво(плохо) объяснил проблему:
https://www.youtube.com/watch?v=uLAvxn4-3zE
Аноним 11/08/17 Птн 22:27:54  436443
scrin.jpg (21Кб, 464x416)
>>436426
Понял, в чем дело.
Аноним 12/08/17 Суб 00:14:00  436470
Чуваки, я щас подумал, а почему нельзя написать шейдер на чистом си шарпе? Прикиньте как удобно бы было бы? Ну а чо, типа какой-нибудь крипт похожий на монобихейвиор и библиотека человеческая и там прям хуяришь на си шарпе, а потом они само это переписывает в шейдоровский язык. Прикиньте, было бы круто? Можно было бы изменять шейдер в рантайме, ну вообще все было бы легко и прсто, лубой чувак, который знает си шапр, мог бы написать шейдер. Круто же?
Аноним 12/08/17 Суб 01:56:21  436488
>>436470
Зачем? HLSL и так простейший язык.
Сложность шейдеров в алгоритмах
Аноним 12/08/17 Суб 02:18:30  436492
>>436488
зачем ты повелся на эту толстоту
Аноним 12/08/17 Суб 02:57:56  436493
>>436492
https://www.youtube.com/watch?time_continue=72&v=hJZwaaXMfUA
ой, нахуй иди, ага умник хуев.
Аноним 12/08/17 Суб 08:31:55  436505
>>436353
Лучше проведи сам анализ, создавай, компиль проекты, дизассемблируй и шарься в исходниках. Большинство, думаю, принимает уровень защиты как данность или юзает дорохие продукты чтобы спать спокойно. Ведь если ты что-то делаешь на продажу, то и деньги должны быть на защиту твоей жепы, а если бесплатно будешь распространять, то переосмысли нужно ли тебе это вообще, и стоит ли работа затрачиваемых ресурсов.
Аноним 12/08/17 Суб 08:34:11  436506
>>436407
Если новичок, не лучше ли фармить опыт на проектах уровнем пониже кр2? Не думаю, что стоит бросаться в этот омут, пожалей время хотя бы.
Аноним 12/08/17 Суб 08:58:36  436507
Как настроить ябучий unity Remote. Android SDK стоит, в Editor'е самого юнити включил Any Device. ЧТО ЕЩЁ НАДО?
Аноним 12/08/17 Суб 09:49:19  436511
>>436506

Из КР2 я хочу взять только систему квестов
Аноним 12/08/17 Суб 10:00:48  436516
>>436511
>Из КР2 я хочу взять только систему квестов
Ты только учти что их квесторедактор и квестоплеер писал весьма годный кодер. А сами квесты писали несколько человек около года, и это были не рандом школьники с улицы.
Предлагаю тебе опробовать свои силы, возьми любой известный квесто-движок и напиши пару для пробы. И людям покажи. Вангую гавнище получится несусветное.
Аноним 12/08/17 Суб 10:01:53  436517
>>436516
Неужели этому нельзя обучиться за N-ое количество времени?
Аноним 12/08/17 Суб 10:12:41  436520
>>436516
Что там за квесты такие?
Аноним 12/08/17 Суб 10:37:02  436524
>>436516
Ну квесторедактор и квестоплеер я хотел в одном своём проекте использовать, который пока у меня в в стадии замороженного бекенда. Где-то была статья даже как у них все реализовано.
левый чел
Аноним 12/08/17 Суб 10:44:31  436526
>>436520

Спасибо, надо погуглить.
Аноним 12/08/17 Суб 15:23:09  436591
>>436493
Ну, насколько я понял по видео, этот код просто парсится roslyn'ом, и потом из syntax tree генерируется шейдерный код. Никакого дебагинга там нет конечно, просто метод стабы.
Аноним 12/08/17 Суб 15:43:56  436592
>>436591
Просто не понимаю в чем смысл делать какую-то сложную йоба-абстракцию над чем-то очень простым. Вместо того, чтобы потратить немного времени на изучение HLSL, ты потратишь в итоге намного больше времени на изучение архитектуры и особенностей этой НЕХ. И если зная HLSL, ты омжешь писать шейдоры для любого движка, то твои знания этой приблуды генерирующей шейдеры будут ограничены конкретно этой приблудой.
Аноним 12/08/17 Суб 15:52:01  436598
Только что настроил Unity Remote, запустил игру, а вместо сочной картинки, которую я получал, когда тестил игру в самой Юньке, получил мыло. Как это исправить? Так как я ньюфаг в андроид разработке.
Аноним 12/08/17 Суб 18:41:26  436620
>>436598
Compression в пнг поставь
Аноним 12/08/17 Суб 22:42:12  436641
ads.png (40Кб, 1136x1172)
Добрый вечер.

2D арена. Пытаюсь реализовать выстрел в направлении курсора. Всё вроде бы работает, но есть проблема с получением координат курсора. При использовании Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10.0f)); снаряды летят в нужном направлении только когда игрок в начальных координатах (0,0,0). Чем дальше игрок перемещается тем сильнее отклонение.

Я понимаю что нужно использовать координаты курсора относительно игрока, но не могу разобраться как это сделать. Ткните носом, куда копать, что гуглить?

Спасибо.
Аноним 12/08/17 Суб 22:49:34  436642
reaction-gif-lo[...].jpg (19Кб, 300x300)