Это копия, сохраненная 8 июля 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
http://unity3d.com/
Торренты:
http://cgpeers.com/torrents.php?searchstr=unity
Сохранение форматирования кода:
не работает, сука, жаловаться можно здесь:
https://2ch.hk/d/res/194351.html
Предыдущий тред:
https://2ch.hk/gd/res/159820.html
есть 2д прямоугольник (1), висящий на hinge.
оба якоря hinge в одной точке, посередине тела.
то есть, банальные качели.
к одному из плечей этих качелей еще одним hinge'м примотано другое тело (2).
что я хочу: таская (2) мышью, вращать (1) вокруг его оси.
что я сделал: на каждом апдейте в (2).rigidbody2d.velocity пишу дельту от курсора мыши до (2).transform.position.
что я получил: хуйню. (1) без проблем ездит по оси вслед за (2)
похоже, что velocity важнее, чем джоинты.
Серверная и клиенсткая части будут пилятся в одном проекте, на раздельных сценах. Оформил контроллер персонажа сервером, вроде работает. Пока единственный подводный камень - сложно дебажить это говно, нужно постоянно лезть в настройки билда, убирать/снимать галки, билдить, потом все это запускать, короче брр, но я привыкну. Все ли правильно делаю, или это говно не способно взлететь в принципе? инб4 юзай фотон норкоман
У юнити говняная реализация сети, как по мне. Когда я эксперементировал с сетью, то немного поковырял родные возможности юнити, а потом съебал на лидгрен. Но конечно посложнее будет для ньюфака. Ссыль: https://github.com/lidgren/lidgren-network-gen3
>Что примечательно - полно же народу с юнити возится. Полно народу сюда пишет. Но всем блядь лень пилить перекат. И каждый раз так, тред может и на вторую страницу погрузиться но страниц больше нет, но всё равно перекат пилить не будут и продолжат писать в старый.
Лёл, всем на всё похуй, последние тредов ~5 пилил я, архивач и жалобу абу тоже.
Шапка инвертированная заебись получилась.
Движок называется не Юнити3Д, а просто Юнити. В называющем его 3Д можно сразу детектить уебана-топ-менеджера, желающего срубить бабла на быстротуториалах, слепленных на коленке... или ОПа-хуя.
Пруфец в самом начале видео
https://unity3d.com/ru/learn/tutorials/modules/beginner/live-training-archive/tips-tricks
Пили клиент-сервер в одной сцене, как в каэсочке, и не еби мозги. Взлететь может, какой-то шутан в лицокниге пиарили активно, на такой хуйне сделан. Только с фотоном.
>>162888
А ещё это ты регулярно и жалуешься в тот тред о форматировании и написал там что-то вроде "абу пидор" или "я ебал абу", точно не помню, но таким шрифтом, что я охуел. Диванон! А, стоп. Не.
Но хуй там абу что вернёт своими волосатыми ручонками.
>>162889
>Движок называется не Юнити3Д
>Пруфец
>unity3d.com
Ну лан. Вообще, есть же совершенно другой движок, который называется юнити энгайн. Был, по крайней мере.
Они похоже изначально целились в 3д и назвались соответственно, а потом поняли, что их преимущество перед аналогами - 2д под мобилочки и выпустив соответствующие инструменты убрали из названия 3д. Ctrl+f по главной странице ни одного 3д не выдает.
>А ещё это ты
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Эх, анончики, какк же меня удручает, что в юнити нет коллбэков/слушателей изменения пропертей и игровых объектов. Ну это же трындец. Я хочу знать, когда значение проперти изменилось или когда объект добавился-удалился и все в таком духе. Походу придется в Update() проверять изменения, херя производительность.
Вот-вот, это самое.
>>163021
Активность объектов не меняется сама собой. Вот где её меняешь - вот там и твой слушатель. Нахера лишний раз проверять, если ты сам и меняешь состояние? К тому же, проверить пару булов на тру-фолс - пиздец, какая потеря производительности. Проверяй в корутине, чтоб не дёргать каждый апдейт, если совсем уёбок.
Вот они - юнити-профессионалы. Прям как гордые голуби: налетят и насрут тебе на голову.
>Нахера лишний раз проверять, если ты сам и меняешь состояние?
Во многих случаях состояние меняют не мои скрипты, а какие-нить сторонние либы, или например то же гизмо в редакторе, которое меняет трансформ.
>проверить пару булов на тру-фолс
Как насчет десятка матриц 4х4?
Но ведь если подумать, твои коллбеки - это те же самые вотчеры, просто реализованные в другом месте и до тебя.
может, ты ошибся в выборе инструментов? 90% вопросов, начинающихся с "а почему тут нет..." решаются ответом типа "это есть там". найди движок под твои требования.
Нет,я спрашиваю, что лучше пилить и анимировать 3D модельки сразу в Unity. Или в 3Dmax, а потом импортировать в Unity? Чего, будет выдавать лучшее качество и меньшее время?
>Или в 3Dmax, а потом импортировать в Unity
Зис. Ебашить в юнити - себе дороже, она не для этого придумана.
Одно есть здесь, другое есть там, что-то еще есть вот там вот. Так рассуждая, вообще нельзя остановиться на каком-то одном движке.
>>163033
>вотчеры
Штоэта? Watchers? Ты имеешь в виду паттерн Observer?
А вообще, круто было бы прикрутить events из C# для этого дела.
Ну с со слушанем пропертей еще куда ни шло. Но вот есть у меня игровой объект, у которого строго определены дочерние объекты. Но дизайнер может случайно или по незнанию удалить один из дочерних объектов, что тогда делать? В Юнити, насколько знаю, нельзя запретить удалять объекты в редакторе, так что остается в Editor-е при каждом апдейте проверять, все ли объекты на месте, вместо того, чтобы слушать события-оповещения удаления объектов. Если у меня этих дочерних объектов, утрированно, тыща штук, всю тыщу проверять при каждом апдейте как-то хуэвато.
>круто было бы прикрутить events из C# для этого дела
Чот я не пойму, а что тебе мешает-то? В юнити вполне себе полноценный шарп.
А если сделать у здания или у модели транспорта постоянно движущуюся часть(допустим колесо мельницы или пропеллер у вертолёта) в 3D max то они будут сразу работать в Unity или придётся для них отдельно писать скрипт?
Почитай уже мануалы. Да, будут.
>например то же гизмо в редакторе
То есть, ты игроку дашь сцену и скажешь "скачай юнити, играй в режиме редактора"? Ты чё, ебанутый?
>дизайнер может случайно или по незнанию удалить один из дочерних объектов, что тогда делать
0. Пиздить дизайнера ногами.
1. Выдавать ошибку в приложении и закрываться.
2. Объекта не стало не в рантайме, а до запуска - одной проверки при запуске сцены будет достаточно.
Ты придумал хуевый дизайн. В этом все дело. Зачем знать когда изменились переменные? Что это тебе даст? Расскажи что тебе именно надо сделать, и я скажу как это надо делать нормально.
Руки из жопы ему мешают, очевидно же.
>Но вот есть у меня игровой объект, у которого строго определены дочерние объекты. Но дизайнер может случайно или по незнанию удалить один из дочерних объектов, что тогда делать?
Можно скрыть эти объекты, чтобы они не показывались в иерархии. Тогда случайно никто ничего не удалит.
я только что узнал
Я не знаю что делать со своей жизню, потому подумываю сделать игоря. Но только я начинаю об этом думать, только ставлю на закачку юнити. Как вспоминаю сколько игорей уже сделано, сколько идей уже реализовано, ито что я хочу сделать например уже гдето было. И я отменяю закачку юнити, и снова иду аутировать в ммо.
>сколько игорей уже сделано
А играть не во что.
>сколько идей уже реализовано
У большинства идей реализация так себе и ее еще можно дорабатывать напильником, чтобы ценители обкончались от радости.
>уже гдето было
Да и хуй с ним, комплекс фич почти уникален для каждой игры, несмотря на реализацию таких фич где-то еще.
>аутировать в ммо
Лол, аутировать можно что угодно. Сидишь в ммошке без результатов и совршаешь тонны однообразных действий, или сидишь в юнье и делаешь тоже самое. Разница только в общении, но подлиным атутистам на него похуй им и синглплеер вставляет.
Кароч, ты либо титан одниночества с туманными преспективами, либо тёма.жпг
>У большинства идей реализация так себе и ее еще можно дорабатывать напильником, чтобы ценители обкончались от радости.
Но как у меня может получиться лучше чем у какой-то юбисофт?
Запили симулятор крестьянина, возделываешь поля, доишь корову, смотришь, как помещик ебет твою жену и дочку, ходишь на рыбалку.
Эдакий выживач, но в деревне без монтсров и зомби.
И время поставь, чтобы игровая минута была равно ирл минуте. Прикрути кооп и аутируйте до посинения.
Но с лопатой!
Как-то так.
У меня вообще другая проблема - пока в игре нет совсем нихуя - мне интересно. Начал пилить шутан. Прихуярил одну анимацию, контроллер персонажа, слоу-мо, врагов-капсули, к ним подобие ии (очень примитивное, но сложнее и не надо). Заебало. Начал пилить ммо, хуйнул инвентарь, поебался с прискиниванием шмота в рантайме, прихуярил таймер, который отправляет передвижение на сервер, хуйнул простенький сервер, прихуярил шифрование и отключил, чтоб не грузило. Заебало. Думаю, перекатиться обратно на php и написать ещё десяток браузерок.
Вот только в туториале опустили один момент.
ДИЗАЙН вот эти все текстурки, интерьеры, анимации. Это все если самому делать кажется пиздец задачей, если ты не прирожденный дизигнер с челкой.
>То есть, ты игроку дашь сцену и скажешь "скачай юнити, играй в режиме редактора"? Ты чё, ебанутый?
Моя конкретная задача сейчас - это как раз узнать, когда изменяется трансформ с помощью гизмо в дизайн-тайме для моего редактора уровней. Задача: тайлы должны распологаться в узлах нерегулярной квадратной сетки, и я хочу, чтобы гизмо снаппил перемещаемый объект в ближайший угол сетки. Так же я хочу в дизайн-тайме сохранить в скрипте тайла индекс узла сетки, на котором он сейчас расположен. Как это сделать? Сейчас в Editor-скрипте для скрипта тайла я на каждый апдейт беру текущий трансформ тайла, вычисляю индекс ближайшего узла сетки, беру его позицию в сцене и пихаю обратно в трансформ. Но это ппц. Нэкрасиво.
>>163064
>2. Объекта не стало не в рантайме, а до запуска - одной проверки при запуске сцены будет достаточно.
Во время экспорта сцены можно проверить ее состояние и вроде как выдать ошибку, с помощью этого http://docs.unity3d.com/Manual/BuildPlayerPipeline.html (хотя я еще не пробовал).
Но все равно, если дизайнер таки удалит служебный объект, то его работа остановится до тех пор, пока я не объясню ему, как это пофиксить, а это долго и чревато. Так что такие вещи надо решать заранее.
Вот тебе картинка для мотивации.
>ДИЗАЙН вот эти все текстурки, интерьеры, анимации. Это все если самому делать кажется пиздец задачей
Так и есть.
>>163107
GameObject tile = new GameObject();
tile.hideFlags = HideFlags.HideInHierarchy;
>>163105
Можешь тягать тайлы не с помощью стандартного гизмо, а свой велосипед наваять. Чтобы отключить инструменты можно использовать:
Tools.current = Tool.None;
https://github.com/ololoepepe/MakabaCode
https://2ch.hk/pr/res/457262.html
себе поставил, заебись
тест
[code lang="C#"] %using UnityEngine;
using System.Collections;
public class ExampleBehaviourScript : MonoBehaviour
{
void Update ()
{
if(Input.GetKeyDown(KeyCode.R))
{
gameObject.renderer.material.color = Color.red;
}
if(Input.GetKeyDown(KeyCode.G))
{
gameObject.renderer.material.color = Color.green;
}
if(Input.GetKeyDown(KeyCode.B))
{
gameObject.renderer.material.color = Color.blue;
}
}
}
% [/code]
https://github.com/ololoepepe/MakabaCode
https://2ch.hk/pr/res/457262.html
себе поставил, заебись
тест
[code lang="C#"] %using UnityEngine;
using System.Collections;
public class ExampleBehaviourScript : MonoBehaviour
{
void Update ()
{
if(Input.GetKeyDown(KeyCode.R))
{
gameObject.renderer.material.color = Color.red;
}
if(Input.GetKeyDown(KeyCode.G))
{
gameObject.renderer.material.color = Color.green;
}
if(Input.GetKeyDown(KeyCode.B))
{
gameObject.renderer.material.color = Color.blue;
}
}
}
% [/code]
тест
[code lang="C#"] using UnityEngine;
using System.Collections;
public class ExampleBehaviourScript : MonoBehaviour
{
void Update ()
{
if(Input.GetKeyDown(KeyCode.R))
{
gameObject.renderer.material.color = Color.red;
}
if(Input.GetKeyDown(KeyCode.G))
{
gameObject.renderer.material.color = Color.green;
}
if(Input.GetKeyDown(KeyCode.B))
{
gameObject.renderer.material.color = Color.blue;
}
}
}
[/code]
using UnityEngine;
using System.Collections;
public class ExampleBehaviourScript : MonoBehaviour
{
void Update ()
{
if(Input.GetKeyDown(KeyCode.R))
{
gameObject.renderer.material.color = Color.red;
}
if(Input.GetKeyDown(KeyCode.G))
{
gameObject.renderer.material.color = Color.green;
}
if(Input.GetKeyDown(KeyCode.B))
{
gameObject.renderer.material.color = Color.blue;
}
}
}
[/code]
>>Посмотрел я тут немного туториалов по юнити. Оказывается все легко.
Хахахахахахахахахахахахахахахахахахахахахаха
Вот уеч, там да, все легко.
[code lang="JS"]
[/code]
using UnityEngine;
using System.Collections;
public class ExampleSyntax : MonoBehaviour
{
int myInt = 5;
int MyFunction (int number)
{
int ret = myInt * number;
return ret;
}
}
[/code]
Но звездочка есть, да?
Кароч ставьте скрипт, заебись теперь будет.
В настройках себе добавьте охват gd
Есть
Спасибо, анончик, HideFlags.NotEditable - это то, что нужно для моего служебного объекта.
Насчет Tools.current стоит побольше поковыряться в доках и примерах, но тоже походу годнота.
>Так и есть.
А где бесплатно без смс взять вот эти все текстурки, интерьеры, анимации? И если я сделаю игоря из таких бесплатных текстурок, интерьеров, анимаций - я потом смогу продать игоря?
>И если я сделаю игоря из таких бесплатных текстурок, интерьеров, анимаций - я потом смогу продать игоря?
>где бесплатно
Нужно смотреть лицензию каждой текстурки и хуйнюшки.
Текстуры - если серьёзные сайты типа cg tetures, то можно,
но опять же, смотри лицензию.
Если изменяешь текстуру до, скажем "на глаз" 60-80% неузнаваемости относительно исходника,
то терпимо, но рискованно.
Интерьеры - такого вообще нет по-ходу, разве что адовое говно, покупай на асетсторе.
Модельки - есть, гугли, смотри внимательно лицензию.
Лично я не находил ничего внятного кроме фришных анимаций из асетсора и древнючего пака ~уёбищных анимаций для 3дмакса.
Если кто знает где мокапы (на сиджипирс м.б.?) скачать без смс, делитесь.
Но ты же говно своё продавать вряд ли будешь, так что можно качать всё подряд, во фришных играх похуй на лицензию.
Молодец. Теперь можешь пойти делать литературу. Завтра в колледже по ней контрольная.
Я полагаю, что у тебя уже готовы модельки, анимации, шейдоры и прочий графоний для твоей еба игры для на УЕ4?
тебе тот ананас невидимые шатры на пути нарисовал
Есть постоянно шагающий мод, есть цель, к которой он всегда повернут лицом, как только дошагал до цели - меняешь цель на следующую, моб поворачивается к другой цели и продолжает движение, если цель конечная - взрываешь моба, все.
Цена вопроса?
Вместо коллбеков есть делегаты и эвенты.
Делаешь статческий класс с методами Observe, который хавает ключ эвента и коллбек, и Trigger, который хавает собственно ключ и EventArgs, в который ты запихиваешь все нужные аргументы.
В том месте, где ты что-то меняешь, триггеришь эвент. Если у тебя редактор или сторонние либы меняют что-то, то экстендишь их и хуяришь эвенты после базового метода от их имени.
Ну тут у тебя только один путь, дружище: учиться кодить. Либо ты находишь кодера и вы с ним разделяете обязанности (ты - арт, программер - код). Выпрашивание у ананчика на бордах кода - это путь в никуда.
>экстендишь их и хуяришь эвенты после базового метода от их имени
Если архитектура позволяет, ога.
А как она может не позволить? Метод, который что-то меняет, должен быть явен в коде, что значит что его можно оверлоаднуть, вызвать его же и триггер. Если это что-то совсем тёмное и левое, то можно тупо рефлекшном прорубиться куда угодно и просто подменить метод.
Вот есть у меня игровой объект, к нему приаттачен скрипт, в котором написана логика объекта. У объекта могут быть дочерние объекты - инстансы префаба. Для скрипта объекта есть Editor-скрипт, который рисует кнопку "Добавить итем" в инспекторе, по нажатию на которую должен создасться инстанс и добавиться как дочерний объект к нашему объекту.
Собственно вопрос: где реализовывать логику добавления итема - в самом скрипте (функция, которую вызывает эдитор-скрипт) или собственно в эдитор-скрипте?
>А как она может не позволить?
Sealed class или sealed method например. Вообще, в нормальной архитектуре автор позволяет переопределять только те методы, которые логически предназначены для переопределения, но не все остальные.
Ну вот почему хитровыебанное поведение, о котором его никто не просит, стоит по умолчанию, и чтобы его отключить, нужно поставить какой-то скрытый злоебучий флаг, который хуй найдешь?
А он тут при чем? Ну узнаю я, какие переменные-члены у класса, что мне это даст?
Хочется иметь всё это плюс тёмная цветовая схема и возможность заходить в Debug Mode.
Ну а что ты хотел, там есть VS, а сисярп не под вендой это как минимум СТРАННО. Попробуй поставить параллелс и вендой, туда тот же VS и прикрутить к юнити
Я помню, можно было как-то добавить свой translation gizmo в редактор. Ты случаем не знаешь как?
По этому теперь я буду делать ммо рпг.да, я нихуя не умею, а ещё я умственно отсталый, ну то есть у меня нет диагноза, но думаю если со мной пообщается психиатр, он будет...
Что мне нужно для этого?8
>ммо рпг
>Что мне нужно для этого?
Текстурки, модельки, анимации, декорации, спецэффекты, много кода, тестеры, идея, сюжет
Защита от читоров, большой-большой детализированный мир, серверное железо, сайт, форум, админ, багтрекер, демки, реклама, мувики
Еще потратить пару месяцев на изучение матчасти, чтобы понять основные принципы построения серверной логики
Таким не занимался, но думаю это не сильно сложно сделать. Рисуешь стрелочки в OnDrawGizmos(), перехватываешь события мыши и тягаешь свои объекты куда надо.
>>163255
Visual Studio + Resharper
>>163250
Было бы другое поведение по умолчанию и мудило вроде тебя опять бы пришел жаловаться. Учись смотреть список перегруженных методов прежде чем обиженку строить.
>>163243
Если во время игры не будет использоваться метод для добавления объекта, то лучше вынести в эдитор. Ну и само собой это при условии, что этот метод не использует активно внутренние данные скрипта висящего на объекте.
Самое главное - это конечно же придумать название. Потом нужно создать паблик вконтактике и начать собирать команду. Ну а дальше оно само пойдет.
Но правда меня бесит квадратная застройка в банишед, буду пилить дороги по кривым безье.
Принять Ислам. Сириусли, как вы, блин, не понимаете, что ммо — самые сложные, маштабные и затратные проекты? Первая мысль, что появляется у школьника — это ММО или СИМУЛЯТОР ЖИЗНИ.
Я так понимаю для начала мне в команду нужны:
Ххудожник, чувак знающий толк в серверах, (маркетолог на примете уже есть я его ебу точнее его руку) настоящий програмист а не обезьянка типа меня. Историк(игра будет типа историческая, а не фентези говно)
И всё ? Можно приступать?
Ну, у меня не с открытым миром, да и вообще это скорее шутан с прокачкой.
И да, я понимаю всю сложность этого дела, но если я этого не сделаю, меня изнасилуют, так что всё ещё жду толковых советов,
Как вариант, можно без кодинга повесить навмеш только на эту тропинку и мобы не смогут ходит вне этой тропинки.
>мне в команду нужны
- художник,
- чувак знающий толк в серверах
- настоящий программист
- историк
Но нужен ли ты им?
Эпоха метамодернизма ёпт,
все нетакиекакфсе устали друг от друга,
попробуй-ка своим говном кого-то заинтересовать.
удачи, я в тебя верю
https://www.youtube.com/watch?v=P4hTa6uYAFs
>все нетакиекакфсе устали друг от друга,
Когда было иначе? Это же вытекает из определения "нитаких как все".
Я и в анимацию могу
-Стив! Я придумал охуенную тему! Мы запилим макентош!
-Нет, Стив, это слишком сложно, пошли лучше сосать хуи на трасе! Стив... пошли... сосать... хуи...
Apple, Apple II, Apple III, Apple Lisa, Macintosh.
Как-то так.
Свои охуительные выдумки впредь оставляй при себе.
Окай ну ты поня л что я имел в виду, они сразу взялись за компьютер, а не начали пилить калькулятор.
Ну так и тут никто не предлагает пилить крестики-нолики, можно начать с понга или змейки.
Впрочем, калькулятор - составляющая часть любого компьютера, так что они таки начали с него, да.
> сразу взялись за компьютер
Тогда все брались за него, глупыш. Такое было время, ПК как бизнес-концепции ещё не полноценно сложилась, процессоры и провода продавались россыпью. Они всего лишь оседлали тренд, сделав ставку на внимание к мелочам. Грубо говоря, выстрелило не охуенное инженерное новаторство возняка, а педантичность и скурпулёзность джобса, поданные под соусом элитности. Грубо говоря, они продавали полированные корпуса, когда остальные продавали корпуса с торчащими пластмассовыми излишками.
Мой тебе совет - смазку купи заранее.
Нужно разбросать эти элементы по разным холстам. Жаль, что пришлось самому себе отвечать.
Зачем тебе нажимать на кнопки, если над ними что-то есть? Настрой размеры rect transfom правильно, чтобы элементы друг на друга не налазили.
Схуя я должен покупать собственные асеты?
Что с разрешением для разных девайсов? Айфон, айпад, ретина и всё это дерьмо? Нужно делать овер дохуя атласов и как-то между ними переключатся при запуске игры в зависимости от разрешения или юнька сама всё это делает ?
Мб есть ещё какие-то подводные камни, о которых лучше всего узнать в начале разработки?
Кликалка в стиле кетчаповских игорей
DamageScreen - это картинка с малиновым вареньем поверх всего. В нормальном состоянии альфа-канал у нее на нуле, при получении урона она на время становится видимой.
А чего бы ее не отключать в нормальном состоянии, а не ставить альфу в ноль? При нанесении урона - включаешь.
Не думал об этом, гений?
Я хуею с вас, ананасики. Придумывают себе ебанутую логику и ябутся с нею.
Но тогда, когда она включается(а это происходит во время блядь игры), на кнопки нажать не получится. И что в итоге - в тебя стреляют, ты пытаешься убежать или стрелять в ответ, но тебе мешает ВАРЕНЬЕ !
Мимопроходил
Ну так это тоже самое что и у него. Только у него всегда нельзя нажимать на кнопку, потому что ВАРЕНЬЕ блокирует.
А у меня хотя бы когда его нет - можно жать на кнопки, когда есть - нужно жать на варенье. Все логично жи.
Например, у меня в игре есть класс Goal для целей персонажей. И много наследников этого класса, которые реализуют специальные цели. Я хочу в редакторе для каждого отдельного персонажа выбрать цель и настраивать ее.
Буду писать, что мне не нравится и разбивать мечты о том, что юнити это дар божий.
Номер один.
Юнити, а как мне нарисовать прямоугольник?
Нет ничего проще! Берёшь, создаёшь текстуру 1х1, красишь этот самый пиксель нужным цветом, а, да, ещё тебе нужен гуйстайл. И уже после этого ты берёшь и создаёшь гуйпрямоугольник.
Brilliant. Нужно писать кастомную функцию, чтобы нарисовать прямоугольник. В 100% движков это есть из коробки.
Еще один умник, думающий что он лучше всех знает.
Зачем тебе рисовать прямоугольник? Ты что, ебанутый?
Юичепидор, ты задрал своим траленгом уже. Иди ебись с крестами в свой тред, тут тебе не рады. И да, юнити - не дар божий и все это прекрасно понимают.
На одном бесплатном говне из ассет сторе нихуя стоящего не запилить, а за пизженный графоний потом ебало еще начистят, нахуй нахуй
Пойду пилить стратежку "квадратики против кругляшков"
мимо баттхертящая скриптомакака
> Пойду пилить стратежку "квадратики против кругляшков"
Так кстати и надо делать. Сначала делаешь интересно на уровне "крестики против квадратиков", потом делаешь/покупаешь подходящий контент.
Я полтора года превозмогал, шароебился по всем интернетам в поисках фришных ресурсов, и только сейчас, наконец, СМИРИЛСЯ с тем, что так дальше не пойдет и йоба-шедевор, убийцу топовых инди тайтлов в штиме я с голой жопой, имея только навыки скриптоблядства, не запилю. Сейчас испытываю баттхерт и депрессию. Что у меня в итоге есть: исследованный вдоль и поперек юнити, десятки брошенных проектов совершенно разных направлений, разрушенные под фундамент амбиции и пустая голова идей.
По воплям ИСКАРОПКИ! всегда можно задетектить дебила с уеча.
Дорогу осилит идущий.
За контент надо платить. Хотя бы для того чтобы не бросать и не делать фигню.
Никто мне не ответит. Тут нет таких профи в юнити.
Сам я решил использовать XML для настроек, добавлять его к как TextAsset и уже при старте все инициализировать.
[System.Serializable]
public class Goal
{
public string str;
}
class Child : MonoBehaviour
{
public Goal goal = new Goal();
}
Теперь уебывай, обоссанец, и велосипед свой забери.
И что это? Как это настроить в инспекторе? Мне не нужен базовый класс. Как мне в инспекторе выбрать наследник класса Goal, и настроить его переменные?
>Как мне в инспекторе выбрать наследник класса Goal, и настроить его переменные?
Скачать себе УЕЧ и сьебать из треда, например
Во-первых, я эту херню не сам придумал, а спиздил из мануалов юнити. Во-вторых, когда ВАРЕНЬЕ и все остальные подобные экраны я перенес на другой холст - у меня все стало работать заебись. Ананасик.
>Я так понимаю для начала мне в команду нужны:
>Ххудожник, чувак знающий толк в серверах, (маркетолог на примете уже есть я его ебу точнее его руку) настоящий програмист а не обезьянка типа меня. Историк(игра будет типа историческая, а не фентези говно)
Я немного рисую, умею в тридє-модели, по образованию программист, шарп нормально знаю. Еще и историей с самого детства увлекаюсь, и неплохо, как я считаю, знаю ее (а еще шарю в археологии, поп. генетике, антропологии).
Опиши, что за игорь, может мне интересно будет?
1. Как я понял из видосов, за управление объектами отвечают скрипты, приаттаченные к объектам. А есть ли возможность использовать в сцене некий глобальный скрипт, который будет управлять всеми объектами в сцене? Можно ли скрипты объектов объединять в неймспейсы? Как из скрипта, прикрепленного к одному объекту, получить доступ к полю класса, описанного в скрипте к другому объекту?
2. Как получить полный список всех объектов в сцене? Пока что я додумался только до передачи всех объектов сцены в скрипт, в качестве паблик полей класса. Но ведь должен же быть и вменяемый метод? Стандартная коллекция там какая-то.
3. Я нашел кусок кода, который программно создает объект (в данном случае снаряд, вылетающий из пушки):
Transform copy = (Transform) Instantiate (obj_to_copy, GameObject.Find("spawn_point").transform.position, Quaternion.identity);
Как я понял, создается объект "copy", в точке "spawn_point.transform.position", и вылетает в направлении "Quaternion.identity". Данный кватернион направляет вектор в соответствии со значением ротейта объекта, по отношению к родительскому объекту. То есть, если объект после создания не вращался, то выстрел произойдет точно в том направлении, куда смотрит родительский объект. Например, есть моделька хикки, которая смотрит в определенном направлении. У хикки в руках пистолет, ствол которого являет собою цилиндр из юнити. Цилинд создается в вертикальном положении. Потому, для того, чтобы он стал стволом, его нужно повернуть на 90 градусов по одной из осей. И тогда, при стрельбе получается, что снаряд летит в пол, из-за того, что Quaternion.identity возвращает 90 градусов по иксу. Как мне преобразовать этот кватернион, чтобы итоговый был смещен на "х" градусов по определенной шкале? Если можно, объясните попроще, без углублений в матан, потому что я тупой мудак.
4. Как мне задать уникальное имя каждому объекту, созданному кодом, описанным в предыдущем вопросе?
5. Как программно уничтожить объект? Например, как лучше всего уничтожить снаряды, создаваемые кодом, описанным в третьем вопросе? На вскидку у меня есть идея, прикрутить к базовой модели снаряда скрипт, который определит время жизни снаряда, и если снаряд не встретится с поверхностью, то скрипт должен будет применить к объекту какой-то деструктор (или как оно тут делается?).
6. Можно ли на юнити делать анимированные текстуры ГУИ? Например, анимированный прицел, с выводом информации, всякими прогрессбарами и вращающимися вокруг точки свистелками. Как вообще объединить текстовый гуибокс с гуитекстурой?
7. Поясните за скайбоксы. Как их вообще правильно делать? Как правильно искажать квадратную текстуру, ложащуюся на сторону скайбокс-куба, чтобы скайбокс не выглядел кубом, а выглядел сферой? Можно ли в скайбокс захуярить анимацию и шейдеры? Если да, то как это сделать?
Отдельно очень прошу поделиться гайдами (желательно на русском, ибо я не знаю ингриш на столько, чтобы читать объемные тексты) по темам, поднятым в моих вопросах (да и вообще любыми гайдами).
В общем, аноны выручайте, вся надежда на вас.
1. Как я понял из видосов, за управление объектами отвечают скрипты, приаттаченные к объектам. А есть ли возможность использовать в сцене некий глобальный скрипт, который будет управлять всеми объектами в сцене? Можно ли скрипты объектов объединять в неймспейсы? Как из скрипта, прикрепленного к одному объекту, получить доступ к полю класса, описанного в скрипте к другому объекту?
2. Как получить полный список всех объектов в сцене? Пока что я додумался только до передачи всех объектов сцены в скрипт, в качестве паблик полей класса. Но ведь должен же быть и вменяемый метод? Стандартная коллекция там какая-то.
3. Я нашел кусок кода, который программно создает объект (в данном случае снаряд, вылетающий из пушки):
Transform copy = (Transform) Instantiate (obj_to_copy, GameObject.Find("spawn_point").transform.position, Quaternion.identity);
Как я понял, создается объект "copy", в точке "spawn_point.transform.position", и вылетает в направлении "Quaternion.identity". Данный кватернион направляет вектор в соответствии со значением ротейта объекта, по отношению к родительскому объекту. То есть, если объект после создания не вращался, то выстрел произойдет точно в том направлении, куда смотрит родительский объект. Например, есть моделька хикки, которая смотрит в определенном направлении. У хикки в руках пистолет, ствол которого являет собою цилиндр из юнити. Цилинд создается в вертикальном положении. Потому, для того, чтобы он стал стволом, его нужно повернуть на 90 градусов по одной из осей. И тогда, при стрельбе получается, что снаряд летит в пол, из-за того, что Quaternion.identity возвращает 90 градусов по иксу. Как мне преобразовать этот кватернион, чтобы итоговый был смещен на "х" градусов по определенной шкале? Если можно, объясните попроще, без углублений в матан, потому что я тупой мудак.
4. Как мне задать уникальное имя каждому объекту, созданному кодом, описанным в предыдущем вопросе?
5. Как программно уничтожить объект? Например, как лучше всего уничтожить снаряды, создаваемые кодом, описанным в третьем вопросе? На вскидку у меня есть идея, прикрутить к базовой модели снаряда скрипт, который определит время жизни снаряда, и если снаряд не встретится с поверхностью, то скрипт должен будет применить к объекту какой-то деструктор (или как оно тут делается?).
6. Можно ли на юнити делать анимированные текстуры ГУИ? Например, анимированный прицел, с выводом информации, всякими прогрессбарами и вращающимися вокруг точки свистелками. Как вообще объединить текстовый гуибокс с гуитекстурой?
7. Поясните за скайбоксы. Как их вообще правильно делать? Как правильно искажать квадратную текстуру, ложащуюся на сторону скайбокс-куба, чтобы скайбокс не выглядел кубом, а выглядел сферой? Можно ли в скайбокс захуярить анимацию и шейдеры? Если да, то как это сделать?
Отдельно очень прошу поделиться гайдами (желательно на русском, ибо я не знаю ингриш на столько, чтобы читать объемные тексты) по темам, поднятым в моих вопросах (да и вообще любыми гайдами).
В общем, аноны выручайте, вся надежда на вас.
1. Кратко - да. Теоретически, можно работать так, что в Юнити только ассеты класть, а все остальное кодом создавать, включая уровни (хранить в своем формате например).
2. По созданию и уничтожению. Так делать плохо, включается Garbage Collector, просадка по производительности. Гугли ObjectPool.
GL.QUADS
Спасибо за оперативный ответ. Поясни подробнее за программное создание всего. Где вообще точка входа? Куда лепить скрипт, который должен выполняться после загрузки сцены, и как он должен выглядеть (схематически)? Может, есть где про это почитать подробно?
Создаешь скрипт, кидаешь на сцену пустой ГО, в скрипте в Start() пихаешь инициализацию, в Update() организуешь главный цикл, например.
Но это самый инвалидский способ организации архитектуры в юнити, как по мне.
>>163594
3) Самое простое, домножь кватернион на Quaternion.Euler(90,0,0)
4)Ну хз, обычно этими именами особо не пользуются, но если надо, прибавляй при инициализации рандомную строку в имя.
5)Destroy(gameobject)
6)Ясен пень можно, ищи туторы, старый гуй не юзай, он говно.
7)Искажай как и везде, это не движкоспецифичный вопрос, а еще в пятой версии есть сносный процедурный скайбокс.
Про гайды ничего не скажу, на русском читал только древний FPS Tutorial чуть ли не от первых версий юнити, дальше ингриш и метод тыка.
Я юичепидор, но и то знаю про новый гуй юнити, где все можно мышкой таскать. Тот пидор просто юнитидебил, не читавший доки.
>3) Самое простое, домножь кватернион на Quaternion.Euler(90,0,0)
Я пробовал, ничего не меняется. Вот весь код запуска снарядов:
\t\tShotInstance = (Transform)Instantiate(bullet, GameObject.Find("BulletSpawnPoint05").transform.position, Quaternion.identity);
\t\tShotInstance.rigidbody.AddForce((transform.forward) * ShotForce);
Если умножать кватернион в Instantiate ничего не изменяется. Куда летело, туда и летит. Если менять вектор силы, то снаряд просто перестает вылетать вообще. В чем может быть проблема? Как вариант, скрипт можно перецепить на пустышку, которая у меня служит спавнпоинтом. Либо повернуть ствол в нулевой ротейт. Но все же хотелось бы знать, в чем проблема.
>6)Ясен пень можно, ищи туторы, старый гуй не юзай, он говно.
А можно подробнее про новый гуи. Что про него можно почитать, и как его искать вообще?
>7)Искажай как и везде, это не движкоспецифичный вопрос, а еще в пятой версии есть сносный процедурный скайбокс.
Проблема в том, что я вообще раньше не сталкивался с игровыми движками, и недавно впервые услышал про существование скайбоксов. Мб есть какие-то стандартные решения, для искажения? Ткни хоть, что почитать про это.
И да, спасибо.
Алан Thorn будет по C# основы, а также сценарий в единство с помощью языка C#. Здесь вы узнаете, как создавать основные файлы сценариев и получите и понимания для переменных, функций, события, циклы, условных заявлений, и классы, вы получите намочить ноги с программирование в единстве.
Благодарю, но боюсь не осилю. В текстовом варианте еще можно было бы попробовать, но на слух английский я вообще не могу.
3) Делай так: Instantiate(bullet, GameObject.Find("BulletSpawnPoint05").transform.position, GameObject.Find("BulletSpawnPoint05").transform.TransformDirection(Vector3.forward));
Если надо, еще умножь на кватернион нужного угла.
И да, лучше как можно меньше юзать поиск по имени. И ненадежно, и очень медленно. Лучше держать нормальную ссылку на объект.
6) На русском хз, на английском нормально ищется по "Unity 5 GUI", а вообще он довольно прост, если не считать некоторых моментов. Тянешь на сцену холст, на нем мышкой тягаешь элементы, можно спавнить их из префабов, держать несколько холстов на экране одновременно, этц. Для простых действий даже кодить не надо ничего.
7) Я не знаю, потому что скайбоксы либо воровал, либо юзал процедурные. Но так как это общий вопрос, найти будет несложно.
Спасибо большое.
Получилось у меня сделать им навмеш, налепил несколько плоскостей и сделал их невидимыми, но теперь проблема следующая, идут они по краям плоскостей, а мне нужно по центру. Есть идеи?
И что это? Ты добавил 2 одинаковых скрипта?
Мне надо допустим так:
Goal[] myGoals; в инспекторе это будет как массив целей. А мне надо, например, третьим элементом сделать CollectItemGoal.
Норкоман?
Создаешь массив объектов родительского класса. А потом мышой тягаешь туда то, что нужно.
Дочерние классы, ЕМНИП, прекрасно даже в инспекторе назначаются на такие переменные.
>А потом мышой тягаешь туда то, что нужно.
Что ты туда тягать собрался? Поля-то будут от класса Goal и сохранится он какGoal , а мне надо от CollectItemGoal или любого другого какой я выберу.
1) Делаешь массив пустых объектов (это будут точки на которых мобы будут менять направление движения).
2) Для вычисления направления от текущего положения к заданной точке используй следующее:
Vector3 dir = (target.position - transform.position).normalized;
3) Для перемещения по заданному направлению:
Vector3 curr_pos = transform.position;
curr_pos += Time.deltaTime velocity dir;
transform.position = curr_pos;
4) Для вычисления угла поворота:
float angle = Vector3.Angle(transform.position, target.position);
transform.localEulerAngles = new Vector3(0, 0, angle);
5) Для проверки достиг ли моб целевой точки:
Vector3 curr_dir = target.position - transform.position;
if(curr_dir.xdir.x+curr_dir.ydir.y < 0) {
//достиг
}
Писал по памяти и весьма вероятны косяки
Проблема: сразу после загрузки сцены моему классу требуется доступ к некоторым объектам сцены (к Text, который хранит счётчик очков). Пишу:
>GameObject Score = GameObject.Find("Score");
Объект находится, но как только я пытаюсь получить доступ к его компоненту Text:
>Score.GetComponent<Text> ();
вылетает ошибка, что-то вроде null reference - сейчас нет возможности запустить код, чтобы проверить. В общем, компонент найти не удаётся. Если же подождать какое-то время через WaitForSeconds(), компонент становится доступен. Получается обратиться к Score я могу в следующей же строчке после загрузки сцены, а его компонентам нужно время чтобы прогрузиться?
Можно было бы запилить WaitForSeconds(0.1), но это же какой-то костыль. У меня такое ощущение, что я принципиально неправильно подхожу к проектированию структуры моей игры.
Буду рад советам.
кажется, я через жопу описал структуру проекта. Есть две сцены: MainMenu и Puzzle. В MainMenu создаётся неудаляемый синглтон GameManager, который по клику грузит сцену Puzzle и сразу пытается обратиться к компонентам её объектов. Тут-то и происходит фэйл.
>1. Как из скрипта, прикрепленного к одному объекту, получить доступ к полю класса, описанного в скрипте к другому объекту?
http://docs.unity3d.com/410/Documentation/ScriptReference/index.Accessing_Other_Game_Objects.html
>2. Как получить полный список всех объектов в сцене?
foreach(gameObject currentElement in FindObjectsOfType(typeof(gameObject)) as gameObject[])
{
//DoSomething
}
скорее всего это тебе не нужно, что бы ты ни задумал, можно сделать проще и быстрее.
>3. Я нашел кусок кода, который программно создает объект (в данном случае снаряд, вылетающий из пушки):
>Transform copy = (Transform) Instantiate (obj_to_copy, GameObject.Find("spawn_point").transform.position, Quaternion.identity);
>Как я понял, создается объект "copy", в точке "spawn_point.transform.position", и вылетает в направлении "Quaternion.identity". Данный кватернион направляет вектор в соответствии со значением ротейта объекта, по отношению к родительскому объекту. То есть, если объект после создания не вращался, то выстрел произойдет точно в том направлении, куда смотрит родительский объект. Например, есть моделька хикки, которая смотрит в определенном направлении. У хикки в руках пистолет, ствол которого являет собою цилиндр из юнити. Цилинд создается в вертикальном положении. Потому, для того, чтобы он стал стволом, его нужно повернуть на 90 градусов по одной из осей. И тогда, при стрельбе получается, что снаряд летит в пол, из-за того, что Quaternion.identity возвращает 90 градусов по иксу. Как мне преобразовать этот кватернион, чтобы итоговый был смещен на "х" градусов по определенной шкале? Если можно, объясните попроще, без углублений в матан, потому что я тупой мудак.
Самый простой способ - поставить пустой GameObject в руку хикки или в пистолет и развернуть его нужным образом. Скрипт-спавнер прицепить на эту пустышку.
>4. Как мне задать уникальное имя каждому объекту, созданному кодом, описанным в предыдущем вопросе?
Функция Instantiate сделает все сама.
>5. Как программно уничтожить объект? Например, как лучше всего уничтожить снаряды, создаваемые кодом, описанным в третьем вопросе? На вскидку у меня есть идея, прикрутить к базовой модели снаряда скрипт, который определит время жизни снаряда, и если снаряд не встретится с поверхностью, то скрипт должен будет применить к объекту какой-то деструктор (или как оно тут делается?).
скрипт добавляется к префабу пули. Пуля будет уничтожена через 5 секунд после инстанса
void Start(){
Destroy(this.gameObject, 5f);
}
>6. Можно ли на юнити делать анимированные текстуры ГУИ? Например, анимированный прицел, с выводом информации, всякими прогрессбарами и вращающимися вокруг точки свистелками. Как вообще объединить текстовый гуибокс с гуитекстурой?
Можно все. Про интерфейс гугли "unity 4.6 gui" это очень обширная тема
>7. Поясните за скайбоксы. Как их вообще правильно делать? Как правильно искажать квадратную текстуру, ложащуюся на сторону скайбокс-куба, чтобы скайбокс не выглядел кубом, а выглядел сферой? Можно ли в скайбокс захуярить анимацию и шейдеры? Если да, то как это сделать?
про скайбоксы http://www.unity3d.ru/distribution/viewtopic.php?f=11&t=10847
про более продвинутое небо гугли unity skydome, родных инструментов для этого у юнити пока нету, нужно делать свои.
>Отдельно очень прошу поделиться гайдами (желательно на русском, ибо я не знаю ингриш на столько, чтобы читать объемные тексты) по темам, поднятым в моих вопросах (да и вообще любыми гайдами).
Мануал на офсайте от корки до корки для начала прочитай, он на русском.
>1. Как из скрипта, прикрепленного к одному объекту, получить доступ к полю класса, описанного в скрипте к другому объекту?
http://docs.unity3d.com/410/Documentation/ScriptReference/index.Accessing_Other_Game_Objects.html
>2. Как получить полный список всех объектов в сцене?
foreach(gameObject currentElement in FindObjectsOfType(typeof(gameObject)) as gameObject[])
{
//DoSomething
}
скорее всего это тебе не нужно, что бы ты ни задумал, можно сделать проще и быстрее.
>3. Я нашел кусок кода, который программно создает объект (в данном случае снаряд, вылетающий из пушки):
>Transform copy = (Transform) Instantiate (obj_to_copy, GameObject.Find("spawn_point").transform.position, Quaternion.identity);
>Как я понял, создается объект "copy", в точке "spawn_point.transform.position", и вылетает в направлении "Quaternion.identity". Данный кватернион направляет вектор в соответствии со значением ротейта объекта, по отношению к родительскому объекту. То есть, если объект после создания не вращался, то выстрел произойдет точно в том направлении, куда смотрит родительский объект. Например, есть моделька хикки, которая смотрит в определенном направлении. У хикки в руках пистолет, ствол которого являет собою цилиндр из юнити. Цилинд создается в вертикальном положении. Потому, для того, чтобы он стал стволом, его нужно повернуть на 90 градусов по одной из осей. И тогда, при стрельбе получается, что снаряд летит в пол, из-за того, что Quaternion.identity возвращает 90 градусов по иксу. Как мне преобразовать этот кватернион, чтобы итоговый был смещен на "х" градусов по определенной шкале? Если можно, объясните попроще, без углублений в матан, потому что я тупой мудак.
Самый простой способ - поставить пустой GameObject в руку хикки или в пистолет и развернуть его нужным образом. Скрипт-спавнер прицепить на эту пустышку.
>4. Как мне задать уникальное имя каждому объекту, созданному кодом, описанным в предыдущем вопросе?
Функция Instantiate сделает все сама.
>5. Как программно уничтожить объект? Например, как лучше всего уничтожить снаряды, создаваемые кодом, описанным в третьем вопросе? На вскидку у меня есть идея, прикрутить к базовой модели снаряда скрипт, который определит время жизни снаряда, и если снаряд не встретится с поверхностью, то скрипт должен будет применить к объекту какой-то деструктор (или как оно тут делается?).
скрипт добавляется к префабу пули. Пуля будет уничтожена через 5 секунд после инстанса
void Start(){
Destroy(this.gameObject, 5f);
}
>6. Можно ли на юнити делать анимированные текстуры ГУИ? Например, анимированный прицел, с выводом информации, всякими прогрессбарами и вращающимися вокруг точки свистелками. Как вообще объединить текстовый гуибокс с гуитекстурой?
Можно все. Про интерфейс гугли "unity 4.6 gui" это очень обширная тема
>7. Поясните за скайбоксы. Как их вообще правильно делать? Как правильно искажать квадратную текстуру, ложащуюся на сторону скайбокс-куба, чтобы скайбокс не выглядел кубом, а выглядел сферой? Можно ли в скайбокс захуярить анимацию и шейдеры? Если да, то как это сделать?
про скайбоксы http://www.unity3d.ru/distribution/viewtopic.php?f=11&t=10847
про более продвинутое небо гугли unity skydome, родных инструментов для этого у юнити пока нету, нужно делать свои.
>Отдельно очень прошу поделиться гайдами (желательно на русском, ибо я не знаю ингриш на столько, чтобы читать объемные тексты) по темам, поднятым в моих вопросах (да и вообще любыми гайдами).
Мануал на офсайте от корки до корки для начала прочитай, он на русском.
В OnLevelWasLoaded(int) пытаешься свежезагруженные объекты ковырять?
Если да, попробуй WaitForUpdate, как раз все заинициализируется и уже сделаешь что надо.
>Лолируйте
Лоллировал с рейкастов. Сами в себя тыкаются.
Может лучше загребать всех юнитов в сфере вокруг башни, а потом нехитрой геометрией проверять сектора обстрела?
Использовать встроенный навмеш.
как мне мой быдлокод (C#) для маленькой консольной программки (сорт оф калькулятор) заставить исполнятся в юнити?
Где именно - пофиг - хоть в кастомном окошке, хоть в консоли.
Желательно не в игре.
Повесь на цели тег и проверяй, во что упёрся райкаст по тегу или используй слои. Разве сложно так? Очевидно, что райкаст и должен упираться в райкаст.
Ну, всё-таки часто пишут, что брутфорс - зло, мобов может оказаться больше и т.д, и т.д. Да и внезапно ссылок на мобов может нигде и не быть, если они инстансятся через жопу или наоборот, заранее растыканы по уровню, а ручками массивы забивать лень. И писать поиск мобов с добавлением в массив - тоже лень. Плюс, райкаст сразу даёт направление, сообщает нет ли пересечений с другой хуитой и т.д.
А райкаст не брутфорс чтоли?
>ссылок на мобов может нигде и не быть
Ясно. Программирование уровня /gd/. Ну ты им теги хотя бы поставь. Искать по тегу быстро.
>райкаст сразу даёт направление
Какое направление? Башня стреляет вокруг себя в определенном радиусе. Ты по всем возможным углам будешь рейкаст делать?
>>163704
Я ж говорю, кастуй сферу и вытаскивай из выдачи всех мобов, что в этом-то сложного?
Обязательно надо изобретать самые невротъебенные обходные пути.
http://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html
для юнити интерпретатор с# какой-то опенсурсный когда-то видел, с помощью него наверняка можно.
>А райкаст не брутфорс чтоли?
Так оно через физон, а физон работает быстро. В нём же оптимизации.
>Какое направление?
Очевидно, что от башни к мобу. Но я не тот анон, который пилит товер дефенс, просто написал, почему это может быть удобно использоваться. Когда-то пилил хуиту, ссылки на мобов хранились, но меж тем я всё равно раскастил из моба к игроку для различных целей. Хотя теперь понимаю, что можно было и обойтись, но хуй знает. И так работало и не тормозило.
тогда наверное ты имел в виду, как адаптировать существующий код калькулятора под юнити? Его просто надо подправить
>Сконпелируй свой калькулятор как dll и кинь в папку с ассетами. Все.
Спасибо, не знал.
Пролинковал в VS UnityEngine и UnityEditor dllки,
в юнити импорт сетингс указал Эдитор/Стендэлон, ос Виндовс, х86-64,
а что в коде менять?
Это изначально калькулятор в виндовой консольке,
также, результат кроме окошка консоли выводился ещё в буфер обмена и в лог.тхт
а мне нужно чтобы эти значения вводились/считались где-то в юнити
Будешь юзать пятёрку - выброси стандартный террейн, если свет запекаться будет сотню лет. А так всё работает очень хорошо, для простеньких гуёв новый гуй лучше старого. Только с запеканием света накосячили, бист лучше был плюс запекание террейна может занять джве недели и всё равно не запечётся. Хуй знает, почему.
Кстати, про террейны, хочу к своей параше присобачить огромный бесшовный мир. В теории, точность ебучего флоата 7 знаков, 10 000 метров должно жрать спокойно. На деле у меня начинается проблема с этими флоатами уже на третьей тысяче, до двух с половиной ещё куда ни шло. Итого, мирок пять на пять, двадцать пять км квадратных, это как-то маловато для моей йоба-параши. В уе4 есть "ворлд атлас", но он говно, потому что уе4 говно и не хотелось бы жрать говно только потому, что ниасилил. Плюс там, если не ошибаюсь, прихуярили двойную точность, а это потеря флопсов раз в пять-десять. Нахуй надо, короч. Так вот, отошёл от темы. Если мирок можно хуйнуть не более 2.5км от центра мира, получается, что вариантов у нас не так много.
1. Загрузка других сцен.
2. Аддитивная загрузка других сцен.
3. Сдвигание центра мира.
Пилил кто-то что-то такое? Загрузка сцен выглядит самым простым, но тогда будет не один большой мир, а дохуя миров средних размеров. Аддитивная загрузка сцен - сдвигает ли она мировые координаты? А если нет - нахера она нужна вообще, блядь?
Ну и ручное сдвигание центра мира наверняка уебёт меня по башке проблемами с относительным позиционированием и физоном. Да, кстати, забавный хак, можно сделать везде скейл 0.5 вместо 1.0 и получить уже 5км от центра мира, но могут появиться проблемы с физонием. Сделал 0.75 хотя все скейлы 1.0, работает нормально. В принципе, теперь понятно почему во всей ммопараше персонажи выглядят, как милипиздрические куклы. Дохуя накатал, ну и хуй с этой хуйнёй. Попробую закодить каждый вариант. Инб: с этого и начинай, пидор графоманский.
хаха, это я и сам догадался
>а что в коде менять?
Засунь весь свой код в класс MoyCalculator, да сделай функции работы с ним. В юнити где угодно пишешь var calculator = new MoyCalculator(); Debug.Log(calculator.poshitay(2,2)); как-то так
>результат кроме окошка консоли выводился ещё в буфер обмена и в лог.тхт
Ебать ты девелопер.
У Cosole есть выходной поток Out, задать можно через SetOut(TextWriter). Если назначить через него MemoryStreem то можно читать програмно вывод на консольку.
Коде:
// инициализация где-то в юните!
MemoryStream MS = new MemoryStream();
TextReader TR = new StreamReader(MS);
TextWriter TW = new StreamWriter(MS);
Console.SetOut(TW);
// где-то в недрах калькулятора
Console.WriteLine("Calculator Obezumel!");
// вот хз как часто делает это консолька - тут это в целях теста.
TW.Flush();
// чтение в юните
MS.Position = 0;
string MsgFromCalculator = TR.ReadToEnd();
// еба очистка сообщения
MS.SetLength(0);
// где-то в недрах калькулятора
Console.WriteLine("222222222222!");
TW.Flush();
MS.Position = 0;
string NextMsgFromCalculator = TR.ReadToEnd();
PS: работает но это просто для лулза.
> значения вводились/считались где-то в юнити
Дерни методы вычисления прямо на прямую из юните.
>результат кроме окошка консоли выводился ещё в буфер обмена и в лог.тхт
Ебать ты девелопер.
У Cosole есть выходной поток Out, задать можно через SetOut(TextWriter). Если назначить через него MemoryStreem то можно читать програмно вывод на консольку.
Коде:
// инициализация где-то в юните!
MemoryStream MS = new MemoryStream();
TextReader TR = new StreamReader(MS);
TextWriter TW = new StreamWriter(MS);
Console.SetOut(TW);
// где-то в недрах калькулятора
Console.WriteLine("Calculator Obezumel!");
// вот хз как часто делает это консолька - тут это в целях теста.
TW.Flush();
// чтение в юните
MS.Position = 0;
string MsgFromCalculator = TR.ReadToEnd();
// еба очистка сообщения
MS.SetLength(0);
// где-то в недрах калькулятора
Console.WriteLine("222222222222!");
TW.Flush();
MS.Position = 0;
string NextMsgFromCalculator = TR.ReadToEnd();
PS: работает но это просто для лулза.
> значения вводились/считались где-то в юнити
Дерни методы вычисления прямо на прямую из юните.
>Попробую закодить каждый вариант.
Аддитивная загрузка центр мира не сдвигает, потому сдвигаю сам. Всё игровые координаты пришлось перепаять в относительные вместо абсолютных, хуй знает, что из этого может выйти. Решил на всякий случай перевести их в даблы, чтобы не проебать всю точность. Либо потом навешаю "вейпоинтов" - если игрок находится в коллайдере Х_1, значит его координаты такие-то. Но как-то костыльно. Что весело - похоже, физонию похуй на мгновенное перемещение на тысячу метров влево-вправо. Осталось слепить триллион сцен с одним террейном и дело в шляпе.
Так они весь рантайм вместе с моно на javascript портировали.
https://www.assetstore.unity3d.com/en/#!/content/19764
Я знаю, у тебя есть.
на cgpeers нет
на cgpeers есть tasharen fog of war можт подойдет
вообще такое впечатление, что на cgpeers перестали ассеты юнити таскать свежие.
Пилю игру для IOS/Android.
При нажатии на кнопку загружаю сцену стандартным Application.LoadLevel (name) и начинаются чудеса. Метод то срабатывает и загружается сцена - все норм, то просто наглухо виснет. ЧЗХ?!?! Я конечно загружаю сцену уже нагрузив 190мг на CPU и прибавляю еще 50 но даже 4s может еще чуть выдержать, да и к тому же профайлер на икскоде продолжает работать с мобилой как будто все норм . Конкретно игра стала так делать( ну так мне кажется) после обновления юньки( с 4.3 на 4.6f, кстати после обновления onMouseDown и подобные ему стали почему-то работать с тачем очередной ЧСХ! Вы не наблюдали?)
Самому запилить не судьба?
демка выдает не больше 5фпс лол
Там, кажется, и юньки свежей нет.
Анансы, а быстродеревья и не должны пихаться в террейновские деревья или я делаю что-то не так?
>Там, кажется, и юньки свежей нет.
Лол блядь, а нахуя она там?
Все функции открыли, нет, хочу воровать.
Короче сам спросил, сам понял, что дурак. Если в быстродереве дерево тупо сохранить и сунуть в юнити, то оно там отобразится, как меш. В террейн ставится. Но на террейне не рисуется. Надо юзать экспорт. Но вот беда, для растительности на террейне юнити инключит в шейдоры этой самой растительности шейдор террейна и подмешивает туда цвета. Причём тупо умножением. Надо ебаться с хидден шейдорами и выпиливать к хуям эту фичу.
if (Physics.Raycast(shootRay, out hit, attackDistance, enemyLayer))
Не совсем понял как работает рейкаст. Если я четвертым аргументом передам слой, который нужно чекать, то при попадании луча в объект другого слоя луч останавливается и рейкаст возвращает фолс что ли? Ибо видно как одна из башен тупо провожает цель взглядом и не стреляет, потому что ее рейкаст нащупал другой рейкаст.
По-моему, надо уже после хита проверять
if(hit.transform.gameObject.tag == "Huita")
Или
if(hit.collider.tag == "Huita")
>>163917
Бля, но как эту педерастию побороть? В основном шейдоре цвет задаётся хуй знает зачем, потом альфа этого цвета (который сплошной) умножается для катаута. Если это убрать - ничего не ломается. Но если в основном шейдоре не задать цвет, то цветом будет считаться белый. Он каким-то образом потом добавляется к цвету в SpeedTreeCommon.cginc. Ну, не мешает и хуй с ним. Но из-за ебанистической системы юнити потом на этот же мейн колор снова умножается цвет где-то в недрах TerrainEngine.cginc. Я точно помню, что выпиливал когда-то это дерьмо для травы, потому что все цвета херятся. А сейчас нихуя не могу найти, где удалить. Ну же аноны, неужели никого не смутили беложёлтые деревь на террейне? Или крутанули цвет в серозелёный и забили?
Хардкодить это, сами понимаете, не очень эффективно.
Так я проверяю.
>Мне кто-нибудь помогать будет?
А ты, что называется, не охуел? Час только прошел. Изволь ждать, когда ответят если ответят.
Это не платная техподдержка и даже не стэковерфлоу, чтобы тебе все бросались отвечать. Гугл есть, в конце концов.
Пиздооос. Короче проблема снова в энлигтехерн. Если при рисовании по террейну получаются белые деревья - надо запечь лайтмапу, потому что это к ней домножается мейн колор лишний раз. Но деревья будут один хуй ярче, чем вся остальная сцена, так что нельзя ставить мейн колор в 255, надо ставить по 128 и тогда ещё кое-как.
>>163940
Создаёшь новый тип объектов для ачивок, в объекте хранится инт и стринг. Создаёшь массив объектов-ачивок. Я так и собираюсь делать.
Как передать в стандартную модель освещения окклюжн?
Короче пишу o.Occlusion = _OcclusionTex.g
И ничего не происходит.
Что угодно пихаю туда - никаких изменений, и никаких ошибок. С остальными параметрами все отлично.
Почему бы не проверять в момент действия? Скажем, есть функция подбора вещи, при подборе ставим +1 в массив. Индекс ячейки - айдишник вещи, первое значение кол-во до достижения, второе - кол-во набранное. Для тех же квестов "убей триллион клопов" можно динамически создавать такие объекты и при киллах проверять, тот ли айди противника и тоже плюсовать. Ну хуй знает, я до этого пока не дошёл и точно не скажу, как удобнее.
Пишу шейдеры, проблем никаких.
Сейчас прикрутил 0-1 слайдер проверил оклюжн, работает как часы.
o.Occlusion = _AO;
Если сэмплишь его из текстуры, то надо же писать что то вроде
o.Occlusion = tex2d( _OcclusionTex, IN.uv_mainTex).g;
>Если сэмплишь его из текстуры, то надо же писать что то вроде
>o.Occlusion = tex2d( _OcclusionTex, IN.uv_mainTex).g;
Не, это понятно.
Вроде все так-же делаю.
Позже проверю на свежую голову.
Молодец, что не ждал три дня как некоторые, а сжал яйца в кулак и решил проблему. Почаще так делай, и игры может высплывут!
Добра тебе.
>>163997
Не. Нашел в чем проблема.
Когда сэмплишь текстуру, координаты развертки обязательно нужно брать из uv_mainTex.
То есть вот так правильно: o.Occlusion = tex2d( _OcclusionTex, IN.uv_mainTex).g;
А вот так уже не работает: o.Occlusion = tex2d( _OcclusionTex, IN.uv_myTex).g;
Сук.
Похожая ерунда с o.Alpha в катаут шейдерах, кстати.
Если не _mainTex и не умножается на _Color - хрен тебе а не тени, дружок.
суть в вебмке. хочу жесткое соединение, а не этот пиздец.
что я делаю сейчас: AddTorque на белую палку. палка примотана hingeJointом к кругляшу.
Ну хуй знает, я MainTex вообще не использую, координаты генерю по мировым xz координатам вертекса и экранным, искажаю их, скролю, лерпю и похуй, работает как надо. Покажи код что ли.
тьфу блядь, который день сижу, а тут запостил и сразу разобрался.
некостыльного фикса нет, джоинты всегда вот так ебутся, когда сила очень... сильная.
http://unity3d.com/learn/live-training/session/events-creating-simple-messaging-system
А в чем? Зачем ты добавил dynamic боди к объекту который должен быть намертво прибит?
Shader "Custom/Test2" {
\tProperties {
\t\t_Color ("Color", Color) = (1,1,1,1)
\t\t_MainTex ("Albedo (RGB)", 2D) = "white" {}
\t\t_Glossiness ("Smoothness", Range(0,1)) = 0.5
\t\t_Metallic ("Metallic", Range(0,1)) = 0.0
\t\t_OcclusionMap("Occlusion (G)", 2D) = "white" {}
\t}
\tSubShader {
\t\tTags { "RenderType"="Opaque" }
\t\tLOD 200
\t\t
\t\tCGPROGRAM
\t\t#pragma surface surf Standard fullforwardshadows
\t\t#pragma target 3.0
\t\tsampler2D _MainTex;
\t\tsampler2D _OcclusionMap;
\t\tstruct Input {
\t\t\tfloat2 uv_MainTex;
\t\t\tfloat2 uv_OcclusionMap;
\t\t};
\t\thalf _Glossiness;
\t\thalf _Metallic;
\t\tfixed4 _Color;
\t\tvoid surf (Input IN, inout SurfaceOutputStandard o) {
\t\t\tfixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
\t\t\to.Albedo = c.rgb;
\t\t\to.Metallic = _Metallic;
\t\t\to.Smoothness = _Glossiness;
\t\t\to.Alpha = c.a;
\t\t\tfixed4 occ = tex2D(_OcclusionMap, IN.uv_MainTex);
\t\t\to.Occlusion = occ.g;
\t\t}
\t\tENDCG
\t}
\tFallBack "Diffuse"
}
Shader "Custom/Test2" {
\tProperties {
\t\t_Color ("Color", Color) = (1,1,1,1)
\t\t_MainTex ("Albedo (RGB)", 2D) = "white" {}
\t\t_Glossiness ("Smoothness", Range(0,1)) = 0.5
\t\t_Metallic ("Metallic", Range(0,1)) = 0.0
\t\t_OcclusionMap("Occlusion (G)", 2D) = "white" {}
\t}
\tSubShader {
\t\tTags { "RenderType"="Opaque" }
\t\tLOD 200
\t\t
\t\tCGPROGRAM
\t\t#pragma surface surf Standard fullforwardshadows
\t\t#pragma target 3.0
\t\tsampler2D _MainTex;
\t\tsampler2D _OcclusionMap;
\t\tstruct Input {
\t\t\tfloat2 uv_MainTex;
\t\t\tfloat2 uv_OcclusionMap;
\t\t};
\t\thalf _Glossiness;
\t\thalf _Metallic;
\t\tfixed4 _Color;
\t\tvoid surf (Input IN, inout SurfaceOutputStandard o) {
\t\t\tfixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
\t\t\to.Albedo = c.rgb;
\t\t\to.Metallic = _Metallic;
\t\t\to.Smoothness = _Glossiness;
\t\t\to.Alpha = c.a;
\t\t\tfixed4 occ = tex2D(_OcclusionMap, IN.uv_MainTex);
\t\t\to.Occlusion = occ.g;
\t\t}
\t\tENDCG
\t}
\tFallBack "Diffuse"
}
>>164035
Хм, дело не в кривых руках. Похоже на баг, или дохуя интеллектуальную оптимизацию в парсере surface шейдеров. Надо бы забагрепортить.
Если в испекторе шейдера нажать на show generated code, то увидим что юнити нагенерировала из сюрфейс шейдера. А именно, в вертексном шейдере форварда uv_MainTex "пакуется" в float4
o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
а в фрагментом распаковывается обратно
surfIN.uv_MainTex = IN.pack0.xy;
На uv_OcclusionMap кладется хуй и он остается с нулевыми координатами.
В дефереде же все кошерно
o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
o.pack0.zw = TRANSFORM_TEX(v.texcoord, _OcclusionMap);
surfIN.uv_MainTex = IN.pack0.xy;
surfIN.uv_OcclusionMap = IN.pack0.zw;
Так что если переключишься в него, проблема пропадет. Ну или можно свою вертексную функцию дописать, в которой творить с координатами что угодно, если конечно есть такая необходимость.
Спасибо, хуясе знатоки в геде
В дефереде действительно все работает.
Но переключиться не могу, дело в том что пишу пак шейдеров для ассетстора и делать приписку мол "паcаны, тайлинг окклюжена работает только в дефереде" - не кошерно.
А вертексную функцию написать - скилов не хватает пока.
Так что оставлю как есть, наверное.
тому що этот кругляш - противовес, и кинематикой тут не обойтись.
Кстати, да. Я решил МЕТРИКИ оставить для ачивок, а для миссий сделать события вдохновился вчерашним юнитистримом ололо.
Теоретически добавив событие и написав небольшую задачу-обработчик, можно сделать что угодно. Например, сделать событие изменения инвентаря, и в задаче проверять есть-ли столько предметов определенного типа. Или событие убийства монстра, а в задаче просто считать сколько монстров убито и т.д.
Разработчики стараются, пишут changelog каждой версии, что изменено, что пофиксено.
А потом приходит вот такой вася с вопросом: "че туда напихали?".
Нахуй иди.
Cделай террейн поменьше или включи своп и жди до второго пришествия. Террейн 3х3 км у меня запекается очень долго, 2х2 быстро. Это проблемы с энглихтерен, он кривой до ужаса и хуже по качеству, чем бист. Не понимаю, зачем его заменили.
>GI: Fixed inconsistent Enlighten build timings; now it should correspond to wall clock time (unless you move at near speed of light relative to your computer, in which case it might still be wrong).
Ага, даже стараются спетросянить. Лучше бы движок пилили, тот же лайтмапер ебучий.
Выпек. В процессе уменьшил разрешение в четыре раза, до 32832х32832. Только нахуя? Юнитивский террейн не может в хейтмапы. На 16 бит он обсирается, а на 8 бит пиздецовые ступеньки.
Мне не интересно, что тот эстонский педик в чейнжлоге написал, мне интересно как ананасам по ощущениям, так примерно можете сказать?
Двачую. Нехватает какой-то перчинки... воздушности что-ли, дерзновенности и в то же время привязанности к корням, как-то всё пресно, и сумбурно слегка. Думаю, стало несколько плотнее, но это для любителей серьёзного погружения в суть вещей. Мне же больше нравилась поверхностная лёгкость и скольжение предыдущих.
Как-то так.
Если прогреть юнити в течении 30 минут каким-нибудь годным проектом, предварительно её "натаскав", запуская готовые хорошие игры (типа флапибёрдс, энгрибёрдс или любые другие. заканчивающиеся на "бёрдс"), в течении недели с периодичнсть раз в 15 минут - то что-то такое есть, но на грани восприятия. Естественно, нельзя забывать о хорошем компе с минимум с 8ГБ рама, обязательно последней виндой (можно бетку, главное, чтобы последняя) и последней видеокартой от Нвидиа (чтобы циферок в номере было побольше), ни для кого не секрет, что хороший мощный комп - 99% успеха в геймдеве. Ну, брэндовые клавиатура и мышь минимум за 100$ каждая - это настолько очевидно, что даже вспоминать стыдно. Набирать код на немеханическом говне за пять баксов, гы, даже представить сложно.
>хороший мощный комп - 99% успеха в геймдеве
Это половина успеха.
А вторая половина: борода+андэркат+рубашка в клеточку.
>REGISTRY паттерна
Что это паттерн такой? Чето не помню, чтобы Банда Четырех что-нибудь говорила о таком паттерне.
мимо-паттерноёб
Я решил делать примерно так:
-----------------------------------------------------------------------------
string sep = Path.DirectorySeparatorChar.ToString();
string path = Application.persistentDataPath + sep + "ololoTest.txt";
StreamWriter sw = new StreamWriter(path);
sw.WriteLine("Hello There!");
sw.Close();
-----------------------------------------------------------------------------
string sep = Path.DirectorySeparatorChar.ToString();
string path = Application.persistentDataPath + sep + "ololoTest.txt";
StreamReader sr = new StreamReader(path);
string line = sr.ReadLine();
sr.Close();
-----------------------------------------------------------------------------
Какие подводные камни? Я слышал проблемы с созданием файлов через web-плеер, но меня это пока не сильно беспокоит. В общем есть ли способы лучше? Можно ли получить доступ к папке Resources?
При чем здесь сериализация? Нет. Мне удобнее хранить в текстовом формате. Мне нужно будет читать "шапку" сохранения побыстрому и использовать хеш над данными из сохранения. В общем не суть. Вопрос насчет того КАК СОХРАНЯТЬ. А не что сохранять.
А-ля GameState? - Что это значит?
только имеет множество других ограничений вроде отсутствия сериализации наследования, но ты всеравно похожу стринги хранить собрался.
>А-ля GameState? - Что это значит?
значит, что состояние игры хранишь в этом классе. ты ведь в любом случае хранишь где-то это состояние, лучше хранить все в одном классе и сериализировать, десериализировать его тебе же НАДО
нельзя сохранять в ассет. из него можно только читать и редактировать в редакторе
>обычно имеется ввиду что-то "автоматическое"
https://msdn.microsoft.com/en-us/library/ty01x675%28v=vs.90%29.aspx
Ты думаешь я этого не видел или что? Потралькать решил?
Я понимаю, что советов мудрых дать хочешь, спасибо. Я не утверждаю, что использовать текст это круто. Я просто хочу правильно работать с файлами. Чем их наполнять дело другое. Понимаешь. Ответь на то, что я спрашиваю, пожалуйста.
Добавлю. Вопрос не по C# и погромированию. Вопрос именно по Unity3D.
Cогласно документации, вызывается каждый апдейт, пока юзер жмёт кнопку и похуй на движения. Кто ещё обосрался-то.
>>164318
Не пойму, в чём проблема. В юнити реализованы все фичи шарпа которые реализованы в моно, так что никаких проблем нет писать в файл что угодно. Сходи на мсдн и покури доки. Рекомендую пихать в джсон, очень удобно.
>Я слышал проблемы с созданием файлов через web-плеер
Через веб сохраняй в юзер.префс и засри реестр полностью. Но не похуй ли, в самом деле? Тем более, что скоро плеер вообще отвалится.
Хватит посылать меня в msdn. Я сеньер C# нет. Так в json и собираюсь.
В чем проблема? Я не разбираюсь в Unity3D. И не хочу. Я пытался писать в каталог Resources. На ПК все замечательно работало StreamWriter шалил, но на android нет по понятным причинам. Решил использовать путь Application.prе_что-то там_dataPath. Это лучшее решение. Т.е. абсолютная адресация это стандарт юнити? Или же есть штука типа Asset.CreateFile (str name) и так надо делать? Если лучше абсолютная адресация, то Application.prе_что-то там_dataPath это лучший выбор?
Неужели я так непонятно пишу юнитоиды?
>Я не разбираюсь в Unity3D. И не хочу.
>Пытается что-то писать на юнити
Топкек) ловите шизика))
Да брось. Я не 3D графин делаю. Знаний их нет из GL достаточно. Просто использую...
Да иди в жопу. Лучше проблему мою реши.
да~ обосрался. UnityEdtior нет в сбилженых проектах, если не пользешьзуешься девелопмент билдом(вроде). читать можно, писать нельзя.
для файловых операций есть отдельно хуйня, кстати. http://docs.unity3d.com/ScriptReference/FileUtil.html
Это ты типа свой батхерт так выражаешь или что? Извини, если недопонял.
>>164337
Знаю, что нет в билде. Очевидно из названия.
Видел эту штуку, естественно. Это же просто обертка. Суть в том какой путь указать, если нужно так делать (через абсолютную адресацию).
Товарищи Вы меня расстраиваете. Сговорились что-ли? Никто не хочет прочитать мой вопрос внимательно, а только говорите первое, что придет в голову. И кидаете десадовские решения насчет погромирования.
>Т.е. абсолютная адресация это стандарт юнити?
да
>Если лучше абсолютная адресация, то Application.prе_что-то там_dataPath это лучший выбор?
да
>Неужели я так непонятно пишу юнитоиды?
да
>В чем проблема?
да
>Это лучшее решение.
да
Ты бы лучше объяснил чем тебе это решение не нравится, а то получается что-то вроде "Пацаны, я записал кароч float a = b + c;. Это лучшее решение для сложения? Или есть лучше?"
у которой, лол, внезапно документация далека от полной. а даль, например можно иметь кнопку для создания пустых ассетов.
собственно что касается пути. ты это хочеш чтоли? http://docs.unity3d.com/ScriptReference/Application-dataPath.html
Стандарт говоришь. Тут поподробнее. Есть ссылка на местного Ричарда Гейба, который говорит это?
Мне все нравится. Только мне нужно быть уверенным, что это сработает на всех платформах. А гарантировать такое очень сложно. Вот я и подумал - юнити это штука для игр. Зачем мне юнити? Говорят она кроссплатформенная. Это то, что мне нужно, очень здорово! В играх часто нужно хранить информацию между сессиями. Так может юниты позаботились о кроссплатформенном хранении информации? вот только не кидайте видос про сейвы. Вы что думаете я не посидел в гугле пару дней перед тем как вопрос задать?
>>164340
Мама роди меня обратно. Ну там же сразу написано, что ридонли. Или я ослеп.
Друзья мне начинает казаться, что не все здесь сидящие настоящие эксперты игростроя.
Совсем забыл сказать. Есть лучше.
>Ну там же сразу написано, что ридонли.
А почитать дальше?
------>>>>>>use Application.persistentDataPath to save data<<<<<<------
То что там в скобках написано ридонли - это относится к этому свойству, а не к папке на которую оно указывает.
http://answers.unity3d.com/questions/458411/c-how-to-save-data-during-gameplay.html
>все здесь сидящие настоящие эксперты
Здесь просто настолько все офигенные профессионалы, что им смешны твои потуги.
>string path = Application.persistentDataPath + sep + "ololoTest.txt";
Для составления валидных путей есть Path.Combine(YuorPath, AdditionPathWithFileName).
Через File.Exist(Path) и Directory.Exist(Path) можно проверить существование файла/каталога.
>StreamWriter sw = new StreamWriter(path);
>ololoTest.txt
Тут наверно нужен TextWriter/Reader, иначе в файл будет записана бинарная параша.
>В общем есть ли способы лучше?
Хз, может XML?
Ты тупой или зеленый.
>Так может юниты позаботились о кроссплатформенном хранении информации?
Об этом позаботились писатели моно. Прост юзай стандартный путь схоранения файлов в папки для которых юнетики гарантируют их существование и доступность. Все.
Вчемблдьпроблема? Ко-ко-кок кросплатферменность ? Она из каропки.
Не знаешь как писать/читать текстовые фалы? Потренеруйся на кошках из мсдна, потом попробуй в юните.
> может юниты позаботились о кроссплатформенном хранении информации?
Позаботились.
PlayerPrefs.
>А дальше почитать?
Так я и так так делаю, что мне там читать?
>>164352
> Для составления...
Спасибо, ценная информация.
>>164352
>Через File.Exist
О, а как создать файл не подскажешь?
>>164352
>Тут наверно нужен
Первый год на шарпе?
> Может хмл
Спасибо, я как раз спрашивал в каком формате сохранять.
>>164353
А каким папкам они гарантируют существование и доступность? Можешь перечислить?
>>164358
Разве это эстетически правильно хранить большие и сложные структуры данных в PlayerPrefs?
>>164344
Это хорошо, что профессиональны. Это радует.
>А дальше почитать?
Так я и так так делаю, что мне там читать?
>>164352
> Для составления...
Спасибо, ценная информация.
>>164352
>Через File.Exist
О, а как создать файл не подскажешь?
>>164352
>Тут наверно нужен
Первый год на шарпе?
> Может хмл
Спасибо, я как раз спрашивал в каком формате сохранять.
>>164353
А каким папкам они гарантируют существование и доступность? Можешь перечислить?
>>164358
Разве это эстетически правильно хранить большие и сложные структуры данных в PlayerPrefs?
>>164344
Это хорошо, что профессиональны. Это радует.
>Я пытался писать в каталог Resources
Ты ж долбоёб.
>>164344
>Здесь просто настолько все офигенные профессионалы
Да даже если человек недельку с шарпами возится, даже без юнити - ему уже будет смешон этот "сениор". Клоун анальный, не знает, как файл записать, пиздец просто.
>>164352
Гарантированно валидный путь - директория игры же. Там можно и схоронять всё в папочку сейвов. И чем плохо писать бинарную парашу? Всё равно потом разбирать и не похуй ли, разбирать джсон, хмл или бинарные данные? Ну, разве что хмл чуть похуже.
Если я захочу записать в файл - то я погуглю и напишу за пару минут.
Писал в файлы я разве что, когда лабы делал в универе, а ещё тулза одна была помню, да только там NLog сам из коробки писал.
А так все данные как бы в бд хранятся.
Короче, сразу видно долбоёба, который из универа ещё даже не вылез.
мимо другой сениор
Спасибо за ценные непредвзятые комментарии и уважение к собеседнику. Сразу чувствуется стиль геймдизайнера - уметь слушать окружающих.
>>164368
Директория игры - это где в android не подскажешь? А в ios? Что насчет xbox?
>>164368
Чем плохо в бинарник? Я не говорю, что это плохо. Но мне стоит хорошо подумать как это реализовать. Потому что, если выйдет новая версия не хотелось бы терять совместимость сейвов на пустом месте.
И вообще что вы заладили. Я же сказал, что не спрашиваю в каком формате хранить. Зачем вы мне что-то такое советуете?
>Разве это эстетически правильно
Нет конечно.
Я пишу в текстовый файл. Но ты же спросил про универсальное кроссплатформенное решение.
>>164368
>Гарантированно валидный путь - директория игр
Хуй там.
В редакторе да, все хранится. А в билбе нужно заморочится с правами доступа.
Лучше Application.persistentDataPath
Лол, вылез долбоёб, который не знает, что такое базы данных. Сеньёров без базовых знаний тред.
>>164370
Хорошо, поясню подробнее. Нельзя писать в папку ресурсов.
>>164370
>>164371
>Директория игры - это где в android не подскажешь? А в ios? Что насчет xbox?
Это не валидные устройства. Петросян жпг
В самом-то деле, так сложно зайти в справку и найти рекомендованные переменные окружения? Напоминает уёбков из эпик гейс, которые прописали путь к студии, как "С:/Program Files/Microsoft Visual Studio" прямо в коде блядь.
Базы это файлы. Твоё окружение это не ось, а юнити. Кури мануалы, сделай пару уроков с сайта юнитеков. Потом сходи и почитай мсдн. Если уж ты вообще нихуя не понимаешь.
Если распостранить по дедукции, то твоя мамка тоже файл с открытым доступом. Извини вырвалось.
В самом деле неужели не понятно что мимодругойсиньер имел в виду. Зачем ты срач разводишь?
>>164379
А виндовс для девушек без страха мне не почитать? Лучше кинь ссылку где в окружении юнити есть абсолютный валидный платформонезавистмый путь, раз уж неплохо разбираешься в этом. И чем этот подход лучше Application.prе_что - то там_dataPath. Заранее спасибо.
>Гарантированно валидный путь - директория игры же
Виндовс предотвратила попытку программы внести изменения в систему. Разрешить программе от неизвестного поставщика внести изменения в данный компьютер?
ЧТО!? ВИРУСЫ! ЭТО ВИРУС!!! ЗАЧЕМ ТЕБЕ КОНТРОЛЬ НАД МОИМ КОМПЬЮТЕРОМ!?!?
АВТОР ГДЕ МОИ СЕЙВЫ Я ПЯТЬ ЧАСОВ ИГРАЛ НИХУЯ НЕ СОХРАНИЛОСЬ ТЫ МУДАК ОДНУ ЗВЕЗДУ ДЕРЖИ ДАЖЕ НЕ ДОСТОИН!!!!
>И чем этот подход лучше Application.prе_что - то там_dataPath.
Этот подход и есть Application.persistentDataPath. Его ввели в юнити 3 и тебе никто не мешает им пользоваться в юнити 5. Так понятнее? Это и есть разумный подход. Даже больше, в справке юнити и советуют его использовать, потому, блядь, я тебе и пишу, кури справку, блядь. Сам сказал, что вопрос касается юнити, вот и используй, что тебе юнити даёт. Есть ещё, как уже писал, Application.dataPath, который будет валидным для большинства устройств, потому что они на шиндовс.
>неужели не понятно что мимодругойсиньер имел в виду
Неужели не понятно, что я имею ввиду? Нихуя он не сеньёр, а какой-то хуй с горы, для которого бд - блэк бокс, юнити блэк бокс и так далее. К тому же, он не только не понимает работу инструментов, он не имеет понятия о юз кейсе и таких-то сеньёров точно быть не должно.
Существуют исключения, например. И почему "неизвестный" поставщик? Тут каждый первый сеньёр, вот и используйте сертификаты, блядь.
>Ты говорил про переменные окружения.
>Твоё окружение это не ось, а юнити.
Ты начинаешь уже слишком толстить.
>как сейчас грамотные дяди обходят проблему хеллоуина?
Так же, как и все. Надеюсь, для тебя мелкомягкие и розрабы cql баз достаточно грамотные? Ведь ты наверняка, как и каждый предельно тупой человек, очень высокого мнения о себе. Так вот, к проблеме хеллоуина. Обходят её простой буферизацией данных. И снова - пиздуй читать мелкомягких https://technet.microsoft.com/ru-ru/library/ms190435(v=sql.105).aspx
А то ты не только на собеседовании позоришься, ты даже на двачах опозорился. А хуже уже нет.
Ты изобрел компоненты?
Ладно ты меня раскусил. Стало скучно и я решил затролить лалок. Но от твоего зоркого взгляда никуда не денешься. Не держи зла.
Ну типа того.
У меня есть нечто подобное. Скорее всего, подход костыльный, но всё-таки. Есть класс, в котором хранится большая часть данных. Есть ссылка на класс. Ну и соответственно, скрипт1 и скрипт2 могут использовать myClass.var в любом месте.
>>164208
Всё получилось. Итого, нужно 8 бит, в фотошопе открывать нельзя, иначе хейтмапа превращается в говно (хуй знает, почему). Юнити с 16 бит категорически не дружит, что тоже досадно - слишком резкие переходы тонов. Лечится частично снижением высоты террейна и увеличением размера относительно размеров хейтмапы. Допилю алгоритмы и буду заниматься левелдизайном, расчётная площадь мира ~5к км квадратных + 25%.
Я уже по-другому придумал. Передаю в библиотеку методов компонент скрипта и в методах юзаю все эти переменные с префиксом скрипта. Правда пришлось все эти переменные сделать паблик. Даже не знаю хорошо это или плохо.
Хочу вызывать различные методы в зависимости от значения переменной. Хочу держать их всех в отдельном скрипте. А нужно это для того, чтобы избавиться от избыточности.
Непонятно что ты хочешь и зачем тебе вызывать разные методы в зависимости от переменной.
Может вообще есть другое более просто решение.
Ты рассказывай не что у тебя там в скрипте, а какую тебе надо прикладную задачу
Эк тебя порвало, обиженка. В принципе, я не удивлён, с такими то логическими конструкциями ты мало кому нужен.
Как дойти от записи в файл до устройства БД и юз кейсов. Для чайников.
тот самый сениор
>>163609
Это снова я. Мобы ходят, башни стреляют. Теперь занимаюсь механикой строительства башен. Решил использовать систему, которую видел в стратегии на UE4.
Есть заблокированная платформа, при клике на неё должно появляться предложение анлокнуть за X голды. После этого она становится анлокнутой. При клике на анлоктную платформу должны появляться три иконки с башнями, и при клике на соответствующую иконку должна строиться соответствующая башня.
Собственно, реализовал что при клике на залоченную платформу она анлокается, то есть тупо один префаб заменяется другим. Нарисовал все иконки и текстуры. Как реализовать строительство, как выводить "плавающие" в воздухе кликабельные иконки, как ввести переменную с голдой, как отнимать голду и как начислять голду за убитых мобов?
>Как реализовать строительство
Наверно надо написать компонент Stroitelstvo и дать его площадке - в нем считать время и показывать какой-нибудь ассет анимации, а потом подменять все это на башню.
>как выводить "плавающие" в воздухе кликабельные иконки
Хуй его знает, можно билборд+ригид_боди + рейкаст = костыль интерфеса. Можно взять центр платформы перевести его в пространство экрана и в этом месте нарисовать стд:юните_интерфейс(сам так делать буду).
>как ввести переменную с голдой
Я уже ввел в твою мамку!Не удержался. Попробуй в игрока. Ему понравится.
>как отнимать голду и как начислять голду за убитых мобов?
Пообуй заставить мобов генерить статический глобальный эвент - OnMobDied, а игроком на него реагировать(деньги начисляй).
> Как реализовать строительство, как выводить "плавающие" в воздухе кликабельные иконки, как ввести переменную с голдой, как отнимать голду и как начислять голду за убитых мобов?
Как хочешь!
>Уличили в тупости
>АЗАЗА ЗАТРАЛЕЛ
>я низнаю не талька чта такое базы данных, но и чё такае юскийс
Ну вот ты и доказал, что пиздобол обыкновенный, а не сеньёр. Первый хоть признался, что тралл. Лол.
>>164460
>Как реализовать строительство
Класс "вышка" с состояниями, каждое состояние - этап постройки вышки можно включительно с "непостроено". На смену состояния вешаешь смену префаба. Плавающие иконки легко и просто через новый гуй, там, кажется, даже канвас можно сунуть в префаб и отображать в скринспейсе.
>как ввести переменную с голдой
Непонятен вопрос. Добавь инт и с ним уже работай.
Чувак, тебе сколько лет?
Серьёзно.
У тебя какие-то очень свои представления о том, что должен знать сениор, и это очень смешно.
К слову о тупости -
Какой еблан вспомнит про БД, когда речь идёт о простой записи в файл? Пиздец же. Как твоя фантазия дошла до юз кейсов я даже боюсь спросить.
Так ты ж обосрался на тотальном незнании основ, какой с тебя нахуй сеньёр? Что первый, что второй.
>Какой еблан вспомнит про БД, когда речь идёт о простой записи в файл
Давай не передёргивай, уёбок. Речь о "я не пишу в файл, я пишу в бд". Тут-то тебя носом и ткнули, что ты нихуя не понимаешь, что такое бд.
> дошла до юз кейсов
Был бы хоть джуниором, понимал бы. А так обычный ноубрейн ноускилл.
>>164551
Поддвачну. Точно так же я мог бы написать, что я кармак или билл гейтс, но обосраться на чём-то примитивном. Незнании английского, например.
Вот и всё нахуй, гугл выключил старый апи. Юнити плеер в бравзере искаропки больше не работает.
TD. На каждый префаб башни вешается один и тот же скрипт, код в котором одинаков для всех башен. Единственный метод, который будет для каждой башни свой - это метод Shoot(). Этот метод будет отвечать за поведение башни при атаке. Смысла прописывать поведение для всех башен в один скрипт и вешать его на каждую башню я не вижу, поэтому хочу вынести все поведения в отдельный скрипт, а уж в зависимости от типа башни брать из этого скрипта нужное поведение.
Может и есть более правильное и красивое решение, я с радостью бы взял его на вооружение.
>Единственный метод, который будет для каждой башни свой - это метод Shoot()
Ну так и запихни этот мотод в компонент(или интерфейс). Потом напили 100500 компонентов разных атак, и раздай их башням при их создании.
Получится как ты хочешь:
>хочу вынести все поведения в отдельный скрипт
Вместо проверки переменой башни каждый кадр для нужной атаки будет всего одна прверка в момент создания башни для определения компонента.
А, то есть ты сделал много скриптов для башен которые отличаются только методом Shoot()? Открой для себя наследование классов. Это идеально решает твою проблему.
Не хочешь делать наследование, можно сделать один скрипт поведения для всех башен и добавить к башням, а для каждого Shoot() создать свой компонент (что-то вроде Shootable) c методом Shoot()(, и когда башни нужно стрелять просто пишешь SendMessage("Shoot").
но лучше сделать наследованием, просто делаешь метод shoot виртуальным и переписываешь в каждой башне.
>Смысла прописывать поведение для всех башен в один скрипт и вешать его на каждую башню я не вижу, поэтому хочу вынести все поведения в отдельный скрипт а уж в зависимости от типа башни брать из этого скрипта нужное поведение.
Почему не сделать для каждой башни свой скрипт?
>Альтернатив-то нет.
Проиграл с этого гуглоребенка. Добровольно есть во всем уступающее говно, которое еще теперь и (ебет) решает за пользователей что им нужно - это что-то вроде линукс-фанатиков.
Не любишь срачи в тематике?
>>164590
Кстати, тоже так делал, гораздо удобнее, когда не на каждой башне свой скрипт, а есть один объект, который руководит всеми башнями. Да и по производительности лучше должно быть.
>>164591
Единственный рабочий браузер, после ухода оперы с престо, это хром. Лиса уже лет пять, как недобраузер и не нужна.
>Лиса уже лет пять, как недобраузер
Все ясно, кукаретик. Сам я не видел, но пацаны рассказывали, да? А я вот сравнивал, пользовался обеими браузерами. И для меня выбор более чем очевидным.
Ты типичный ребенок, который установил хром ПОТОМУ ЧТО ОН У ВСЕХ ЖИ)))
ну сиди на это говне дальше. видимо хромоюзерам нравится чувствовать хуй у себя в жопе.
что вам там еще собираются отрезать? что там гугл считает хромодаунам еще нинужно?
>"я не пишу в файл, я пишу в бд". Тут-то тебя носом и ткнули, что ты нихуя не понимаешь, что такое бд.
Лол, пиздец же.
Теперь буду говорить, что я пишу в файл, когда речь идёт о бд.
Сосач такой сосач.
Хуй в жопе как раз у тебя, гугол двигает прогресс и по его инициативе юнитипидоры уже соснули сочного хуйца, и это только начало.
>Кстати, тоже так делал
То, что ты делал - это хуита, и так делать не нужно.
Может в твоем недоделанном примитивном tower defence это и показалось нормальным, но в нормальных больших играх так не надо делать, иначе кривая и не гибкая архитектура в будущем доставит много проблем.
Ты епт. Отрезали одну из возможностей, оставив тебе право только кукарекать НИНУЖНО.
> Сам я не видел
Я её несколько раз ставил. Первый раз она падала непонятно почему. Потом просто перестала запускаться. Хуйня короче.
>>164603
Я бы не сказал, что соснули, есть же компил в хтмл 5. Но это именно, что прогресс - старый формат апи это очень большая дыра в безопасноти. Хром теперь безопасен. Остальные браузеры - нет. И что же мы выберем, дырявое решето или нормальный браузер?
>>164606
>То, что ты делал - это хуита, и так делать не нужно.
Хуита - клонировать один и тот же скрипт на триллион префабов. И у меня была не тд, а фпс и так я руководил ботами. Сначала вешал по скрипту на бота, но быстро понял, что такой подход уёбищный, кривой, неудобный и не подходит для нормальной игры. Потому сделал всё аккуратно через класс-"менеджер", что упростило архитектуру и сделало её более гибкой и расширяемой.
> И что же мы выберем, дырявое решето или нормальный браузер?
Браузер, естественно. То есть firefox.
>Хуита - клонировать один и тот же скрипт на триллион префабов.
Как я сразу не догадался что ты этот хромодаун.
Что ты имеешь ввиду под словом компонент? Еще один скрипт?
На счет ходьбы по различным поверхностям: можно пускать рейкаст вниз и прощупывать им поверхность и на основе этого выбирать какой звук проигрывать.
И как выбирать? Как звуки лучше хранить?
Теперь в копателя онлайн не поиграть, бида бида.
Пиздец совет. Лучше раскидать по уровню области-триггеры и в OnTriggerEnter менять звук на нужный. А с рейкастом тебя в приличном обществе нахуй пошлют.
В приличном обществе рейкастами не пользуются?
Почему? Звук как правило вешается на событие анимации. Пара рейкастов в секунду максимум. А триггером ты что сделаешь?
В общем я пока думаю сделать как-то так. Осталось придумать как лучше добавить теги к объектам.
>Браузер, естественно. То есть firefox.
На ноль поделил.
>>164644
Он предлагает, походу, по границе типа местности наставить триггеры и переключать по ним звук. Но, во-первых, игрок же может спрыгнуть с высоты и перепрыгнуть триггеры. Во-сторых, их надо будет очень дохуя, а у физона лимит на 65к, вроде, объектов в сцене. Опять же, производительность по пизде пойдёт. Но и пара райкастов в секунду - это слишком дохуя. В крае получаются данные из типа материала, на котором стоит персонаж. В юнити без костылей так не сделать но и в крае через костыли, другое дело, что там этого не видно.
>вивальди
сделан на движке хрома и является таким же ненастраиваемым куском засохшего твердого говна. опера была годной потому что ее можно было настроить под себя как угодно. в лисе с этим похуже, но хотя бы можно кнопки таскать.
ну а с хромом все понятно. хромодебилы пусть кукарекают что нинужно, уродливые табы на самом деле красивые, эта ебанутая кнопка нового таба очень эстетично выглядит, а гиганский шрифт в адресс-баре очень кстати - ведь часто приходится читать адресную строку, вдруг там появится важное сообщение!
для обычных объектов можешь просто смотреть что там за материал, для террэйна хуй даже знает. можешь смотреть координату игрока на террэйне и смотреть какой индекс сплат-мапа там преобладает, есть ли, или нет там трава.
и правда лол. пара рэйкастов в секунду наверно вот расплавит компьюторы.
у меня, например, мешанина из вертексов переводится в карту высот просто рэйкастами. этак 1к * 1к. секунды три может пека и думает.
о ужас страшно представить как же новый гуи определяет куда тычут курсором?
>>164668
а хуй тогда знает как. я двадэ не смотрел.
>у меня, например, мешанина из вертексов переводится в карту высот просто рэйкастами.
Так написал будто гордишься тем что ты уебок.
Тащишь мышью Гуй Текст в левый верхний угол, в скрипте создаешь переменную public Text text, перетаскиваешь мышью этот текст на созданную переменную. при изменении значений playerMoney делаешь text.text = playerMoney
В Update пишу
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
if(hit != null)
{
\tDebug.Log(hit.collider.name);
}
И он у меня выводит постоянно "NullReferenceException: Object reference not set to an instance of an object"
Ведь проверочка на отсутствие объекта установлена. Чому же так может быть?
Лол блядь, написал и понял в чём обосрался - нужно проверять hit.collider а не прсото hit.
Всем спасибо!
>hit != null
Вдогонку, RaycastHit2D это структура т она всегда имеет значение, так что проверять её на нулл - долбоебизм. Рад что нашел проблему сам. Добра.
Лол, а кстати - что теперь будет? Только хром ВЗБУНТОВАЛСЯ против юнити или все браузеры нахуй его шлют? И если все, то что предпринимает совет директоров юньки? Делают ставку на WebGL ? Но он же сейчас выглядит совсем монструозно - сраная сценка с кубиком под 100 метров + низкая производительность. Планируется исправить это дерьмо?
Да вообще всем похуй. Кому нужен юнити в вебе? Онлайн-параша отвалится, ну и слава богу. Я бы все выпилил нахуй, и флеш и вебгл. Меньше дерьма в интернете было-бы
Я исхожу из того, что чем меньше - тем лучше. Ведь ещё есть куча других задач, на которые расходуются ресурсы. Делай как хочешь, а по-моему, дохуя.
>>164684
Это же, вроде, православный новый гуй, что тебе не нравится?
>>164741
Четыре блядь года все знали, что старый апи вот-вот отвалится. Всем было похуй. Апи отвалился. Всем по-прежнему похуй. В каком-то ещё браузере, что-то там про подгорелую лису, тоже хотят отказаться от этого апи. Тем более, никто не мешает внезапно, заюзать новый апи в жабе или юнити - давалось 4 года на это и гугл ждал, пока процент использующих плагины с этим апи станет ниже 30% и только тогда выпилил его нахуй. Похуй всем, было есть и будет. Я вообще хром не обновлял пока - но мне похуй, флеш выключен, юнити выключен, джава выключена.
Ну ладно, пока я добрый, юзай флаги. chrome://flags/#enable-npapi
Лол, но учти, в сентябре выпилят и это. Ставка на самом деле делается на хтмл5, хотя у него производительность - просто пизда. Ну и похоже, что адоб отстегнул монету - флеш-то не помер.
есть рабочий билд webgl. что еще нужно?
>gamejolt довольно много приличных игр на юньке было
приличных игр онлайн нет. их на десктопе-то мало, а в онлайне их нет вообще.
Спасибо, няша
>флеш-то не помер
Ох лол - представляю как бы сильно рвались у всех жопы. Даже не представляю что будет если кто-то откажется от флеша резко и прямо в ближайшее время - у юзеров, сайтодержателей, банеро-фрилансеров КРИЗИС наступит.
Если вы не поняли о чем речь, то в юнити при удалении объекта (Destroy) он на самом никуда не девается, а просто возвращает фальшивый null. И это приводит к фейлу если использовать не юнитивские объекты.
Читал уже как-то о такой проблеме в контексте "подтекания памяти".
Вот здесь и просто дестрой описано
http://blogs.unity3d.com/2014/05/16/custom-operator-should-we-keep-it/
Хуй знает, как лучше дестроить объекты, чтобы они реально уничтожались.
Там может и нигде. Это я столкнулся с такой проблемой. Хранил ссылки на объекты в System.Object.
>>164818
>Хуй знает, как лучше дестроить объекты, чтобы они реально уничтожались.
if (myObject == null) myObject = null;
>null check was more expensive than expected, and was the cause of not seeing any speed benefit from the caching
пидоры рукожопые. так и не понял зачем они вообще эту хуиту использовали.
Ну или мне просто нужен шейдер для 2D, который бы работал с sortingOrder. А то спрайтовому нельзя назначить текстуру, а другим на sortingOrder плевать.
http://unity3d.com/ru/get-unity/download/archive
Вот тут можно скачать встроенные шейдеры. Если не переназвать шейдер и кинуть в ассеты, то он заменит стандартный.
По твоей же ссылке сказано, что объекты реально уничтожаются. Обертки только остаются, но они места занимают чуть меньше чем нихуя. Высосали проблему из пальца.
Блядство натуральное. Хотел разбить сцену на несколько сцен и грузить их в рантайме при необходимости, а ненужное выгружать. На самом деле LoadLevelAdditiveAsync блокирует нахуй основной игровой поток и порождает фризы, то есть не асинхронная операция и в справке пиздёж. Нагуглил на форуме десяток подобных вопросов, от которых юнитеки тупо отморозились.
Это потому что ты даун.
Я вот этот кун >>164460 которому всё объяснили, но у меня все равно нихуя не получается, и я каждый раз сажусь и психую нахуй, от того что у меня ничего не получается.
>>164893
Я и не говорил что считаю это чем-то простым, просто столкнулся с суровой реальностью - я слишком тупой чтобы это сделать.
>>164888
>половину прибыли
Которой нет.
Хотел сделать классический Tower Defense. Вот список нерешенных задач:
1. Выводить деньги игрока в левом верхнем углу экрана.
2. При клике на специальный объект на игровом поле над объектом появляется кнопка с предложением разблокировать объект за X денег.
3. При клике на разблокированный объект появляются две иконки с башнями, одну из которых можно построить на этой платформе.
4. Механика башни, пассивно замедляющей и атакующей врагов на расстоянии X.
5. Механика башни, атакующей только один класс врагов (летающие).
Собственно, есть готовая карта, с модельками и иконками, есть модельки башен, есть логика монстров (идти до базы игрока и получать урон) и простая логика башни (найди таргет - стреляй). Монстры идут по пути, и при столкновении с базой игрока уничтожатся.
Все вопросы решаются за полчаса гуглинга. Сириусли. Тем более, тебе уже писали, как вывести деньги. Добавил в сцену канвас, добавил на канвас элемент "текст", якоря в центр экрана или растянул по углам. Скриптом меняешь значение текста.
>С РАДОСТЬЮ ПОДЕЛЮСЬ!
хе-хе! Смотри же, не обмани!
Рассказывают как вести деньги:
1. создаешь Canvas,
2. нажимаешь правой кнопкой мышки - create empty,
3. называешь его MoyGUI
4. нажимаешь на новом объекте правой кнопкой мышки - UI - create text - называешь его MoiDenezhki.
5. Выбираешь шрифт, цвет, перемещаешь куда надо.
6. Снова выбираешь MoyGUI - Add Component - New Script.
7. добавляешь using UnityEngine.UI;
8. пишешь 2 переменные: Text moiDenezhki и GlobalVars moiPeremennye.
9. в Start() пишешь: moiDenezhki = transform.Find("MoiDenezhki").GetComponent<Text>(); moiPeremennye = FindObjectOfType<GlobalVars>();
10. в Update() пишешь: moiDenezhki.text = moiPeremennye.PlayerMoney.ToString();
11. PROFIT
вместо пункта 9 можешь просто объявить переменные как public и перетащить в них текст и объект на котором висит твой GlobalVars
Зависит от частоты создания/уничтожения. Если это происходит не чаще раза-двух в секунду, то можно плюнуть на пулы.
Во-первых, возьми 2д, так как с 3д ты обосрёшься, инфа 1488%.
Во-вторых, посмотри туториалы по юнити, аниматору, скриптингу. А ещё лучше, брось юнити и подрочи C++ годик-другой, иначе так и будешь задавать глупые вопросы в стиле «чуваки, как сделать перемещение wasd».
Я здраво оценил плюсы и минусы 2д и 3д, и выбрал 3д. Я хорошо знаю юнити, но именно с аниматором не работал, поэтому спрашиваю, по какой системе это реализовывается.
Тут проблема в том, что каждый раз когда создается объект - под него выделяется память, и когда память кончается, то запускается юнитевский garbage collector, который, как пишут в интерентах, является полной хуитой и тормозит игорь.
Такими историями только юнитидетей и пугать.
http://pastebin.com/BAAyteiq
Рейтми. Может можно проще?
>public static
Первая строчка кода, а уже ошибка. Потом ещё и вложенные циклы. Ты совсем ебанут, парень. Выкидывай рандомное число от 0 до длины списка, потом проверяй, нет ли уже этого значения в выборке. Ещё лучше - выброси нахуй списки, у них хуёво с производительностью, используй православные массивы.
Какая ошибка? Это выдраны функции. Без внешнего класса код не скомпилится.
>Выкидывай рандомное число от 0 до длины списка, потом проверяй, нет ли уже этого значения в выборке.
Так и при выборе 17 из 20 сколько в среднем раз надо рольнуть рандом(0 20) и проверить ранее составленый список на повторы?
Вот на пике выше приведены два самых неудобных юз кейса для каждого типа выборки. Версия с исключениями оче ничего, портит все изначальное копирование всех элементов в новый список.
Мне кажется с вероятностью быстрее работает.
Померил. Версия с рандомом ~= 0.8 х версии с включениями. Подводный камень, рандом для типов значений не может в выбору одинаковых элементов по разным индексам.
>Потом ещё и вложенные циклы.
Недобор без внешнего вайла составлял около 10% от нужного числа элементов. Это костыль.
>Ещё лучше - выброси нахуй списки, у них хуёво с производительностью, используй православные массивы.
Нет, мне не подходит, нужна динамическая длина, при ней массив вырождается в велосипедный список.
>Какая ошибка
Первое правило статик переменных. Если ты используешь статик - ты что-то делаешь неправильно.
>Так и при выборе 17 из 20 сколько в среднем раз надо рольнуть рандом(0 20) и проверить ранее составленый список на повторы?
Очевидно, что нужно 17 раз рольнуть рандом или написать функцию, которая тебе даст сразу список из 17 чисел.
Навскидку, ты можешь использовать https://msdn.microsoft.com/ru-ru/library/system.random.nextbytes(v=vs.110).aspx
А каждый объект в списке будет иметь флаг "чекед". Так мы избавляемся многократной генерации рандомных значений, от многократных проверок на повторение каждый раз тупо ставим "чекед", похуй, если уже чекед. Но тянем дохуя ненужной хуиты, лол.
Учись по видосам, по мануалу, родной. Сириусли, интерфейс - это как раз то, что занимает большую часть разработки, и то, по чему тебя будут судить игроки. Охуенная игровая механика в хуевом интерфейсе = хуевая игра.
Нужно сделать так, чтобы высота дочерних панелей зависела от количества текста, который вложен в них, при этом самая главная панель не должна сжимать вложенные панельки.
Как это запилить?
>NextBytes
Былобы охуеyно если бы можно было сгенерить n установленых бит в N заданых байт и использовать это как масrу для исходного листа. А так это ничем не отличается от простой проверrb на вхождение. Пичалька.
>Если ты используешь статик - ты что-то делаешь неправильно.
Лол, да ты фонатик. Это вспомогательная функция, она не хранит состояния. Их там целый класс таких красивых(ты еще со строками не идел кашмарца). Оче удобно. Рикоминдую.
Кстате на пастбине два злобных бага в первых ифах.
правильно
if (NeedSelect >= SomeList.Count) { return new List<T>(SomeList); }
if (NeedSelect <= 0) { return new List<T>(); }
>Мужики.
Блж, мы тут дети, а ты пидофил, лол.
Самое очевидное узнать высоту шрифта, количество строк, а потом сделать что типа:
Panel.Height = Font.Height StringCount;
не сижу в юните*
С удаффкома к нам?
>Первое правило статик переменных. Если ты используешь статик - ты что-то делаешь неправильно.
Мда, а то, то геймдев имеет мало общего с прочим говнокодом тебя походу совсем не волнует. Статика плоха по той же причине, по которой не стоит широко пользоваться синглтонами - хуево тестировать. А вообще лепить игру надо так, как будет удобно конкретно тебе, разрабу.
мимосеньор-150к-месяц
> Content Size Fitter
А как заставить дочернюю панельку не вылазить за верхний край главной панельки? Ну или наоборот, не вылазить за нижний край, а вылазить только за верхний.
Хотя этот Content Size Fitter тоже не ок, ведь когда набирается несколько панелек, то получается такое
в смысле?
добавляешь на самую верхнюю панель vertical layout, content size fitter, выбираешь preferred size, на дочерние добавляешь vertical layou
Пошел нахуй.
мимосамыйпервыйсеньер
А вообще вы спорите о хуйне у которой есть решение. В Кормене, например.
>It’s worth keeping in mind that when a Rect Transform is resized - whether by a Content Size Fitter or something else - the resizing is around the pivot. This means that the direction of the resizing can be controlled using the pivot.
Ну я вроде дергаланусэтот пивод сразу же, но нифига не произошло, мб не тот пивот дергал, лол.
О, терь все збс, дернул нужный пивот, лол.
>Проявил отсутствие навыков
А как я за 1 пост проявил их отсутствие? Ты не со мной до этого беседу вел, если что. Ты меня прямо аж заинтриговал.
1. Меш коллайдеры без конвекса не работают вообще. Даже сетка не отображается. Что за хуйня?
2. Тот же меш коллайдер, с рижидбоди и залоченным вращением. Вибрирует на террейне. Если вращение не блокировать, то лежит спокойно. Если залочить любую ось - начинает вибрировать. Даже на плоском.
Юзаю юнити 5.
>Первое правило статик переменных. Если ты используешь статик - ты что-то делаешь неправильно.
Поржал с эксперта. Куда по твоему следует отнести все функции из класса Mathf?
Мало тебя обоссали, что ты опять вылез.
>>165044
Так они рид онли. Хоть один ИТТ пидор со статик переменными их рид онли делает? Плюс, в треде уже выше было, что юнитеки иногда поступают, как жопорукие пидорасы и их уж точно в пример приводить не стоит. Там же дохерища старого легаси кода, который по признанию самих юнитеков "лукс одд". Почитайте хоть о возможных косяках со статик переменными, сеньёры и сеньёриты, раз уж реального опыта нет нихуя.
Встроить в язык, очевидно же. А ещё лучше вообще выпилить нахуй, чтобы было 3-4 уёбищнейших любительских либы. Да здравствует C++-style, аллах акбар.
>функции
>так они рид онли
поехавший раз...
>думает, что в вопросе статик/не статик рид онли играет какую-то роль
поехавший два...
>юнитеки иногда поступают, как жопорукие пидорасы
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html
https://msdn.microsoft.com/ru-ru/library/system.math(v=vs.110).aspx
поехавший три...
жопа дибила гори!
инстанс самого себя можно и не только из него делать. например схватил ты предмет, дестроишь его, но вместо ссылки на префаб для дальнейшего инстанциирования у тебя остается ссылка на дестроеный обжект в сцене.
Ищи человека, нет другого пути. Поверь, школорисовальщиков по скиллу сопоставимых с твоим школоюнитипрограммированием очень много. Зайди в тот же /pa/, создай уютный тредик, заведи фейкомыльце. Поработать вместе будет полезно вам обоим.
Мавродий.жпг. Ты очередной раз проявил ноускилл.
Джва часа ломал голову. Потом решил написать в тред и опаньки - сразу понял в чем дело.
Потому что, стреляет без упреждения. Алсо, у тебя цели движутся быстрее снарядов.
И? Почему я не могу сохранить ссылку на префаб в самом этом префабе, как это работает с другими префабами? Это баг.
Пикрелейтед.
Попробовал ТГА. Теперь спекуляр совсем игнорирует альфаканал. В смысле отражает все вообще.
В тиф-формате отражала только земля, вне зависимости от того, какая маска стоит.
И если это читает кун так или иначе связанный с разработкой своего музыкального буллет-хела для стима хотя он наверное ВОЗГОРДИЛСЯ и считает посещать gd зашкваром - как вы сделали в своей игре привязку к музыке? Тупо ручками всё подстраивали ?
Делаю все по этому туториалу
http://www.youtube.com/watch?t=398&v=e7Px2yJA6S4
йеп. например смотри. в сцене префаб ссылающийся на префаб в проекте. и в проекте префаб ссылающийся сам на себя. если перенести префаб из проекта в сцену, то получаем уже префаб в сцене ссылающийся сам на себя, вместо префаба в проекте.
простое решение это сделать два префаба ссылающихся друг на друга. адекватное это сделать массив с префабами в проекте и использовать его для инстансинга геймобжектов.
Кажется, обошёл и это. Немного попилил интерфейс - новый гуй какой-то дубовый, хуеватый. Но работать с ним можно, события хорошо сделали. Назрел вопрос по поводу растительности.
Хочу травку с коллизиями с игроком. И кусты. Как я понимаю, в шейдоре коллизии получить нельзя, то есть нам нужно вешать на каждый куст коллайдер-триггер, вешать скрипт на него и скриптом передавать коллизии в шейдор? Предвижу, что скрипты не будут вешаться на кусты, расставляемые через террейн энжин. Другого способа нет?
Удлинить хитбокс снаряда, чтобы его положение на текущем и следующем кадре перекрывалось (было без зазоров).
Сразу предвижу овердохуя проблем. Ну ладно, скорее всего, это тоже решаемо - поебусь и сделаю.
>>165243
Пуля проходит через коллайдер за время меньшее, чем тик физ движка. Это никак не исправить. Разве что к пуле прихуярить райкаст и проверять на наличии хуиты перед пулей. Сотню раз тема обсасывалась уже.
Попробуй поменять у компонента rigidbody параметр Collision Detection c Discrete на Continuous.
Глупый и бессмысленный костыль, который в 90% случаев не поможет. Разве что делать коллайдеры пули по метру, но это повлечёт другие проблемы. Честную скорость пули это запилить не поможет.
>>165252
Периодически не срабатывает, по крайней мере, в четвёрке баг этот был. Ну и по производительности бьёт. Хотя лучше, чем метровые коллайдеры.
А, ещё забыл, можно установить тик физ движка поменьше, но это, опять же, ударит по производительности.
>Периодически не срабатывает
Пруфы
>Ну и по производительности бьёт
Ты так говоришь будто есть альтернативы гораздо лучше. В некоторых физ движках такой режим обнаружения коллизий включается параметром isBullet, что как бы намекает.
> Глупый и бессмысленный костыль, который в 90% случаев не поможет.
У тебя по геометрии трояк?
> Разве что делать коллайдеры пули по метру
По расстоянию полёта пули за такт.
> но это повлечёт другие проблемы.
Максимум - недорисовку трека пули на один кадр (если треки пуль вообще рисуются), т.к. в следующем пора рисовать взрыв (или другой эффект попадания). Если к этому эффекту пририсовать недостающий кусочек трека, то проблемы не будет даже на покадровом просмотре.
> Честную скорость пули это запилить не поможет.
Поможет.
>Честную скорость пули это запилить не поможет
Хочу чтоб пуля честно летела! Каждую пулю из очереди чтоб видно было! И чтоб у каждой меш-коллайдер! И чтоб сопротивление воздуха и гравитацию можно минять! И чтоб три тома баллистики нужно было изучить чтобы попасть в цель! Чтоб влажность воздуха влияла на скорость! Пуля будет главной изюминкой в игре! И чтоб у пули был параметр точность изготовления, чтоб если хуево сделали на заводе - она плохо летела! Только пуля важна, на все остальное похуй! Графон, окружения, геймплей - все в печку! Только Честная Пуля! Пу-ля, пу-ля, пу-ля!
>Пруфы
http://answers.unity3d.com/questions/52455/issues-with-continuous-dynamic-collision.html
Например вот. Говорю же, в четвёрке был баг, хуй знает, как в пятёрке.
>Ты так говоришь будто есть альтернативы гораздо лучше
Нет, но если он пилит на мобилки - хорошей альтернативой будет снизить скорость пули и увеличить её.
>>165260
>У тебя по геометрии трояк?
Нет, ты.
>По расстоянию полёта пули за такт.
Скорость пули старенького калаша 800 метров в секунду. Тик физ движка по дефолту - 50 раз в секунду. Итого, нам нужен коллайдер длинной 16 метров. Заебись, чё.
>Поможет.
Нет, потому что тянется триллион и один баг из-за шестнадцатиметровых пуль.
>>165264
А вдруг он пилит армаклон? Я когда-то хотел.
А как его грамотно удлинить? Я задал его сразу длинным, но в итоге он летит не продольно, а хуй пойми как. Как задать направление, что он всегда торцом вперед летел?
> нам нужен коллайдер длинной 16 метров
И в чём же проблема? В том, что у тебя в голове не укладывается такой размер?
Не знаю, я в юнити не шарю, Я тебе принцип объяснил, а детали меня уже не интересуют.
И когда же должно срабатывать столкновение? За 16 метров до цели? Или 8? Или пуля должна убивать тех, кто был позади стреляющего?
> И когда же должно срабатывать столкновение?
Столкновение сработает строго тогда, когда и должно, с точностью до тика физического движка. У тебя и правда тройбан по геометрии.
Можешь попробовать так: в 5 юнити поменяли статик коллайдеры, теперь их можно двигать из скрипта без потери производительности. Собсно, вот берешь этот рельсотрон, который тут предлагают, делаешь его статиком. При стрельбе инстантиируешь рельсу по курсу оружия, а с ней должен быть скрипт, который будет двигать рельсу каждый фикседапдейт на её длинну. Если охота заморачиваться, можешь даже через Нное количество перемещений ПОНИмного её приближать к земле, имитируя влияние гравитации.
Собсно, зачем весь этот цирк? Потому что рельсотрон правильно сделаный действительно дает 100% точность схватить попадание, но обсчитывать полет рельсы физ.движком - это оверкил, когда можно же применить выше описанный способ.
Алсо, надо бы сделать и вариант с рейкастом, да замерить производительность и сравнить. Но т.к. сейчас ты, анончик, встрял в проблему, то давай и делай, а в следующем треде отпишись. А то тема дейсвтительно постоянно всплывает.
А фокус в том, что тут чистый рандом на выходе, зависит от того, сколько времени прошло с прошлого тика. Может получиться так, что игрок прячется за стеной толщиной 15 метров, но этого мало! Её пробивает шестнадцатиметровое копьё и он всё равно погибает. Либо игрок 1 стоит за игроком 2, у игрока 1 есть бронежилет, у второго нет. И тут по ним стреляют, копьё-пуля прошивает игрока 1, но попадает в броню и ХП не отнимает. Игрок 2 погибает. Плюс баги с поперечным касанием. Ультраебанистический подход, это даже хуже червя-пидора, советовать такое может только законченный шизофреник с тройбаном по физике и колом по геометрии. А если скорость пули полторы тысячи? Для честного физона это точно не подходит.
>>165287
>Можешь попробовать так
Я не собираюсь этого делать, потому что я не анон с летающим гробом. Но имею обширный опыт работы с юнити, потому и говорю о тех или иных проблемах. Даже иногда с пруфами протухшими.
>дает 100% точность схватить попадание
Охлади трахание.
>надо бы сделать и вариант с рейкастом, да замерить производительность и сравнить
Наверняка будет быстрее райкаст, потому что там можно вообще отказаться от коллайдеров плюс рассчитывать всю траекторию в момент выстрела. В БФ4 так и делали, но через жопу. Потом в анус вставили пару костылей и оно начало работать немного получше.
NGUI -> UISprite(UIWidget) -> Anchor
Графон вроде норм у тебя. Могу помочь закодить всю хуйню. Но шоб сука если взлетит поделился, пидорас. Не взлетит - похуй. Контакты оставь.
>А фокус в том, что...// дальше идет высер человека, не читающего доки
Ты же просто не понимаешь как работает физ. движок. Разницу между Update и FixedUpdate уясни для начала, потом тут пиши, ладно? Копье прошивает, вообще охуеть. Знаток юнити, ты знаешь, что можно получать массив коллиженов? выбирать из них, кто был ближе, вот это все хоть раз делал или кукарекать сюда пришел?
Кирилл, сколько можно под себя срать? Поди подмойся.
>Разницу между Update и FixedUpdate
А там разница только в двух вещах. И ты её не знаешь.
> выбирать из них, кто был ближе
Кек. Получается так :
1.Предложил костыльный уёбищный подход - обосрали.
2. Предложил ещё более уёбищный подход, с ещё большими костылями.
А ты знаешь, что у нас нет доступа к деревьям? И вариантов узнать, кто ближе - всего три, олигофрен вроде тебя выберет первый. Это брать все ГО в сцене и брутфорсом перебирать их позиции. Второй - самый сложный. Написать свои деревья. И третий - использовать райкаст. Так почему блядь не райкастить с самого начала? Делать шестнадцатиметровые пули интересней? Надо быть анацефалом, чтобы такое предлагать, срсли. Надеюсь, ты просто очень, очень толстый. А я всё это пишу, чтобы у юнитиновичков не закралось подозрение, что пули-копья это норма и так может сделать психически здоровый человек.
Лол, копье-пуля - костыль, а пуля с лазерным дальномером - не костыль. Потому я и писал анону, чтоб делал оба варианта и смотрел, что в его случае подойдет лучше. Зачем ты тут слюной изливаешься, если оно тебе даже не надо? Это я пишу для того, чтобы юнитишкольники учились примерять все к своей ситауции, а не думали, что вешать рейкаст на быстродвигающиеся коллайдеры - это так и задумано.
Баги у них лол. Мы как всегда мануалы не читаем и это не мы обсираемся, это как обычно unity во всем виноват.
> И третий - использовать райкаст.
Три вопроса знатоку. Дженерик деревья юнити содержат коллайдер? Физический рейкаст срабатывает на что-либо кроме коллайдера? Ты хоть раз реализовывал то, о чем со мной тут споришь?
Я не тот знаток, с того знатока диванного сам проигрываю.
Слушай сюда, если надо сделать честную пулю, то всю жизнь делали так: у пули есть свойства PositionPrev и PositionCur. Это кэшированная позиция в прошлом кадре и позиция в текущем кадре. В текущем кадре мы хуячим либо лайнтрейс либо капсуль трейс между старой кэшированной точкой и текущей позицией. Выбираем из всего, что пересекает трейс то, что нас интересует. Сортируем квадраты расстояний от PositionPrev до каждого срабатывания трейса. Выбираем наименьшее. Бинго. Обрати внимание - расстояния можно использовать квадратичные (без извлечения корня), ибо нам важно найти минимальное, а не получить точные значения.
А что, если оба объекта пересеклись между обновлениями? Использовать встроенную функцию юнити религия не позволяет?
Никакого "между" там нет. Считаем каждый кадр. Атомарнее некуда. Встроенная функция юнити (точнее PhysX) работает точно также (или ты думаешь, что она у аллаха спрашивает, а не пересеклись ли объекты МЕЖДУ), просто орут что глючит, поэтому вот ручной велосипед.
Ты по мухам из гаусса стрелять собрался? Во всех экшонах хватает трейса предыдущая/текущая позиция чтобы детектить произвольно ебануто летящую пулю и объект уровня головы анона. По мухам стрелять - это тебе надо трейсить еще и мух, очевидно. Ну и искать точку пересечения двух отрезков (тоже есть простой алгоритм).
Костыль. Но более рабочий. Идеально вообще отказаться от физических пуль, хуй знает, нахуй они впились, писал уже - в том же бф4 их нет и никто не жалуется. Точнее, сначала жаловались из-за кривой реализации и запуска в продакшн без тестирования, потом пофиксили и всё играется.
>а не думали, что вешать рейкаст на быстродвигающиеся коллайдеры
Анон спросил совета, а ему посоветовали шестнадцатиметровые пули. Я понял, что это кретин пишет, а анон ещё и поверить может. По доброте и пишу.
>>165314
>у нас нет доступа к деревьям
>содержат коллайдер?
Толще ты просто не смог.
>хоть раз реализовывал
Именно так. Только без пуль шестнадцатиметровых, лол.
>>165328
> того знатока диванного сам проигрываю.
> слепошарый описал то, что было чуть выше в треде
С первого поста обосрался. Это ж уметь надо. Или ты думал что обозвал райкаст лайнтрейсом и всё, изобрёл новый метод?
>>165336
И что пиком сказать хотел? Или подсказать, как реализовать? На самом ситуация интересная, потому что коллайдер на самом деле не имеет толщины и без контунуос режима будет фейлиться такое регулярно даже на относительно низких скоростях и крупных объектах. Особенно прямоугольных. А если баг чуть выше не пофикшен, то и с континуос тоже будут фейлы регулярные.
>Но только я начинаю об этом думать, только ставлю на закачку юнити.
Когда я пишу код на юнити и игра выдаёт мне кучу ошибок, то я тоже становлюсь грустным и иду сидеть в уголке комнаты и плакать.
>Как вспоминаю сколько игорей уже сделано, сколько идей уже реализовано, ито что я хочу сделать например уже гдето было.
У меня наоборот куча годных идей, но максимум что я могу сделать - платформер без анимаций персонажей.
>описал то, что было чуть выше в треде
Ну не обижайся ты, все будет хорошо. Извини, что в твоих дерьмовых формулировках я не увидел солнцеликого ответа. И кстати, до сих пор не вижу. Видимо, плохо умею в говне ковыряться.
Ну не обижайся, а. Ну че ты такой обидчивый, как девочка. Не обижайся, петя-петушок.
Это копия, сохраненная 8 июля 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.