Это копия, сохраненная 8 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
хуйнота. Где уроки, скачать UNITI?
Пример:
до
rigidbody2D.velocity = new Vector2(move maxSpeed, rigidbody2D.velocity.y);
после
GetComponent<Rigidbody2D>().velocity = new Vector2(move maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
Поясните что за хуйня происходит и где об этом почитать?
Ранее многие компоненты были доступны по вшитым переменным для быстрого доступа. Сейчас эти переменные надо создавать самому, Rigidbody2D rigidbody2D = GetComponent<Rigidbody2D>().
Ну а вообще надо читать на что юнити ругается, ставлю анус что в консоли была написана суть проблемы и то, как ее решить.
Первая строка верна.
Насчёт второй, у него юнити не ругается. В консоли ничего быть не должно, просто в редакторе кода выдаст предупреждение "ваш код морально устарел, хотите я его грейдану?".
Если "да" - заменит rigidbody2D на GetComponent<Rigidbody2D>.
>>267443
Нагугли что такое геткомпонент. Очень важная хуйня, как мой трёхмесячный стаж подсказывает.
Почему в уроке было просто ригидбоди тебе не обязательно знать, а вот что такое геткомпонент стоит поинтересоваться.
Теперь понятно, почему юнити-любителей называют дебилами и всячески ссут на них. Они даже собственный тредн е могут нормально перекатить.
Еще один вопрос - решил для своей турели запилить крутой ИИ с приоретизацией целей.
Запилил, но возникла проблема - у меня есть 2 массива - GameObject[] Targets и GameObject[] BestTargetsType.
В первом массиве тупо находятся все существующие объекты с тегом "HostleInfantry".
Мне нужно чтобы скрипт находил в массиве GameObject[] Targets объекты с наименьшим здоровьем и вносил их в массив GameObject[] BestTargetsType.
Собственно вопрос - как в юнити реализовать добавление объекта в массив GameObject[]?
Сам скрипт:
public string TargetPrimary = "HostleInfantry";
public enum TargetType{WEAKEST, STRONGEST, ANY};
public TargetType targetType = TargetType.WEAKEST;
private GameObject[] Targets;
private GameObject[] BestTargetsType;
private float TargetHealth = 0;
private int step;
void Update ()
{
if (BestTarget == null) step = 0;
if (step == 0)
{
Targets = GameObject.FindGameObjectsWithTag(TargetPrimary);
if (targetType == TargetType.WEAKEST) GetWeakestTargets(Targets);
else if (targetType == TargetType.STRONGEST) GetWeakestTargets(Targets);
else BestTargetsType = Targets;
print (BestTargetsType.Length);
step = 1;
}
}
GameObject[] GetWeakestTargets (GameObject[] Targets)
{
int i;
for(i = 0; i < Targets.Length; i++) // поиск наименьшего значения Health
{
if (TargetHealth == 0)
TargetHealth = Targets.GetComponent<UnitStats>().Health; // обращение к компоненту
else if (TargetHealth > 0 && TargetHealth > Targets.GetComponent<UnitStats>().Health)
TargetHealth = Targets.GetComponent<UnitStats>().Health;
}
if (i == Targets.Length)
{
for(int n = 0; n < Targets.Length; n++)
{
if (TargetHealth == Targets[n].GetComponent<UnitStats>().Health)
{
// вот здесь должно происходить добавление объектов из Targets в BestTargetsType
}
}
}
return BestTargetsType;
}
[code] в /gd/ работает?
Что случилось с https://2ch.hk/faq.html (М) ?
Еще один вопрос - решил для своей турели запилить крутой ИИ с приоретизацией целей.
Запилил, но возникла проблема - у меня есть 2 массива - GameObject[] Targets и GameObject[] BestTargetsType.
В первом массиве тупо находятся все существующие объекты с тегом "HostleInfantry".
Мне нужно чтобы скрипт находил в массиве GameObject[] Targets объекты с наименьшим здоровьем и вносил их в массив GameObject[] BestTargetsType.
Собственно вопрос - как в юнити реализовать добавление объекта в массив GameObject[]?
Сам скрипт:
public string TargetPrimary = "HostleInfantry";
public enum TargetType{WEAKEST, STRONGEST, ANY};
public TargetType targetType = TargetType.WEAKEST;
private GameObject[] Targets;
private GameObject[] BestTargetsType;
private float TargetHealth = 0;
private int step;
void Update ()
{
if (BestTarget == null) step = 0;
if (step == 0)
{
Targets = GameObject.FindGameObjectsWithTag(TargetPrimary);
if (targetType == TargetType.WEAKEST) GetWeakestTargets(Targets);
else if (targetType == TargetType.STRONGEST) GetWeakestTargets(Targets);
else BestTargetsType = Targets;
print (BestTargetsType.Length);
step = 1;
}
}
GameObject[] GetWeakestTargets (GameObject[] Targets)
{
int i;
for(i = 0; i < Targets.Length; i++) // поиск наименьшего значения Health
{
if (TargetHealth == 0)
TargetHealth = Targets.GetComponent<UnitStats>().Health; // обращение к компоненту
else if (TargetHealth > 0 && TargetHealth > Targets.GetComponent<UnitStats>().Health)
TargetHealth = Targets.GetComponent<UnitStats>().Health;
}
if (i == Targets.Length)
{
for(int n = 0; n < Targets.Length; n++)
{
if (TargetHealth == Targets[n].GetComponent<UnitStats>().Health)
{
// вот здесь должно происходить добавление объектов из Targets в BestTargetsType
}
}
}
return BestTargetsType;
}
[code] в /gd/ работает?
Что случилось с https://2ch.hk/faq.html (М) ?
А не, показалось.
Не большой вопрос.
Как лучше присваивать объекты?
То есть можно сделать так:
public GameObject go;
И в инспекторе присвоить его.
Но если сделать так:
private GameObject go;
void Awake()
{
go = GameObject.Find("go");
}
Это нормальное решение? Ведь по идеи если на сцене много объектов то это действие слишком затратное.
Няш много, пусть они будут в массиве. Выходит нужно повесить на клона няши .AddListener с фунцкией таргетинга, верно? Но что писать в функции? Извлекать числовой индекс из названия клона и указывать в Target ссылку на элемент массива няш с тем же номером?
Может написано не понятно. Короче говоря, в скрипте есть перемненные с няшами внутри, благодаря которым можно делать с няшами что угодно, но не понятно как делать обратную связь. Чтоб каждый объект на сцене имел ссылку в на скрипт, породивший няшу.
Вешай на клоны скрипт с GetComponent и делай активным при определенных условиях.
Конечно можно проще событий. Просто хуяришь тупой код, где твоя логика знает про каждую кнопку в твоем интерфейсе. Потом рыдаешь ночами от 500000 строк в классе логики, потом лечишься от депрессии, потом переписываешь всё на событиях.
Делаешь для нужных коллайдеров отдельный слой и в скрипте указываешь, что сталкиваться нужно только с этим слоем.
Чет так и не понял, корутины то сериализуются?
Они будут продолжать работать после перезапуска? А то я уж чет костыль под это дело запилил, а потом подумал — а вдруг не нужно?
Во-первых, не используй эдж коллайдеры. Если скорость у персонажа слишком высокая чтобы за один тик пройти сквозь ребро более чем на половину, то отталкивающая сила начинает действовать с другой стороны ребра, проталкивая обьект еще дальше внутрь.
Во-вторых, тебе нужно вместо стандартного материала создать новый, и установить ему ненулевые значения фрикшн и боунс.
Но все равно это тебя не спасет от частных случаев, когда физика просто не срабатывает как нужно.
Нет.
Просто беру и прыгаю, суть в том, что он застревает, если я не допрыгну и попаду телом персонажа в стенку. Он как бы не сползает, а прилепает на место, особенно если давить на стрелку вперед, то он так и продолжет висеть. В этом вся проблема.
Ясно, я неправильно понял твой изначальный вопрос. Я думал, что у тебя есть коллайдеры с которыми игрок должен сталкиваться, и коллайдеры с которыми нет.
В твоём случае тебе нужно проверять коллизии снизу и со стороны "стенки". Если игрок сталкивается со стеной и не стоит на полу, добавляй ему вертикальной скорости, пока он не достигнет пола, и потом обнуляй её.
Эдж коллайдер не годится для таких задач? Полигоном ебашить?
Речь о 2Д.
Не годится. У эжд коллайдера нет плотности. Это просто ребра, которые отталкивают другой коллайдер от себя в одну из друх полуплоскостей, на которые он делит пространство. Полигон или примитив, как бы наполнены изнутри виртуальной "материей", поэтому из них все выталкивается наружу, и не застревает внутри. Еще нужно у персонажа сменить тип регистрации столкновений на континуус.
спасибо
ыч
Лол. Если ты хочешь желать это таким макаром, класс Глобал у тебя должен быть static.
Не обязательно таким, любым, суть - есть два клона, при клике нужно определить кто из них кто, и установить значение в таргет. Но я хз как это реализовать. Сам объект созданный инстантиейтом не несет какой-либю информации.
Бля, рейкастом получаешь геймобжект, потом сравниваешь его с нужной переменной. Если совпадение - это один объект, если не совпадение - другой. Хуле тут думать-то?
Как я могу сравнивать? По названию? А если объектов в массиве тысяча, а на сцене отображается 50, и их хуйнули сплешем, перебирать 50к элементов чтоб немногим отнять по 10 хп? Ну ок, а могут быть другие способы? Как-то в игровой объект вшить ссылку на породившую его сущность? Пытаюсь гуглить, выдает всякие синглтоны, IoC контейнеры, сложно, не могу разобраться.
ID
Знаю немного джаваскрипт, туда ли я зашел? Я смогу для этого Unity использовать?
Мне почему-то кажется что чем больше используемый диапазон тем случайнее будет ответ, это так?
Тогда вешай скрипт на сам объект. И делай проверку из него: сначала если в кадре, потом если в зоне действия, потом хуйнуть 10 хп. Тогда не придется перебирать все 50к.
Школьная математика.
нет варкрафт
Ага, а по вопросу есть что?
В голос.
Хочу подобных видео, где можно просто посмотреть как люди кодят разные аспекты таких игор.
Желательно со звуком и комментариями, но не обязательно именно туториал с разжёвыванием.
С меня как всегда.
Ну я бы так не сказал. Разобраться можно, но лучше бы чтобы такие фундаментальные вещи подробно объяснялись.
Бамп вопросу
Есть более насущные вещи, которые нужно объяснять. Не как переместить обьект в пространстве, а по каким принципам происходит перемещение, например. И с этим доки на сайте справляются хорошо. Тем более что весь код в ассетх прокомментирован, по компонентам есть справка.
Тем не менее в уроках поясняют как сделать базовые вещи, но конкретно про управление от первого лица там нет. Хотя казалось бы, самый частый вопрос.
Из тех что я смотрел - отличительная черта была как раз в том, что рассказывают о принципах опуская ненужные детали. Наверное тебе стоит сначала просто посмотреть больше "базовых".
Ты хочешь знать, как устроено управление от первого лица? На кватернионах - повороты в четырехмерном пространстве. Если тебе это ни о чем не говорит, то просто бери ассет и вселупую пользуйся/разбирайся. Юнити - это красивая и простая свиду обертка вокруг линейной алгебры. Ты либо ассетотаскатель-любитель, либо начинаешь относиться к геймдеву как к сириус-бизнесу и дрочишь матешу
https://www.youtube.com/watch?v=sKCF8A3XGxQ&list=PLW3Zl3wyJwWOpdhYedlD-yCB7WQoHf-My
Ну вот, например:
https://www.patreon.com/monstergirlisland
>Как там с производительностью
Зависит от прямоты твоих рук.
>есть ли уже готовые симуляции всяких густых веществ
Ассет можешь поискать.
Напомню что за производство порнографии тебе грозит сгуха, если в твоих кубах опознают имитацию школьницы то пойдешь по ЦП-статье. Удачи.
Не тормознутый, если умеешь программировать и понимаешь компьютерную графику. Сам по себе движок оптимизирован, но нужно всегда понимать, что ты делаешь.
Если не пытаться пилить свой майнкрафт и иметь руки не из задницы то ничего тормозить не будет.
Вот, при нажатии появляется круг и из центра к курсору идет стрелка. Стрелка, а точнее пока что линия, сейчас рисуется с помощью line renderer, но как видно из пикрелейтеда (линия нарисованная черным), в таком случае, линия при выведении курсора за круг тоже выходит за круг. Надо сделать так, чтобы длина линии ограничивалась радиусом круга, но в этом line renderer нету такого параметра как длина линии. Что посоветуете?
Лол, ты вообще понимаешь о чем речь идет? Я не спрашивал, как определить угол под которым рисуется линия. Я спросил, как ограничить длину линии, которая рисуется line renderer.
Вы че, блять, тралируете меня, суки?
Element 0 - координаты клика
Element 1 - позиция курсора
Из элемента 0 в элемент 1 строится линия, я это понимаю. Вопрос в том, что я хочу ограничить длину этой линии определенным значением, то есть человек курсор дальше отводит, а линия не удлиняется, но если он изменяет угловое положение курсора относительно центра круга, то линия фиксированной длины соответственно поворачивается. Однако, в пределах круга, длина линии изменяется соответственно расстоянию от центра до курсора.
Ну считай длину своей линии, и если она больше радиуса круга, считай точку пересечения этой линии с окружностью и веди линию туда.
Могу формулами написать, но я никогда не работал с юнити и, возможно, там можно все проще сделать.
Vector3.ClampMagnitude()
http://answers.unity3d.com/questions/485577/linerenderer-setting-max-distance.html
Помогло, теперь буду отсеивать по тегу коллаидеры и вызывать опцию разговора с нпс
Я смотрю на блексмита, а там атмосферный туман. Но нет, нихуя нет, не завезли и не-бу-дет.
Ты прикинь, ни в одной игре нет честного волуметрик фога. Потому что твоя пекарня взорвётся просчитывать рилтайм водяную взвесь.
Ну хорошо, а как тогда по-пацански сделать такую дымку? Полупрозрачных спрайтов штук пять поставить? Это для дваде сойдет, а в триде будет печально выглядеть.
Шейдерная магия. Чаще всего этот объёмный туман это просто меш.
То есть я просто вешаю на меш текстурки и получаю 10 из 10 на метакритике? А как это будет визуализироваться с камерой внутри меша?
Ну вот типа перед игроком очень важная и самокритичная лужа с водяной дымкой над ней. Я отхожу - дымки вокруг меня нет. Захожу в лужу и перестаю видеть что-то, кроме тумана и воды. Ты мне предлагаешь в лужу не заходить?
Ну есть такая нихуёвая по размеру лужа с паром, низина в локации, не знаю. Меш там не получится сделать, изнутри он не отрисовывается.
Ну изнутри то понятно.
Я по Юнити не скажу конкретно, но я бы на з-буффер наложил бы маску меша, а поверх текстуру какую, анимированную.
>изнутри то понятно.
Ну так добавляешь проход шейдеру, который будет рисовать изнутри и вуаля. Я бы ещё пару мешей "облачков" добавил для динамики.
Ну например переписывать камеру или освещение вряд ли придется, контроллер движения из коробки тоже неплохо зделоли
z координату покрути
Анон, каким образом он предлагает тебе его изменить? У меня ни в какую, только тылдычит, что ошибка! Ошибка!
Где посмотреть видосики обучающие, где кодят на Javascript?
>Хуле шапка такая даунская?
Потому что все только кукарекать могут.
>кодят на Javascript
Шел бы ты отсюда, петушок.
using UnityEngine;
using System.Collections;
public class UFOcontroll : MonoBehaviour {
void Start ()
{
rb2d = GetComponent<Rigidbody2D> ();
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
rb2d.AddForce (movement);
}
}
- этот код из тутора про юфо, с сайта юнити, я переписал его почти дословно, уже в сто раз, а мне юнити ошибку выдает, пишет что скрипт с ошибкой.
Я так понимаю, что они что-то очень сильно поменяли, поэтому старые туторы неакутальны?.
В общем, подскажите, кто тут с головой есть?
using UnityEngine;
using System.Collections;
public class UFOcontroll : MonoBehaviour {
void Start ()
{
rb2d = GetComponent<Rigidbody2D> ();
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
rb2d.AddForce (movement);
}
}
- этот код из тутора про юфо, с сайта юнити, я переписал его почти дословно, уже в сто раз, а мне юнити ошибку выдает, пишет что скрипт с ошибкой.
Я так понимаю, что они что-то очень сильно поменяли, поэтому старые туторы неакутальны?.
В общем, подскажите, кто тут с головой есть?
using UnityEngine;
using System.Collections;
public class UFOcontroll : MonoBehaviour {
void Start ()
{
rb2d = GetComponent<Rigidbody2D> ();
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
rb2d.AddForce (movement);
}
}
Ууууупс, код некрасиво встал.
В ошибке указана строка, вызывающая проблемы. Просто кликни дважды на ней, и она подсветится.
Ну, возможно ты не повесил на объект компонент Rigidbody2D? Добавь в начале скрипта
[RequireComponent (typeof (Rigidbody2D))]
тогда он автоматом прилепится ко всему, к чему ты будешь цеплять свой скрипт.
Окей, спасибо! Не находил такого решения.
Дебил, тип переменной у тебя какой? А должен быть рижидбоди2д.
Кстати вопрос, как лучше записывать - вот так:
rb2d = GetComponent<Rigidbody2D> ();
rb2d.AddForce (movement);
или вот так:
GetComponent<Rigidbody2D> ().AddForce (movement);
Второй вариант записи мне нравится больше(люблю когда все в одном месте) но будет ли такая запись влиять на производительность?
Как мне сделать, чтобы он не нажимал ничего за пределами своего меню?
Попробовал ограничить его пространство колайдерами-тригерами с тегом + скрипт, почему-то не работает.
Лолнет, вообще никак.
суть GetComponent<>() тратит время. Так что в апдейте и в циклах его лучше не юзать. А где нить в старте или еще где. ТО вполне можно.
Главное, не используй в апдейте, и по возможности используй GetComponentInChildren.
Ну же, ананасы.
Я заюзал OnTriggerStay2D - срабатывает через раз, рандомно.
Вот этот солюшн не работает:
http://answers.unity3d.com/questions/973943/ontriggerstay2d-stops-working-randomly.html
Почему просто не использовать OnMouseOver? Когда мышь за пределами объекта выключай.
Тут елда не подойдёт. Потому что нужно, чтобы не было возможности делать новые движения, за пределами тригера, сразу же. А с елдой их делать можно.
да, я наркоман
Онклик поинтИнРектангл?
Элементарно. Ты не ставишь скорость в лоб, ты ставишь желаемую скорость. И меняешь скорость с определенным ускорением. Это дает плавный разгон, плавное ускорение и все дела.
Если правильно понял, то можешь добавлять прозрачную UI панель на весь экран, но позади этого меню типа как модальный диалог и тогда рейкасты на клик не будут проходить через эту панель.
Ебашу под андроид
Нашел
Ваш выбор - ортогоналка со скриптом смещения слоёв или "оптический паралакс" с перспективной камерой ?
Не совсем прям пиксель, но разрешение относительно маленькое, "пиксельное".
А что, перспективная сделает мыльцо?
>>270074
Не подскажите, где можно такие основные вещи почерпнуть? Или сами посоветуйте, что в голову приходит сходу. Спасибо.
Не подскажите как так сделать?
Анимацию юнь видит и типа воспроизводит (дефолт тейк) но ничего не движется.
Почему?
Иногда хватает поразмыслить минутку, и понять, что перебор всех объектов занимает больше времени, чем перебор только детей. И что перебор всех объектов каждую секунду вместо одного раза свирепо снижает производительность.
Для всего остального есть документация и пошаговые руководства на ютубе или блоги разработчиков.
Вот этот дядя очень подробно рассказывает с графиками и формулами для новичков: https://www.youtube.com/user/Cercopithecan/videos
Но ведь GetComponent перебирает только компоненты определенного объекта, не?
> GetComponent
> перебор всех объектов
> дольше чем поиск в потомках
А теперь закройте этот тред и проследуйте к документации.
GetComponent<AudioSource>().enabled = true;
И
GetComponentInParent<AudioSource>().enabled = true;
Влияет ли это как-то на производительность?
Как лучше записывать и почему?
Если прочитать названия методов, то путем тривиальных размышлений можно придти к выводу, что GetComponent возвращает компонент повешенный на текущий gameobject, а GetComponentInParent - с его родителя. Это 2 разных метода и сравнение между ними по производительности тут странно выглядит.
Выше уже поясняли, что если приходится это вызывать каждый кадр, то лучше закешировать компонент.
> Как лучше
Лучше для начала сделать хотя бы прототип игры, а потом уже заниматься байтоебством.
> заниматься байтоебством
Я вместо игры этим занимаюсь, очень увлекательно, готовые игры для пидоров
>GetComponentInParent - с его родителя
Вот этого я и не понял. Теперь все стало предельно ясно. Спасибо.
>такой из себя уебанский и с локальными координатами?
Это потому, что голова - дочерний объект. Скорее всего, шеи. У всех скелетов такое. Ты можешь вручную убрать эту привязку в максе, если совсем долбоёб. Можешь в юнити сделать пустышку и колдовать с ней. А лучше смириться и работать с локальными координатами, не так уж сложно.
>отключаю рендерер
А ты отключай весь ГО и сравни. Отключенные ГО не попадают на этап кулинга, потому лучше так. Ну и скрипты на этой твоей дрисне работать перестанут, тоже экономия.
> вручную убрать эту привязку в максе, если совсем долбоёб
Как? Хочу нормально работать с головой и руками. Алсо, модели еще поворачиваются.
Это уже не уроки, а творчество алгоритмического дизайна. Просто пробуй писать, работай над ошибками, развивайся. Быстро это не дается.
gameObject.SetActive(false);
>>270677
>Алсо, модели еще поворачиваются.
Так это у тебя проблема с ориентацией пивотов, экспортируй Y-up. А детачить голову тебе не надо, всё равно придётся возвращать, как было. А если всё-таки хочешь, то найди кнопочку unlink selection, сломанное звено цепи. И отлинкуй.
Ок, вот смотри, хочется сделать рейнджеро-подобный мир, понять как оно устроено. Сначала нужно написать абстрактную логику, а потом ее визуализировать, верно? Ну вот, начал с малого, написал класс Ship, и класс Weapon, объект класса Ship имеет поле Weapon. Вот сюда вставляется пушка. Теперь сами пушки, был сделан абстрактный класс Weapon с абстрактным методом Fire(), от него два наследника, AOE и direct, а как в них сделать разное поведение? Как сделать, что вызов fire() раздавал пиздюлей всем вокруг с помощью аое пушки? Скрипт в котором создается массив кораблей висит на пустом Геймобьекте, и я хз как оттуда получить данные кроме как влепить массив кораблей в статический класс.
Пытаюсь, получается не очень.
Сам корабль же в этом списке нет? Ты можешь с геймобжекта стащить скрипт и из него список кораблев, в чем трабл то?
Переопределяй метод Fire в нужном классе и в нем прописывай логику для каждого из видов оружия.
public override void Fire()
{
//Раздать пиздюли
}
>Ты можешь с геймобжекта стащить скрипт и из него список кораблев, в чем трабл то?
Как на скрине? Если так, то мне блядь аж стыдно ибо это просто. Ничего страшного если в мейн дохуя всего будет написано?
Я бы делал в мейне твоем
void FireAllShips()
{
foreach(Ship s in visibleShips)
{
s.Fire(visibleShips);
}
}
/////
Fire(List<Ship> LS)
{
///ебашить хардкор по LS списку
}
1) Регдолл. Есть заготовка персонажа, на ней висит скрипт управления (методы WalkForward, Jump) и все такое, ригидбоди, Capsule Collider и скелет с аниматором. На каждой кости персонажа повешены джойнты и ригидбоди из стандартного регдолла. В скрипте управления есть метод Hit, в котором отнимается хп, в апдейте проверяется хп, и как только оно падает ниже нуля, основной коллайдер с ригидбоди отключаются и включаются ригидбоди на костях. Это, конечно, охуенно, но как реализовать отдачу от выстрелов, чтобы трупы по карте катались? Мертвые уже катаются, а живые просто оседают на пол. Рейкасты упираются в ригидбоди персонажа, а физические пули не нужны.
2) Частично вытекает из первого, это хитбоксы - хочу, чтобы выстрелы в голову наносили тройной, например, урон, или же сразу убивали.
По гениальной архитектуре у оружия есть метод Fire, который в случае обнаружения рейкстом npc вызывает у него метод hit
Пушка в данный момент стоит у игрока, а игрок отдельный хуй, нужно при fire() отловить тех кто рядом, чтоб отвешать им положенное, visibleShips это корабли в системе, которые должны показываться на игровой сцене.
For each (ship in ships)
if ((player.transform.position-ship.transform.position).length < DAMAGERADIUS)
{
ship.poluchitpizdy(uron);
}
Тогда передай игроку gameobject на котором висит список,через public GameObject, и внутри скрипта игрока получи из него список через GetComponent<имя скрипта_со_Списком>().visibleShips
>и я хз как оттуда получить данные
Блядь, классы-хуясы, я аж подумал, что умный человек. Ан нет, нихуя.
public mocha mocha;
mocha = GameObject.Find("govno").GetComponent<mocha >();
Типа public Mocha mocha;. Да и вообще классы с маленькой буквы называть - плохой тон
Ну если ты подскажешь как делать правильно. буду весьма благодарен.
Алсо, благодарю за ответы, потом наколхозю что нибудь и приду еще.
Ошибка будет если ты в этом же классе создашь переменную с именем этого же класса. Но подразумевалось, что мы получаем скрипт моча из другого скрипта. Мне сложно представить, что кто-то будет искать на сцене скрипт из этого же скрипта.
if (CrossPlatformInputManager.GetButton("Forward")) forward = 1; else forward = 0;
if (CrossPlatformInputManager.GetButton("Backward")) backward = 1; else backward = 0;
if (CrossPlatformInputManager.GetButton("Strafe Left")) left = 1; else left = 0;
if (CrossPlatformInputManager.GetButton("Strafe Right")) right = 1; else right = 0;
float v = forward - backward;
float h = right - left;
move = new Vector3(h, 0, v);
Затем
move = move.x transform.right + move.z transform.forward;
Затем move я двигаю Rigidbody персонажа через Rigidbody.velocity. Все двигается верно. Затем я пишу такой код.
if (move.x < 0)
{
animator.SetInteger("direction", 4);
}
else if (move.x > 0)
{
animator.SetInteger("direction", 3);
}
if (move.z < 0)
{
animator.SetInteger("direction", 2);
}
else if (move.z > 0)
{
animator.SetInteger("direction", 1);
}
Но анимация проигрывается почему-то только для последнего случая. Что могло пойти не так?
if (CrossPlatformInputManager.GetButton("Forward")) forward = 1; else forward = 0;
if (CrossPlatformInputManager.GetButton("Backward")) backward = 1; else backward = 0;
if (CrossPlatformInputManager.GetButton("Strafe Left")) left = 1; else left = 0;
if (CrossPlatformInputManager.GetButton("Strafe Right")) right = 1; else right = 0;
float v = forward - backward;
float h = right - left;
move = new Vector3(h, 0, v);
Затем
move = move.x transform.right + move.z transform.forward;
Затем move я двигаю Rigidbody персонажа через Rigidbody.velocity. Все двигается верно. Затем я пишу такой код.
if (move.x < 0)
{
animator.SetInteger("direction", 4);
}
else if (move.x > 0)
{
animator.SetInteger("direction", 3);
}
if (move.z < 0)
{
animator.SetInteger("direction", 2);
}
else if (move.z > 0)
{
animator.SetInteger("direction", 1);
}
Но анимация проигрывается почему-то только для последнего случая. Что могло пойти не так?
А вот не надо было в кресло садится.
Чтоб пушки стреляли, отнимали ХП у Ship'ов из списка visibleShips, аое пушка должна нанести урон всем( будем считать что корабли тусуются рядом), директ пушка по таргету. Ведь реализация самих пушек должна быть прописана в методах FireUp(),верно? Вот на этом месте рвусь.
У себя сделал список, в списке префабы-пустышки. На пустышках скрипт, в скрипте ссылки на меши и иконки. Один предмет - один префаб.
using UnityEngine;
public class CameraController : MonoBehaviour
{
void FixedUpdate()
{
Vector3 fwd = transform.TransformDirection(Vector3.forward);
Debug.DrawRay(transform.position, fwd);
if (Physics.Raycast(transform.position, fwd, 10))
Debug.Log("There is something in front of the object!");
}
}
Реально ли прикрутить еще опознавание по тегу?
Ray fwd = new Ray(transform.position, -1f * transform.forward);
if (Physics.Raycast(fwd, out hit, 1000f))
{
if (hit.collider)
{
if (hit.transform.gameObject.tag.Equals("NPC"))
{
hit.transform.GetComponent<Human>().Hit(damage);
}
}
}
Пососи мои яйца. Оба варианта написания правильные.
Очоба одинаковая для всех языков, а вот написать что-то на юнити, не зная собственно юнити, будет проблематично.
Так я юнити знаю впринципе. Представляю что она может и ее сущности. Логические цепочки по созданию скриптов я могу делать а вот выразить их в коде уже не могу. Мне вот надо диалоги писать, а как прикрутить базы данных к юнити не ебу вообще, школьные ютубы сразу идут нахуй, нужна спец литература.
>Мне вот надо диалоги писать, а как прикрутить базы данных к юнити не ебу вообще, школьные ютубы сразу идут нахуй, нужна спец литература.
Да что там блядь делать?
Вешаешь на персонажа или на камеру скрипт с диалогами. Тыкаешь рейкастом туда где хочешь вызвать диалог, после чего выводишь гуй. Ебать же сложно.
И нужно передавать еще вектор луча, чтобы им ебнуть по ригидбоди. Только вот в отключенном состоянии ригидбоди не получают скорость, а при переключении её сбрасывают. Это костыли ебаные.
В том, что урон и собственно смерть разнесены по разным методам. Хотя чего это я, в принципе верно.
Ну помогите, а.
У Weapon метод выстрела заменяшь на FireUp(Ship target). В случае с директом понятна логика метода, а с аое пушкой - считаешь Physics.SphereCastAll или чем то своим что его окружает по его координатам.
Ага, вроде разобрался, создал класс WeaponInfo, с таргетом и массивом кораблей внутри, скармливаю в метод, а там каждая пушка разгребает нужное себе. Пиздец, так легко, а голову ломал пару дней.
Я имею проблемы с основами основ, решил сделать управление от первого лица, и приходится на каждом этапе ломать гугл, хотя казалось бы, вопросы у меня возникают такие, какие и должны возникать, это все можно было бы уместить в один урок, но такого нет.
Создаем папку с проджектайлами, туда кидаем все имеющиеся у нас прождектайлы со создаем скрипт допустим projectile, в скрипте присваиваем прождектайлам дальность, урон, время жизни и т.д.
Потом создаем скрипт weapon - оружие нашего корабля, который и будет создавать прождектайл.
Раскидываем корабликами теги(торговец, воин, пират и т.д.) например "раса_торговец".
Пишем скрипт поведения чтобы пират нападал на торговцев, торговцы летали с планеты и планету. Кораблики-цели можно искать с помощью Targets = GameObject.FindGameObjectsWithTag("тэг") - получаем список всех кораблей с этим тегом на сцене, потом пишем саму логику.
С планетами - аналогично.
Ага, вроде понятно, но по душе свой вариант. С конструкторами-хуюкторами понятно из уроков С#, а вот всякие ко-ко-компоненты не очень. Сдается что компоненты больше подходят для статического мира, нежили почти полностью динамического, так ли это?
>Сдается что компоненты больше подходят для статического мира, нежили почти полностью динамического, так ли это?
И так и так можно. Просто, ИМХО, описанным мною способом логику писать будет намного проще, ну и дебажить тоже будет попроще.
На самом деле компоненты это очень просто и удобно, главное не вызывать их каждый кадр.
GetComponent<BoxCollider>().enabled = true; - вызов компонента BoxCollider и его включение из текущего объекта.
имя_объекта.GetComponent<BoxCollider>().enabled = true; - вызов компонента BoxCollider и его включение у другого объекта.
Если другой объект мы получаем через рейкаст то записываем вот так:
имя_рейскаста.transform.GetComponent<BoxCollider>().enabled = true;
GetComponentInChildren - вызов компонента объекта и его детей.
GetComponentInParent - вызов компонента материнского объекта.
> компоненты не очень
Это такая же парадигма как и твоя камасутра с ООП, используемая в редакторе юнити. И весь апи юнити заточен на то, что ты будешь использовать именно компонентную модель. Одно наследование от MonoBehaviour предотвращает тебя от тысячи тривиальных велосипедов и экономит тучу времени. Стоит все таки посмотреть хотя бы один из туториалов на сайте, чтобы появилось представление как выглядит и что из себя представляет геймдевелопинг на этом движке.
Как в это играть?
В фикседапдейте обновляется физика. Он вызывается ограниченное количество раз в секунду и засирать его далеко не лучшая идея.
У меня создаются линии с такими параметрами.
line = new GameObject("line").AddComponent<LineRenderer>();
line.material = new
Material(Shader.Find("Particles/Additive"));
line.SetVertexCount(2);
line.SetWidth(0.16f,0.16f);
line.SetColors(Color.red, Color.red);
line.useWorldSpace = true;
И в самой юнити это выглядит как на первом пике, с красными линиями. А когда я пытаюсь затестить на андроиде, то все становится как на втором, в виде розовых толстых линий. Как исправить? Почему так?
Тебе нечего, а я не хочу просто выдирать куски кода из вики, пытаться сшить их вместе и думать, почему в очередной раз вылезла ошибка. Вот я например работал с кодом вчера, лучом тыкаю в коллайдер, дебаг молчит, думаю что за херня. Оказалось, что луч из днища модели выходит а коллайдер над землей висит. Я к тому, что хочу до конца понять как и что работает в коде, какие у меня именно возможности программирования
У меня в сцене есть ригидбоди объекты, которые нужно вращать с постоянной скоростью. Я для этой хуйни написал скрипт где при старте задаю угловое вращение и ставлю флаг "кинематик". Замечательно все работает. Но! Когда я дошел до оптимизона, выяснилось, что такие ригидбоди не хотят засыпать и симулируются постоянно, регистрируют коллизии и прочая. Я тогда написал еще один скрипт, который эти ригидбоди убирает из симуляции, если они вне пределов видимости. Сэкономил кучу ресурсов, все дела. Но есть один момент, который я никак не могу обмозговать. Когда ригидбоди убирается из симуляции, а потом снова добавляется, то все физические свойства (конкретно меня интересует угловое вращение) сбрасываются.
Подскажи, антош, как мне организовать код, чтобы после активации ригидбоди он сохранял свои физические свойства.
Как это забыл? Я же ничего не менял при загрузке на андроид. А вид линий существенно различается.
Андроид устройства не поддерживают некоторые виды текстур и шейдеров. Настройка материала важна не меньше, чем настройка компонента.
Это не для игр, это для того чтобы можно было быстро и удобно расставлять объекты на сцене по сетке, а не ебаться каждый раз с выставлением координат для каждого объекта вручную или скейлингом объекта или их фиксацией вручную.
Плагин короче.
Перед включением физики записывай его угол в переменную вида Quaternion, после включения вращения - считывай.
Дело не в угле, а во вращательном движении, которое прекращается после деактивации и не продолжается после повторной активации. Но даже если бы все было так, то что делать с объектами, у которых другие свойства, которые нужно сохранить? Не писать же для каждого вида по скрипту.
Я тебя понял. Глянь ригидбоди в апи, может и можно как-нибудь записать угловое вращение.
>Но даже если бы все было так, то что делать с объектами, у которых другие свойства, которые нужно сохранить? Не писать же для каждого вида по скрипту.
Если видов объектов много то легче создать универсальный скрипт и уже в нем либо ручками, либо автоматически(например по тегу) выставлять что именно сохранять.
Да вся информация как бы имеется в скрипте, но как получить к ней доступ я не ебу.
Мне просто нужно выполнить скрипт при активации еще раз, но я не ебу как это сделать. Как получить доступ к событию Start() этого скрипта?
Зачем получать доступ к событию? Нужно получать доступ к переменным.
То к чему нужно получить доступ делаем public, для красивости можно то что ты не будешь менять в инспекторе скрыть с помощью [HideInInspector]
После чего можно легко получить доступ с помощью GetComponent<ТвойСкрипт>().переменная = что-то;
вариант а) впиши функцию Prepare() и вызови ее в старте, и потом где хочешь.
вариант б) SendMessage()
Затем, чтобы не писать еще функцию, я присвоения переменных, которых может быть больше одной и в разных случаях они могут быть разные. А так получается универсальный метод доступа к функциям в событии для всех объектов.
>>271142
Спасибо. К стати у меня с этим связан один непонятный момент. Я, например, пишу функцию, делаю ее public static, но когда пытаюсь получить к ней доступ через компонент button, она у меня в списке доступных функций не появляется. Точнее появляется, но не сразу. Какими то кривыми путями в общем.
Точнее, имеет ли character controller функционал, который нельзя сделать с rigidbody?
>Дело в том что каждому созданному кораблю присваивается id
Зачем? Родина тебе объекты дала, используй прямые ссылки на элементы списка и не надо ничего перебирать.
Ты вообще туда зашёл? Мы тут на C# программируем, а не на С.
1. Есть 2D платформер как необычно. Когда игрок выполняет определённую последовательность действий, объект перемещается от своей изначальной позиции до выхода из уровня. Поскольку объект этот движется по сложной траектории прыгает по платформам и к тому же по ходу пьесы выполняет самые разные движения ходьба, прыжки, отряхивание и прочее, реализовал через один animation clip. И вот тут перехожу к главному. Когда запускаешь этот клип через превью play в окошке animation, выглядит аки лучший блокбастер. Когда клип запускается непосредственно в игре, всё выглядит как говно: объект рандомно скачет вверх-вниз и слегка проваливается в пол после прыжков. Лезу опять в animation. Просматриваю клип по каждой ключевой точке - всё с точностью до пикселя. Там же смотрю кривую - аналогично, на каждом временном отрезке даже там, где нет ключевых кадров положение объекта идеальное. Отсюда очевидный вопрос, как пофиксить?
2. В том же проекте есть несколько объектов, падающих после столкновения с игроком. Реализовал через изменение в Rigidbody2D Gravity Scale с 0 до 1. С тем злополучным объектом из п. 1 не проканало. После того как срабатывает триггер, объект продолжает висеть в той же точке триггер срабатывает, поскольку запускается нужный в этом случае клип анимации. Пофиксил, изменив Transform Position через анимацию. Насколько понял, законы физики юнити перестают действовать, если хотя бы в 1 клипе анимации, привязанном к этому объекту, меняется Position. В моём случае не критично - не больше 10 простейших клипов в относительно маленьком уровне, поэтому положение объекта определить легко. Что делать, если клипов станет 100, уровень огромен и определить положение объекта невозможно?
Ну давай разберем по частям, тобою написанное )) Складывается впечатление что ты реально контуженный, обиженный жизнью аниматор )) Могу тебе и в глаза сказать, готов приехать послушать? ) Вся та хуйня тобою сделанное это простое кирильство, кармак ты комнатный) ) от того что ты много наанимировал, жизнь твоя лучше не станет) ) пиздеть не скрипты ворочить, много вас таких по весне оттаяло )) Про таких как ты говорят: Мама не хотела, папа не старался) Вникай в моё послание тебе< постарайся проанализировать и сделать выводы для себя)
Всё это очень мило, но по делу есть что сказать? Ты предлагаешь полностью игнорировать анимацию и всё пилить скриптами? Кат-сцены через поиск пути?
Давай пропустим часть про еблю мамок, а сразу перейдём к сути вопроса.
Смешивать и не получается.
>После того как срабатывает триггер, объект продолжает висеть в той же точке
Предложи свой вариант, как сделать кат-сцену с физическим объектом.
> объект рандомно скачет вверх-вниз и слегка проваливается в пол после прыжков
Я политача перечитал.
мимобандера
>>271025
Бро, ничего не имею против компонентов, ни в коем случае не спорю, а просто хочу понять. Звездную карту сделал, заебись, гиперпрыжки, минимапа, генерация солнечной системы. Но это все элементарное, и по большому счету статическое. Хочется сделать простой, но динамический, невидимый мир, развивающийся на основе накопленных за игру данных. Вот, поэтому ебусь с ООП, и нихуя не понимаю, Да, без монобеха отсос с причмокиванеем, не могу заинстанциировать лазерный луч при выстреле пушки, не могу дестрйонуть объект, но с монобехом не могу использовать конструктор. Умные дядьки в видосах гвоорят о всяких паттернах, инверсии управления, отделения данных, а мне бы просто понять на простом примере. Или без опыта хуйца? Вот в данный момент нужно создать лазерный луч, и возможно взорвать. Можно в методе Fire() возвращать какие-то данные в менеджер, делать там проверку и уже делать нужное, но не хуйня ли получится? Короче хули делать? Может забить хуец? У меня грибы есть.
>Вот в данный момент нужно создать лазерный луч, и возможно взорвать корабль. Имеется ввиду луч на сцене.
Ну лучи/лезеры/линии и т.д. это line renderer(моноцвет) и trail renderer(если нужен какой-нибудь хитровыебанный луч).
Ты вообще можешь нормально объяснить что ты хочешь сделать?
Связать логику вне монобеха с гейм менеджером.
Используй словари https://msdn.microsoft.com/en-us/library/xfhwa508.aspx , а в качестве ключа используй id корабля. Тогда при доступе по ключу сможешь получить один из всех своих 6 кораблей за константное время сэкономив время процессора стремящиеся к нулю.
Не сработало, да и мне нужно достаточно точно определять положение частей тела персонажа. Есть идеи как это реализовать?
Тупанул и рб забыл включить, щас включил и заработало. Но с точным определением вопрос остался.
На вскидку, по кадрам. Например, на 15 рука полусогнута, вызываешь из этого кадра функцию нужного действия.
Здесь подробнее:
http://docs.unity3d.com/ru/current/Manual/AnimationEventsOnImportedClips.html
Для морфинга тебе нужно, чтобы количество вершин и полигонов совпадало. Закидываешь в макс обе модели, кидаешь модификатор морфер и потом в юнити крутишь блендшейпы.
Так за блеск и прочее отвечают не рейкасты, а материалы. Создавай новый материал и объединяй его со своими пулями.
Чтобы ингейм были видны рейкасты нужно использовать либо line renderer, либо trail renderer. Как писал другой анон выше.
Для диалогов и менюшек.
Или, может, есть годное готовое решение в асетсторе?
И можно ли отключить лого при запуске игоры?
Player settings -> show resolution dialog
Ну или как-то так, сам уже там найдешь.
Можно, но придется заплатить за спиздить лицензию
Спасибо тебе, анон.
Я, конечно, борзею, но можно ли сделать автоматический бордерлесс скейл на весь экран? А то как-то не хочется для 2д пиксельговна делать кнопку настроек онли ради изменения разрешения. То есть я не хочу делать меню, так как у меня есть пездатая идея
Хорошее бесплатным не бывает.
Аллах уже сбросил на тебя цистерну чая
http://arongranberg.com/astar/
Рикамендую, есть бесплатная версия ассета, которой хватает на всё.
Я лично считаю что она вообще должна стоять по умолчанию. Если понадобится то всегда можно снять.
А почему делают нескипаемые ролики? Что ты, блядь, играл так, как это задумано.
Ну согласись же что скрипт для скипа ролика написать немного сложнее чем поставить 1 сраную галку.
Если ты будешь резайзить окно, то может поломаться гуй , надо проверить фов, мало ли что. Подозреваю, что если во время драг-н-дропа ресайзить, то всё сломается. Нахуй надо. А ролик скипнуть проще.
ФОВ апдейтится в реальном времени, гуй тоже. Драг-н-дроп это банальная либо привязка меша/спрайта к курсору, либо смена курсора на перетаскиваемый объект. Там нечему ломаться.
>>272195
Зависнуть может, или вообще отказаться сворачиваться.
>ФОВ апдейтится в реальном времени
И получаем какой-нибудь фишай. Нельзя фов трогать.
> гуй тоже
У родительского элемента якоря по углам экрана, а у дочернего в центре родителя. Нельзя гуй ресайзить; лепим анкоры родителя в точку и всё, пизда - сделал маленькое окно и всё занято гуем. Ещё и не влезло. А ублюдки с ретиной смотрят через лупу на твой гуй.
>Драг-н-дроп это
Это перемещение спрайта в экранных координатах. Нельзя менять координаты, нельзя ресайзить экран.
То есть на каждый рейкаст мне нужно создавать геймобджект?
> line renderer, либо trail rendere
навешиваются на ГО, так в документации написано
Я нихуя не понял, честно. Ты вообще можешь нормально объяснить что ты хочешь сделать?
Тебе, как я понял, нужно чтобы пули блестели - ну так создавай новый материал, настраивай его и вешай на свои пули.
При чем здесь вообще рейкасты? Что ты там за адовый велосипед городишь?
done
сажа приклеилась
А это точно швы на текстуре?
Тогда открой 3Д редактор и зарисуй в режиме рисования текстуры по модели.
А если это кривые нормали, то открой 3Д редактор и заюзай исправление нормалей.
Пиздец вопрос.
>>272304
1. твоя развертка хуже говна и мочи
2. сведены ли вертексы? vertex veld в максе с крохотным значением сведет дублирующиеся.
3. прозреваю неправильный формат карты нормалей. юзай зля запекания хНормальз с Y-
worldMachine + ремешинг в Meshlab
у встроенного ландскейпа есть пиксель эррор, это по типу ЛОДов, чтобы не рисовать дальние ебеня, а с мешем такое не получится зделоть
1. стандартная развертка головы, один шов лишний, остальные вопросы к создателям туторов.
2. офк сведены, да и будь это не так то вряд ли бы дублирование вертексов пролегало идеально вдоль симсов развертки.
3. не нашел в хНормалзе 3.19.2 этой опции, сам какую юсаешь?
4. проблему решил танцами с бубном, в чем она заключалась пока хз ибо пикрелайтед запекал месяц назад.
1. штудирй другие туторы, этот какой-то неканоничный. скачай да погляди модельки из АААшек, у них голову в два чанка делают плюс ухи ухи ухи
2. скачанные модельки часто под плейстейшон, а эти ребята обожают разрезать на части, ПРОИЗВОДИТЕЛЬНОСТЬ
3. вот же
4. есть варик что в юнитях у тебя Tangents: Recalculate и/или Normals: Recalculate, а должно быть Import. Ну или наоборот, не должно быть. макс пиздануто всё делает в этом плане.
Нет иди нахуй
Мне не нужны миллионы дк на мобилках, которые юнити террейн обеспечивает без проблем при наличии вообще любой растительности
>>272320
Чому нет? При загрузке игры берем вертексы каждого чанка и генерируем новый меш низкого разрешения, тупо проходясь по каждому второму/четвертому/n-вертексу. На определенной дистанции переключаем и вуаля. Импровизированный лод из говна и палок, без затрат места на заранее сделанные лод меши готов. Нестыковки решаются просто размером чанка, а у меня он достаточен для того, чтобы их не видно было. А, ну и разрешение чанка должно быть кратным n, но это не такая уж и проблема.
Конечно это не идеально, но дает куда больше производительности, чем встроенный террейн. Йоба фичи вроде самогенерирующихся билбордов не нужны, ибо один хуй жрут больше, чем сбатченные деревья в моем конкретном случае.
>worldMachine
Спасибо, попробую.
Есть какой-то там эвент систем, но он вроде как для гуя и всяких OnPointerClick, хотя не ручаюсь за достоверность данной инфы. Сам не пользовался.
Пиздец, вас там, таких долбоёбов, специально выращивают? Кто-то когда-то пизданул, что у террейна много ДК, а почему так никто и не понял. Бери дефолтный террейн. Ты в любом случае сделаешь хуже.
p.s Террейн, полностью засеянный травой, дистанция отрисовки трав максимальная, трава - анимированный меш на 3 триса. Итого 19 дк. Раза в три меньше, чем на одного ГГ.
1. да видал, ну для моей игори не принципиально (вид сверху)
2. моделька моя офк, че я совсем штоле
3. спс. кстати что касается хНормала, то его основная проблема на мой взгляд в том, что он отказывется кушать некоторые хайполи которые по его мнению содержат N-sided полигонс, хотя на первый взгляд там только треугольники да квадраты (в таком случае спасает интернал блендер бейк) не переделывать жеж слепленую в зебре хайполи.
4. там все норм, юсаю блендер как ты уже понял
По-твоему я не пробовал и с дивана вещаю? Деревья жрут куда больше, чем трава, и к тому же не дают использовать нормальный шейдер, требуя софт оклюжен, который мне нахуй не всрался. Еще раз поясню для одаренного: я проверял и мои костыли работают быстрее. Просто потому что у меня не йоба террейн с кучей текстур и нормалями, для чего и предназначен встроенный. Проблема только в том, чтобы на этом террейне удобнее делать горы и всякие прочие выпуклости. Если нечего ответить по теме, то просто пройди мимо.
>я не пробовал и с дивана вещаю
Именно так.
>Деревья жрут куда больше
Только если у тебя тяжеловесные деревья вроде спидтри.
>не дают использовать нормальный шейдер
Незнание инструмента. Ты можешь использовать любой шейдер. У меня, к слову, свой шейдер травы, хотя рассажена она через террейн энжин. Получается, всё твоё недовольство только от узколобости и невежества. Понятно.
>спидтри
>тяжеловесные деревья
Нашел галочку "Pixel corerect", но если ее убрать, то текст становится мыльным
НУ я выставил Anchor, но фишка в том, что вот если я поставил текст в верхний правый угол экрана, то при его расширении текст сползает и он уже не в углу
алигнмент тоже выстави
или вообще рисуй гуи скриптами а не компонентами, их же для пиздюков зделали
ДЕДЫ ВСЁ РУЧКАМИ ВЫСЧИТЫВАЛИ ИЗ РАЗМЕРОВ ECRANА
Тебе сложно поставить якоря в центре канваса или вообще, не дай б-г, по углам раскидать?
>алигнмент тоже выстави
Частично помогло. Текст намертво приклеен к краю, но вверх и вниз продолжает смещаться. Ну хоть на этом спасибо
>или вообще рисуй гуи скриптами а не компонентами
Какие преимущества у гуи текста, написанного скриптом? Больше кастома?
> Больше кастома?
да, рассчитываешь всё вручную, верность отображение зависит только от ваших рук (там на деле две строчки накодить)
А где можно скачать архивную версию? А то на офф сайте только последнюю, а у меня с ней проблемсы
https://unity3d.com/ru/get-unity/download/archive
На официальном сайте, как обычно. В чём проблемсы с новой?
Плагины крашат новую версию. А за ссыль спасибо, чет невнимательно смотрел. И напоследок - а чтобы несколько строчек написать нужно каждый раз новый объект гуи текста создавать или есть другой способ?
>несколько строчек написать нужно каждый раз новый объект
Ставишь галочку рич текст и получаешь минимальную поддержку тегов. Перенос строки работает даже без тегов, но нужно либо выставить подходящий режим оверфлов, либо растянуть размеры гуи текста по вертикали.
https://docs.unity3d.com/Manual/StyledText.html
В общем да - новый гуи решает мою проблему. Но есть одно "но". Текст будто мыльный. Как это решить? Помню, что подобное прокатывало с пиксельными спрайтами, где нужно просто в настройках материал Filter Mode Выставить на Point. А в случае с текстом что делать?
Размер шрифта нормальный подбери. Не 13 и 15, а "целые" числа вроде 12, 24, 36, 48. От шрифта зависит.
Оказывается после компиляции все очень четко и без размыливания. Возможно, что это сделано для оптимизации в движке.
А как реализовывают плавное появление надписи? То есть, чтобы текст слева направо будто по буквам набирался.
Оф. уроки на сайте юнити. Их и документации хватает на всё.
С появлением 5й юньки были туториалы от самих девов про нвое гуи, и как раз про появление текста по буквам, вроде даже.
Они еще эффект 3д интерфейса там показывали.
Мхех, ну окей, спасибо за все разъяснения, ушел делать шедевр
> и как раз про появление текста по буквам, вроде даже.
Можно ссыль? На канале юнити несколько видосов про гуи по 20+ минут.
я как бы решётку знаю, мне бы просто с основной механикой хуюнити разобраться, да и всё
Спонсировал распространение консолевого спида?
Ну скажем так это уже знаю, я дошел до циклов в C#, сейчас мучаю "хэдфёст". Что можно почитать по Юнити? Желательно на русском/польском языке? С английским у меня туго, хотя я знаю, что в IT среде это харам, но я такой как есть.
Тяжело тебе будет в жизни.
Так вот, как залочить пропорции и границы камеры при этом тягании?
Нужно запретить тягание за уголки.
Почему не пробовал дефолтные настройки от стандартной машинки? Олсо, ставить реалистичную массу не советую, лучше найди какой-то коэффициент, около двух или даже меньше.
При весе в тысячу колымага себя ведёт, как будто веса в ней сорок тонн, да ещё якоря отданы с обоих бортов. Но дело твоё.
Почитай руководство, гораздо быстрее освоишься.
с дивана вещаешь ? Думаешь я не гуглил?
Запили свой лаунчер, что ты как хуй
http://docs.unity3d.com/ru/current/Manual/CommandLineArguments.html
Маска скрывает гуи элементы. Грубо говоря, вместо того, чтобы писать по букве за раз ты пишешь всё сразу, но показываешь по букве. В принципе, писать по букве проще. Но маской тоже можно.
Через маску интересный вариант. Когда-то давно пробовал сделать вывод добавляя по букве к тексту. Но напрягало, что при выравнивании по центру, строки начинали плясать по мере заполнения.
Я пилил на флеше ультраебанутый метод, с обычным шрифтом и "пустым" на основе обычного удалялся графон шрифта, текст выводился пустым шрифтом (у которого размеры знакоместа были как у нормального, для предотвращения распидорашивания), затем по букве пустой шрифт менялся на нормальный. Делал так потому что при заполнении по букве получалась хуйня с переносом, когда слово прыгало на следующую строку, ну вы поняли.
Шоб*
Я об этом думал, и с таким подходом у модельки можно кости через скейл сдувать в ноль. Но хочется что то поизящней сделать.
Как мне теперь ОК нажать?
Xamarin же. В сублайме нельзя вообще цветовую схему настроить. С таким же успехом я могу использовать Notepad++.
А еще мне нужно чтобы ошибки(пропущенные скобки, окончания и т.д.) подсвечивались. Чего тоже в Sublime нет.
>нет плагина
Такого плагина нет?
http://csscriptnpp.codeplex.com/
>>273135
Меряемся блокнотами.
Ну смотри, все серьёзные разработчики пишут в студии. Но студия же говно. Алтфаки пишут в вим или чём-то подобном. Но это же не для нас. С юнити идёт монодевелоп, но нам же это не подходит. Есть ещё нотепад++, но он слишком простой, нам бы понавороченней. Короче, что угодно, чтобы игр не делать.
Пасиб за пояснение, няш. Просто меня как приучили в вузе к студии и выдали лицуху на неё, так и сижу. А тут смотрю, и чет начал сомневаться в правильности моего пути. А тут оказывается обычный онанизьмъ.
1. Юнити компилирует весь проект при изменениях, делает это медленно. Мы выносим код наружу - и никакой перекомпиляции.
2. Мы можем делать нормальное разделение на модули с нормальным тестированием.
3. Мы можем избежать протечки абстракций ниже чем это нужно.
4. Мы можем красиво прикрутить обфускатор, для параноиков.
5. Можно нормально хранить исходный код отдельно от данных, без возни с неработающим git lfs. Использовать для всего остального старый добрый svn или новомодный plastic scm.
Это требует решения мелких проблем с контролем версий (чтобы не залить дебажную dll в неправильный репозиторий), и нетривиальной настройки CI, но они решаются. И может не очень получиться жить с Unity Cloud Build.
У меня есть знакомая, которая не сечет в программировании, но очень хотела помочь, и вот ты ответил на мой вопрос, она увидела это, непоняла, и теперь у меня будет кекс. Спасибо тебе анон, ну и за идею с дочерним объектом тоже.
Да. Работаю в юга.ру, пишу новости в монодевелопе.
>GetType()
>GetParameters()
>Type
>string
>еще дохуя всего не выделено цветом
>пишет что кто-то соснул
Без синтаксиса для Юнити - не нужен.
> При чем здесь вообще рейкасты
В том, что вместо пуль у меня обычный хитскан, из оружия идет рейкаст во время стрельбы. Я хочу, чтобы этот луч визуализировался, типа трассеры
Даже если искаропки нет - можешь сам эту функцию написать.
Ну вот почему сразу нормально не написал?
Трассеры это к line renderer. Указываешь исходную точку и точку которую возвращает RaycastHit. ВСЕ.
Не знаю, у меня какое-то косноязычие.
схуяли?
Пасибки, помог.
Сейчас захожу посмотреть что купили а там такая параша. Что делать?
Да, слепой.
Программирую шрифтом Брайля на "гусиной" коже девственниц, заточённых в холодный подвал. Делаю игры в жанре звуковой квест и тактильный хиден обжект.
На самом деле нет.
ну на самом деле не каждый сможет допереть сразу, ничего такого ужасного он не спросил
none и есть розовый, тупой ты даун. Когда создаешь куб на нем default материал.
ясно. спасибо.
Ну я об этом думал, и даже писал тут. Но ожидал изначально побольше вариантов, типо вроде того как создатели л4д реализовавали расчлененку и т.д. Так же чет покопошился в гугле и нашел инфу мол в УЕче пиздатое гуро чуть ли не из коробки. А потом понял что у меня контролер персонажа ебанутый, и 2 день уже переделываю
Поверни свой куб чтоб локальные не совпадали с глобальными.
Я о том, что Constrains работают в глобальном пространстве, а не в локальном.
Ставлю кубик таким образом. ConstrainsX - значит в локальных координатах Х он не должен двигаться. Но фига. Он не двигается в глобальных - как бы я его не вертел, он будет не двигаться только по одной и той же глобальной оси.
Так он и должен двигаться в глобальных координатах. Но я все равно не понял что тебе нужно. Какого результата ты хочешь добиться?
Согласно справке, он должен фризиться в локальных координатах гиридбоди, а не сцены.
Да, Кэп, именно. Об этом я уже несколько раз сказал. На этой странице. Буквально парой ответов выше. Но если тебе лень читать то:
Блочить движение он должен в локальных координатах. И кстати, Constrains должны фризить движение в локальных координатах!
Он это го не делает, но должен фризить в локальных координатах. В координатах локальных. Координатах в локальных. Кстати, в каких координатах он должен фризить, не подскажешь ли ты мне?
Кстати, что такое локальные координаты СЦЕНЫ? И чем они отличаются от глобальных?
Дебил, у физического движка своя координатная сетка.
Весь ваш диалог становиться еще смешнее, если представить что это один анон.
Анон, подскажи, сколько времени потребуется что бы выучить основы скриптинга на С#&?
До этого писал на js в пресловутом gamemaker stduio.
Если можно, ссылочку на годный мануал кроме документации к Unity с сайта.
с:
А локальная КС у тебя создана? Или объект дочерний от сцены т.е. локальные совпадают с глобальными?
Если ты с джавки то, справку мсдн почитай и быстро перекатишься. Можешь еще туторы поковырять стандарные юнити и посмотреть как там скрипты выполнены. https://msdn.microsoft.com/ru-ru/library/67ef8sbd.aspx
Блядь, есть положение обьекта в сцене. Это одна хуйня, управляется трансформом. Есть положение обьекта в физическом мире, управляется с помощью ригидбади. Если ты такой дебил, что даже справку не осилил, то это твои проблемы. Иди дочитывай, а потом приходи, сука, спрашивать. Еблан криворукий.
парент-чайлд, нет?
Вся суть ассетотаскателей.
АААХАХАХАХАХ.
Сказал, восьмиклассник, который не может в три строчки кода залочить ось объекту))
Ты осознаешь, что есть объект, у которого есть трансформ? И что ригидбоди двигает этот объект с помощью физической силы, описанной физическим движком.
Создай емпти, создай у него два дочерних ригибоди. соедени их джойнтом, дай одному констрейн по оси х.
запусти, подергай джойнт - дочернйи будет двигаться по всем осям кроме х.
теперь поверни головной емпти на 90 градусов и подергой джойнт.
С помощю физической силы двигается или вращается ригидбади, положение которого, в физическом мире транслируется в трансформ, а не наоборот. Боже да нахуя я тебе все это объясняю, ты же дегенерат. Только время зря трачу.
*два дочерних ГО с ригибоди т.е.
Я сначала думал что он просто тупой, но теперь мне кажется что он позеленел.
Необучаемый.
Долбоеб.
>как сделать чтобы работало?
>прочитав справку по юньке
>UNITY - Руководство: Rigidbody (Твердое тело)
>Наибольшее отличие между управлением трансформациями и твёрдыми телами заключается в использовании сил. Твёрдые тела могут управляться силами и вращением, трансформации же не могут. Трансформации можно перемещать и вращать, но это не то же самое, что и использование физики. Вы заметите разницу, когда решите сами испробовать это на деле. Добавление силы/вращения к твёрдому телу позволит изменить позицию и вращение компонента трансформаций (Transform) объекта. Вот почему вам нужно использовать только один из них. Изменение трансформаций при использовании физики может создать проблемы столкновениях и других вычислениях.
:(((
Бля, какой же ты конченный.
Ну ок. Запили оружие с магазином, автоперезарядку оружия и перезарядку по нажатию кнопки.
Desert Strike в 3D. И без вертолета, а с неким батлкрузером который собираешь сам из модулей, а потом летишь зачищать на нем укрепрайоны.
Ну ты же хотел "попроще".
Ясли нормально систему стрельбы пилить, с разбросом, ограничение дальности(чтобы проджектайлы автоматически уничтожались пролетев определенное расстояние) то получается очень даже дохуя.
Это твг или задание?
Я не чувак который жаждет задания. Друже, я тебя удивлю но тут есть не только ты и я :3
Покрути драг и массу ригидбоди. Или заскриптуй, чтобы при коллизии по осям x и z сразу велосити ноль.
Тебе уже нихуя не поможет)
Надеюсь, ты просто троллишь.
Идея норм, надо просто добавить проверку, где именно произошла коллизия и на сколько это отличается от форварда. Иначе будешь прилипать к стенам. Но это не моя игра, чтобы я делал всё. Хотя, была бы это моя игра, я бы выбросил транслейт.
Я из тех господ, что вчера тут поясняли по делу, ну убедились что срать намного приятнее, чем советовать необучаемым всерьез.
Самоутвердился тебе за щеку. Проверяй.
Не вестись же на твою тупость. Драг у него за инерцию отвечает, вообще охуеть. Хоть справку почитай, убогий.
Проерил мамин ротешник, там пусто) Хуевый из тебя сратель)
Накинул тебе за щеку еще раз. В этот раз не отвлекайся.
>Доказывает, что драг отвечает за инерцию
>Кидает кусок справки про абсолютно другую хуйню, которая никак не относится к драгу
Ты болен. Тем более, уже сказали, что инерции быть не должно, а ты предлагаешь аддфорс.
>>273990
Там же несколько скриптов. Один с чарактер контроллером, который, кстати, решает большинство проблем. А через транслейт попробуй по кривому террейну походить, например.
>>273992
Ты боленх2. Это разные люди.
Вспорол ей живот. Говна не нашел. Может ты себе в ротешник по ошибке насрал?
Как я могу работать у тебя в трусах, если я накидываю тебе за щеку. То, что тывидишь написанное под этим спойлером - я печатаю прямо на члене. Так что не отвлекайся на чтение а лучше причмокивай тщательнее.
Ёбаный ты шизик.
Заканчиваю мечтать, открываю твой рот и начиную туда срать. Пррр... Пережевывай тщательно, у меня запор небольшой.
Оно м.б. разным.
Сделал для него окошко int, но он обнуляется при запуске игры.
Конечно невозможно. Это доказывает тот факт, что я обосрал тебе обало. А теперь иди почисти зубы и сполосни рот, потому что я уже готовлюсь пихать, в который раз, тебе за щеку. Не хочу запачкать хуй в говно.
GetComponent<transform>().position.x
Да он не может перестать срать. Из него не может выходить ничего, кроме говна. Он его ест, потом ним срет в гд. Псрет нюфаням в ротешники, под соусом помощи, срет всем остальным, потому что прост)) Так что пускай срет, а потом жрет. Круговорот говна в гд.
Во первых координаты это float.
Записывается так:
float pos;
pos = transform.position.x/y/z
Считываем наоборот. Если нужно перед transform указываем ссылку.
Признал тебе за щеку.
От тебя до сих пор несет говном. Ты так и не почистил рот, как я тебе говорил.
У меня нет времени сочинять опусы, пока я накладываю тебе в рот говно.
Я за твоим чавканьем не могу разобрать слов. Перестань жевать говно когда со мной разговариваешь.
Ты больной, понимаешь? Или говна переел. Или у тебя отравление мочой. Не знаю. Ты ешь говно, наверное от этого у тебя проблемы с психикой. Или с логикой. Или и с тем и с другим. Я бы тебе помог, но не могу. Или не хочу. А может я тебе уже помог. Ломка? Да, ломка от говна. Тебе было плохо, я посрал тебе в рот. Теперь все хорошо. Да-да, теперь у тебя все хорошо. Но таблетку все же прими. Мало ли что.
Извини, я на работе, не могу срать чаще, чем разрешает трудовой договор. Вот тебе еще порция - прррр...
Я не понимаю что ты там лепечешь про хуй. Единственный хуй, который я вижу, это мой хуй в твоем рту. Проснись, маня, ты обосрался [spolier]себе в рот[/spoiler].
Разметочка.
Спасибо.
Чисти блядь, чисти этих серунов. Пиздец.
Я уже заебался унижать копроГорлума. А моча все спит. Я в ахуе от такой степени свободы.
Да просто какой то больной семен пришел пожрать говна. Не обращай внимания.
NPC npc_mocha=npc.GetComponent<NPC>();
npc_mocha.first_name=...
npc_mocha.last_name=...
...
Типа так.
А может и можно через AddComponent() сразу NPC заполненный присунуть, я хз.
NPC _npc = npc.AddComponent...
_npc.hui = 1;
_npc.pizda = 2;
ГетКомпонент также возвращает класс того что указано в <>, можно сохранять в переменную и ебать.
void Start() {
gameObject.AddComponent<npc>();
npc componentNPC = GetComponent<npc>();
componentNPC.first_name = npc_info.first_name;
}
Ты, видимо, этого не осознаешь, лол. Возьми в пример какой-нибудь сверхкрепкий материал. Но, судя по треду, ты шизик какой-то.
Делаешь модель из нескольких кусков, при отрыве руки удаляешь собственно кисть и там кусок запястья и заменяешь его на модель оторванной руки с торчащими костями и мясом. Ну и не забудь позаботиться о том, чтобы она тот же скелет использовала. Я хуй знает как это, но там как-то можно.
У тебя эта стенка начинается и заканчивается ровно по сетке, а должна выступать на половину толщины.
Безумные умения релейтед.
Вроде в 5 уните пофиксили скейл партиклов. Если нет, то домножь скорость и прочую хуйню, которая не меняется, на скейл через скрипт.
Итоговую стенку, соответственно, делай длиннее на 1 ширину.
И вообще не хуйня ли это, может есть более труевый способ?
Борщ, гд. Есть вопрос про Ray и рейкасты. Можно ли вернуть то, с чем столкнулся рейкаст? Допустим у меня условный куб рейкастит на x юнитиметров и сталкивается с несколькими условными кубами другого типа. Возможно ли получить те кубы, с которыми он столкнулся и/или произвести некоторые изменения с параметрами этих кубов? смена текстуры/свойств например
>Компюктер не луснет
Луснул с тебя.
Алсо зачем им каждую секунду обновляться? Можно вообще к ним заглядывать чтоб сгенирировать следующую задачу, раз в минуту, а остальное время пускай безмозгло ползут к ней.
>Алсо зачем им каждую секунду обновляться?
Хотелось бы обсчитывать близлежащие участки ( а то и весь мир) более менее правдоподобно, особенно бой, не то что горит, но хочеться глянуть что из этого получится, опыта поднабраться.
Так что, в одной функции все считать нормально? Ну то есть если нет задания, то генерируем, если есть выполняем, пересчитываем координаты, если напали, то ставим на паузу задание и выполняем логику поведения в бою, если отпиздили ищем куда съебаться и тд. Если во сне, то вообще нихуя не считаем и спим дальше.
Есть. Pure Entity-Component-System. Самый Ъ-путь.
Генерируй меш ручками. Там всё тривиально
Не считая того, что зачем нужна такая всратая тонна кораблей в этом космосе, если от них всё равно нет никакого прока, так это и делается - прогоняешь весь массив раз в какое-то время и смотришь что случилось.
Едва ли у тебя там какая-то сложная математика, чтобы что-то висло.
>>274220
>особенно бой
А если у тебя бой без физической модели, то вообще не понятно, ради чего вся авантюра.
Благодарю за ответ.
>А если у тебя бой без физической модели, то вообще не понятно, ради чего вся авантюра.
Ну вот к примеру кто-то прыгает через врата в другую систему, надо же посчитать бой на той стороне, и желательно правдоподобно. Может действительно хуйня, но мне просто хочется понять как писать логику живого мира, где игрок петушок простой, и без него всем охуенно.
if (Physics.Raycast(transform.position, transform.up, out hit, 10, Mask)) {
купить пасскод();
}
else {
не покупать пасскод();
}
Так что если вы используете for вместо foreach для коллекций с целью избежания GC - то больше оправданий для этого нет.
Это про Garbage Collection.
Блядь, жопой прочел.
Можно возвращать либо имени, по тегу, либо из массива.
Например:
Physics.Raycast(transform.position, transform.forward, out hit, 10, -1);
if (hit.transform != null)
{
if (hit.transform.name == "Абу")
print("Это Абу.");
}
else if (hit.transform.tag == "Abu")
{
print("Купи пасскод.");
}
}
>>274193
на самом деле довольно легко. генерируй меш ручками, все что нужно сделать это структурировать его не через жопу а сделать нормальный граф сочленений, если у тебя могут быть соединения не только цепочкой, или Т-образные соединения.
>>274215
стоит добавить что если хочешь чтобы луч протыкал много объектов то используй Physics.RaycastAll.
В трех
> генерируй меш
Вчера весь день потратил на изучение меша и в итоге получилась вот эта хуерга, которая не работает как нужно. Как правильно расставлять вершины на поворотах, чтобы все так не искажалось и сохранялась толщина стены? По пикрилу понятно, что нужно продлевать или расширять вершины, но я хз как это все высчитывать.
Внешний угол координаты не меняет.
У внутреннего угла 1 координата от первой стенки (он по прежнему на ней лежит), 2 координата - это внешняя точка первой стенки минус sin(45) * ширина.
Пиздец я хуёво объясняю.
Или косинус, в зависимости от того, какую координату ищешь. А то я чото на картинке накосячил.
не в ту сторону думаешь. твоя хуйня строится вокруг соединений же на самом деле, просто бери векторы этих соединений относительно места сочленения, нормализуй, сплюсуй, нормализуй. ну и помножь на -1 чтобы вторую координату узнать для двойного сочленения(можно конечно нормальную геометрию вспомнить но так понятней). получишь нормализованное направление которое тебе нужно.
ну и да, для сложных соединений нормаль уже нельзя помножать на половину толщины стены, иначе толщина будет ниже нужной. но так как все углы тебе известны и длина одной стороны и треугольник равноберденный то найти длины сторон много мозгов не надо.
а. чет про двойные я мало подумал. там же стена тоже тоньше будет. ну, тут тоже прямых углов хватает. не так и трудно будет посчитать эту хуйню.
бамп
Суть в том, что кубов всегда много на пути одного рейкаста, будет ли это работать для каждого из них?
У моно есть дурная привычка делать боксинг когда делаешь foreach для итераторов в некоторых контейнеров. Это может происходить, может нет, может даже пофиксили. Из за чего генерируется ненужный мусор на ровном месте. У MS-компилятора такой проблемы нет.
А как записать в массив конкретный объект, пришедший по рейкасту и не записать его потом снова?? чот вообще нихуя не понимаю
>>274498
Ты имеешь в виду массив типа RaycastHit[]? В таком случае в каком порядке туда записываются объекты?
Да.
>В таком случае в каком порядке туда записываются объекты?
От transform.position
Хотя какая вообще разница, перебирать то ты их всеравно будешь через foreach по тегу или по имени.
>>274521
Уже разобрался, спасибо только вот мне нужно сферкастнуть а нихуя не кастуется, с лучом все ровно, а сфера не кастится, если первым аргументом указать начало как Vector3 то он жалуется что не Ray, какого хуя собсна.
SphereCast выполняется так:
RaycastHit[] hits = Physics.SphereCastAll(transform.position, 0.7f, transform.up, 0, -1); // 0.7 - радиус, 0 - дальность, -1 - маска
foreach (RaycastHit hit in hits)
{
print("test");
}
Не работает нихуя.
Выполняю
>hits = Physics.SphereCastAll (transform.position,4f,transform.up,0,8);
Вывожу длину массива hits - а она 0.
Ну так нужное действие все равно не происходит - он возвращает 50-60 объектов.
RaycastHit[] hits;
Ray ray = new Ray();
ray.origin = transform.position;
ray.direction = Vector3.back;
hits = Physics.SphereCastAll (transform.position,4f,transform.up,0,8);
Debug.Log (""+hits.Length+" ");
for (int i = 0; i < hits.Length; i++)
{
RaycastHit hit = hits ;
hit.transform.GetComponent<NodeMaterial>().cov = true;
}
Если ставлю маску -1 то он возвращает 50-60 объектов и эксепшн что не найдет такой компонент.
бля разметка поехала
RaycastHit[] hits;
Ray ray = new Ray();
ray.origin = transform.position;
ray.direction = Vector3.back;
hits = Physics.SphereCastAll (transform.position,4f,transform.up,0,8);
Debug.Log (""+hits.Length+" ");
for (int i = 0; i < hits.Length; i++)
{
RaycastHit hit = hits ;
hit.transform.GetComponent<NodeMaterial>().cov = true;
}
Разберись с масками и уменьш радиус до нужного тебе.
А GetComponent правильно возвращать вот так:
if (hit.transform.GetComponent<NodeMaterial>() != null) hit.transform.GetComponent<NodeMaterial>().cov = true;
Спс за проверку, с маской разобрался, но получается слегка распидарашенная сфера, сдвинутая влево вниз.
А лол, разобрался.
Там где foreach добавь b = true;
Во я дибил. Точно. Можно камеру поднять. Спасибо.
Суп, антуаны, такой вопрос - при переборе массива быстрее работает цикл через for или foreach?
Ну давай разберем по частям, тобою написанное. Складывается впечатление, что ты не слышал про ссылочные типы. Много вас таких по весне оттаяло.
Анус себе рекурсируй, пес. Если в корутине задать цикл while или for, то можно ее хоть вечность крутить, не прерывая.
крч помогло, то что в sdk-manager в квладке tools удалил 24 версию и установил 23.0.3 (кжсь) android-build. на будущее, если кто ещё столкнётся с проблемой
Флоаты помечай, нулабл помечай, а ссылка или не ссылка ололо ртфм нуб. Пизданутый язык.
HuiPizda - ссылочный тип (за исключением структур)
huiPizda - значимый тип (за исключением object и string)
бля, и правда пизданутый язык. В божественной джаве с большой буквы всегда ссылочный, с маленькой всегда значимый.
Спасибо.
Ну я же нашел. Значит и ты сможешь.
Я имею ввиду, что скрипт не работает
Что за "кастомный класс", поехавший? Если ты пишешь свои классы с маленькой буквы, то мне не остается ничего кроме как послать тебя нахуй.
> с большой буквы всегда ссылочный
Я вкурсе конвенции. Но ты же понимаешь что ты обосрался?
> кастомный класс
Я забыл терминологию, на джаве ничего не писал полтора года. как оно называется?
>Я вкурсе конвенции. Но ты же понимаешь что ты обосрался?
Как только покажешь хотя бы один проект посерьезней laba1 где есть классы с маленькой буквы, то сразу пойму. До этих пор твои жалкие потуги только показывают твою тупость.
>как оно называется?
Я его спрашиваю что он имеет ввиду, а он мне в ответ "Как называется то, о чем я говорю?". Ебу дал?
Когда я пытаюсь сложить две переменные, типа [System.Serializable]
public class MyYoba{}
меня посылает нахрен и приходится складывать поэлементно. Это делает меня грустной пандой. Научите?
Можно перегрузить оператор как тебе нужно https://msdn.microsoft.com/ru-ru/library/8edha89s.aspx
Благодарю!
С какой целью интересуешься? Если на ПК, бери просто Scirra construct и не еби мозги. А по сути есть ЗАГОТОВОЧКИ в любом редакторе игор. Марио везде найдется.
Движение - драг-н-дроп лкм.
void OnCollisionEnter(Collision collision)
{
//if (collision.rigidbody) playerHealth=50;
if(collision.gameObject.tag == "wall") transform.position АСТАНАВИСЬ;
}
Ссылка: https://asmb.itch.io/no-marios-sky
Собственно вопрос, как он реализовал круглый замкнутый уровень? Чисто концептуально, как это может быть сделано?
Камера.
шейдер на камере
Можно и без шейдера, круглый объект и меняем в rb направление гравитации к центру объекта.
Это копия, сохраненная 8 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.