Size: a a a

2020 May 06

АК

Ал Кипленд in unity3d.ru
А не то что кнопка вообще нажата.
источник

А

Александр in unity3d.ru
блин, ребят, вы играли в старые игры?
помните как там было реализовано управление клавишами, а не в сторону направления мыши.
Вы зажимаете клавишу W персонаж бежит вперед, не отжимая её нажимаете D, персонаж поворачивает, вы её отпускаете - он бежит дальше по прямой.
Мне это нужно.
Реализовать логику действие если одна из клавиш зажата ибо по отдельности всё работает,как надо.
источник

G

Graf in unity3d.ru
Александр
ну вот что-то в проверке нажатий, наверное и не так. Ибо оно от части работает как нужно, но только если использовать определенные клавиши. То есть, зажать W, а потом S - он поедет вниз.
А если зажать D, а потом W, то он будет так же ехать в направлении D
Может ну нахер такую логику?
источник

АК

Ал Кипленд in unity3d.ru
Александр
блин, ребят, вы играли в старые игры?
помните как там было реализовано управление клавишами, а не в сторону направления мыши.
Вы зажимаете клавишу W персонаж бежит вперед, не отжимая её нажимаете D, персонаж поворачивает, вы её отпускаете - он бежит дальше по прямой.
Мне это нужно.
Реализовать логику действие если одна из клавиш зажата ибо по отдельности всё работает,как надо.
Вот по Input.GetKeyDown ты добавляешь клавишу в список (а не в стек).
По Input.GetKeyUp убираешь её оттуда. Всё. О.о
источник

АК

Ал Кипленд in unity3d.ru
И точно также используешь последнее значение из списка.
источник

M

Mcc in unity3d.ru
ну правильно написали, типо такого получится
источник

M

Mcc in unity3d.ru
void Update()
{
if (Input.GetKeyDown(KeyCode.W)) w++
else if (Input.GetKeyUp(KeyCode.W)) w = -1;

if (Input.GetKeyDown(KeyCode.A)) a++
else if (Input.GetKeyUp(KeyCode.A)) a = -1;
...
}

if ( w < a ) едем вперед
else if ( a < w ) едем влево
else (a == w) выбираем что угодно :)
источник

А

Александр in unity3d.ru
хм, попробую спасибо
источник

M

Mcc in unity3d.ru
либо реально со списком замутить как выше написали
источник

G

Graf in unity3d.ru
Логика конечно странная, если цель избавиться от езды по диогонали, не проще вешать флаг нажатия первой кнопки и недопускать нажатия других пока текущую не отжмешь
источник

M

Mcc in unity3d.ru
Graf
Логика конечно странная, если цель избавиться от езды по диогонали, не проще вешать флаг нажатия первой кнопки и недопускать нажатия других пока текущую не отжмешь
тогда отрывать клавиши надо, не так комфортно играть
источник

ad

an da26不 in unity3d.ru
Я
Друзья, а кто может подсказать по event/action?

Вопрос следующий. У меня есть 3 собственных класса:
Vertex
Polygon
Object

Полигон состоит из 3х экземпляров вершины. Объект состоит из нескольких полигонов.

Я делаю action OnChanged для вершин и полигонов, соответственно. Полигон подписан на событие изменения его вершин, а объект на событие изменения его полигонов.

Далее я могу работать с объектом и в какой-то момент решу разделить один полигон на 3 более мелких. Следовательно я из списка полигонов объекта удалю один полигон и добавлю три новых.

Вопрос:

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

Как такой кейс обрабатывать?
Да, будет крутиться в памяти, если не будет отписан.
Тут, в принципе, что-то не так. Лучше держать отдельный менеджер, который занимается подписками.
Возможно, на первый взгляд, это нелогично: ну, типа, как же так: "вот он объект, почему у него просто не может быть события, относящегося к нему же?!"
А отдельный менеджер всё же лучше потому, что отделяет ответственность за подписку от самого объекта, или даже нескольких типов объектов. Ну и памятью так легче управлять. Зачищаешь коллекцию подписок по определённому ключу – и готово, память свободна от действительно ненужных объектов.
источник

А

Александр in unity3d.ru
Graf
Логика конечно странная, если цель избавиться от езды по диогонали, не проще вешать флаг нажатия первой кнопки и недопускать нажатия других пока текущую не отжмешь
не, нужно именно так.
источник

А

Александр in unity3d.ru
Со списком работает, спасибо.
Я как-то почему втупился GetKey и совсем забыл про GetKeyDown, пусть игрок себе держит палец на клавише, но это не обрабатывается теперь.
Правда, теперь новая проблема, если при зажатых двух клавишах отпустить одну, то почему то не просчитывает что она отжалась..
источник

А

Александр in unity3d.ru
Но всё это вроде как фикисится вынесением логики в другой метод.
Спасибо за помощь всем!
источник

NN

None None in unity3d.ru
Ребят, есть такой вопрос, у меня есть кнопка на Canvas , в котором я указал параметр world space. Указал камеру, но почему-то при запуски игры, кнопки не нажимаются, что делать? Заранее спасибо)
источник

Я

Я in unity3d.ru
an da26不
Да, будет крутиться в памяти, если не будет отписан.
Тут, в принципе, что-то не так. Лучше держать отдельный менеджер, который занимается подписками.
Возможно, на первый взгляд, это нелогично: ну, типа, как же так: "вот он объект, почему у него просто не может быть события, относящегося к нему же?!"
А отдельный менеджер всё же лучше потому, что отделяет ответственность за подписку от самого объекта, или даже нескольких типов объектов. Ну и памятью так легче управлять. Зачищаешь коллекцию подписок по определённому ключу – и готово, память свободна от действительно ненужных объектов.
Тут проблема в том, что менеджер не узнает, когда экземпляр класса перестанут использовать.
Я же экземпляр не удаляю, я просто перестаю на него где-либо ссылаться.
Т.е. был экземпляр полигона, он входил в список полигонов объекта. Потом я его из этого списка удаляю. И вот это. Полигон как бы есть в памяти, но никто его не использует. Следовательно, вроде как, его должно мусоросборником удалить
источник

ДО

Денис Олейник... in unity3d.ru
Поскажите плиз хороший плагин для юнити который позволяет работать ска мерой и галерей в Андроид.
источник

a

altirtix in unity3d.ru
Привет. В чем может быть проблема? Есть простая лоу поли 3д игра. На компе +-200 фпс в статистике показывает. А после компиляции и запуска на андроид в игре где - то фпс 15 и это на снапе 845, при том что в настройках проекта указан лоу спек.
источник

d

dm in unity3d.ru
что profiler говорит?
источник