Unity update не работает

Unity и снова Update и FixedUpdate

Здрасьте, программисты. Я что-то уже очень долгое время не могу заставить цилиндр прыгать в воздух. Ну то есть эта мразь прыгает нормально, если прыгнуть единожды. Но я спёр ещё кусок кода на более сильный прыжок (зажали кнопку — персонаж прыгнул выше).
Спёр отсюда — https://www.reddit.com/r/Unity2D/comments/2dkaoh/free_marioesque_… r_controller/ Там в комментах запостили.

Но у меня не работает. О чём я написал жалобный пост на оффициальной сайте Юнити, но увы и ах, был проигнорен со своей ничтожной проблемой. http://answers.unity3d.com/questions/1141517/different-jump-heigh… nswer-1148022

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

Но ёто всё сопли. Есть код:

То есть в Апдейте, как и положено добропорядочному гражданину, я регистрирую нажатия кнопочек. А в ФикседАпдейт — двигаю всякие предметы туда-сюда. Вроде здорово и практически также как и в примере явно опытного программиста. НО! Прыгает моя капсула если кнопку зажать — то высоко, то очень высоко. Долго думая, я понял, что дело здесь в том, что ФАпдейт может вызывать хоть триллион раз за кадр, тогда как апдейт стабильно один раз. То есть по хорошему мне нужно как-то урегулировать количество вызовов Фапдейта, чтобы он вызывался скажем один раз за фрейм? Или как делаете вы, нормальные программисты? Как синхронизировать Апдейт и фикседАпдейт?

Помогите плиз, уже всё перерыл. У меня вообще непонятки по поводу дружбы этих двух функций и в какой что писать надо. Бекоз нажатие кнопки если я и зарегю в Апдейте например, то не факт, что ФАпдейт не вызовется раньше, из-за чего у меня бывало такое, что GetButtonDown вообще не отрабатывал, так как был обрабатываем в Апдейте, а в ФАпдейт передавал лишь признак «меня нажали». Короче, уже воду лью. Помогите, люди добрые, накануне этого светлого праздника любви, весны и Клары Цеткин!

О боже.. Эти графики легальны вобще? Спасибо, патсанчик, я понял, что можно использовать корутины всякие волшебные, но эй, смысл то в чём? Если тот же самый WaitForFixedUpdate будет ждать следующий fixedUpdate и вызовется всё равно три раза. Или два или пятьдесятшесть. График классный, я его себе сохранил, за это тебе большое спасичбо, даже плюсану, если пойму как.
Но пока понять не получается как мне это должно помочь.

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

частота обновления Update — суть тот же fps (frame per seconds) кадров в секунду (Game Loop)
частота обновления FixedUpdate — фиксирована (может задаваться в редакторе) (Physics Loop)

если у тебя возникла необходимость их синхронизировать — порочный путь, пересмотри свой подход
и что мешает разобраться как это сделано в стандартном character контролере ? 🙂

вряд ли кто то кроме тебя будет пытаться разобраться в твоем коде

Этот парень мой герой конечно, но то, что у него происходит мне не нужно. Точнее одиночный прыжок я уже в состоянии сделать. Проблема конкретно в том, чтобы добавлять высоту, пока игрок держит кнопку. Если держать её максимально, то иногда он прыгает высоко, иногда очень выского, потому что в како-йто раз он заходит в Фапдейт два раза, в другой три. И этот паренёк никак не затрагивает тему ФАпдейтов и апдейтов, также как и увеличения силы прыжка.
И боже упаси, разве заставляю разбираться в моём коде? Просто хотел узнать, как правильно такое проворачивать. Не первый же я на деревне решил создать механику сильного прыжка. А то что синхронизировать хочу — так это уже мои догадки, чтобы не показаться совсем дебилом (не сработало), я не форсю эту тему, уверен, есть какое-то более изящное решение, вот только какое?

Читайте также:  Macbook как настроить панель

Ну короче смотрите господа, много всякого я нашёл в интернетах. Все такие радостные, что у них решения работают, только ни.. черта они не работают. Почему? Ну потому что как бы там всё в своём волшебном Фапдейте не продумать — проставит максимальную и минимальную высоты прыжка, тем самым нормализовать высота этого самого прыжка, то попасть в этот фапдейт с вероятностью в 100% судя по всему нельяз, или я тупой (не исключено).

Есть обычный вонючий код

И что думаете? При нажатии на пробел верхняя надпись вылезает в 100% тогда как нижняя в 90. Вот и как скажите жить с этим? Весь интернет говорит — обрабатывай всякие физические движения в ФАпдейт, а у меня он туда даже не заходит в некоторых фреймах. И я понимаю, что я где-то лоханулся, иначе бы все игры построенные на юнити были бы жутким неиграбельным говном, но подскажите тогда как с этим справляться? Как можно обрабатывать движения в ФАпдейте, но регистрировать их к исполнению в Апдейте? Или не надо? Я вот попробовал перенести всё в апдейт — прыгает каждый раз, но теперь высотой прыжка у меня вообще не удаётся управлять.
Уважаемые, час ночи, сижу цилиндры в воздух подкинуть не могу, как жить дальше?

Короче надо юзать GetButton, а GetButtownDown для всяких действий которые не порождают физических действий. Ну и частично разобрался со своей проблемой в ФАпдейте. Но не очень плавно всё сейчас проистекает. получается, что в один момент прыжка он добавляет два раза силу (потому что два раза в Фапдейт входит). Из-за чего вначале прыжка всё плавно, а потом происходит малозаметное ускорение и он подлетает выше так значительно, будто пинка дали. так полагаю тут как раз пригодится WaitForFixedUpdate. Но это завтра.. точнее сегодня, но позже. Спасибо за помощь, вы душки.

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

Это бы дало гарантию того, что прыжок сработает.

Executor
О! Я понял как отвечать на форуме. (программист хренов)

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

П.С. Кармы тут, судя по всему, нет?

Jirogirg
Я бы порасковыривал готовые Юнити примеры и посмотрел как они делают. В АссетСторе есть же готовые проекты.

> П.С. Кармы тут, судя по всему, нет?

Ёлы-палы, пацаны. Нету в стандартных ассетах такой механики прыжка — есть дабл джампы, трипл джампы, а то прыжок регулирующийся по нажатию на кнопку нет. не могу пример найти.

Решил сделать так

But! Всё равно высота разная. Две разные высоты стабильно. Я уже в лог во вывесил значение мувемента по игрику и что думаете? Оно различается. Я не понимаю почему. В функцию прыжка я вхожу ограниченное количество раз. Мувемент по игрику инкремирую на некую переменную. Как оно выходит разное то?

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

Читайте также:  Как отремонтировать заливной шланг для стиральной машины

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

Opts
Я не знаю тот ли я скачал, но в том, что у меня прыжок сделан через транслейт. Это так убого выглядит. Да, для игр типа марио и прочих 2Д платформеров может это и прикольно, но для меня ваще ни разу.
Короче, кладу болт, резюмирую, что это невозможно сделать в компутерных играх и иду дальше.

Источник

В игре при переносе на андроид не работают методы start, update

Здравствуйте, написал простенький кликкер на unity , в редакторе все работает, ошибок нет. Скачал sdk и jdk. Когда командировал, в консоле выдалась ошибка: CommandInvokationFailure: Failed to re-pakage resources. C:\Users\Пользователь\Desktop\Android 3\android-sdk\build-tools\29.0.0\aapt.exe pakage —auto-add-overlay -v -f -J «gen» -M «AndroidManifest.xml» -S «res» -I «C:/Users/Пользователь/Desktop/Android 3/android-sdk\platforms\android-29\android.jar» -F bin/recources.ap_

Ещё есть желтая ошибка: Game scripts or other custom code contains OnMouse_ event handlers. Presence of such might impact performance on handheld devices. Unity.Editor.HostView:OnGUI(). Как я понял, почитав информацию о ней, её можно игнорировать. В моем коде я использовал метод OnMouseDown для клика и после того, что написанно ниже, в приложении на телефоне клики работали и все было нормально, кроме одного, об этом я пишу ниже.

Я попробовал удалить в sdk manager 29 build-tools и все заработало. Я наконец смог избавиться от первой ошибки и перенес игру на мой телефон. После запуска все вроде было нормально, я мог кликать, счётчик обновлялся ( его обновления я поместил в метод OnMouseDown() а не в Update() ) но не работали функции связанные со стандартными методами (в моем коде это Awake, Start и Update) Это я точно понял, ведь не было сохранений, которые загружаются в Awake не запускался IEnumerator, запуск которого я поместил в Start и не обновлялся текст на кнопках — Update. Все остальное работало. Причем в Unity все функции работали без проблем. Может быть такое, что эти методы не работают из-за того, что я удалил build-tools 29 в sdk или проблема в другом? Проверить сам не могу, ведь игра с build-tools 29 не комментируется. Возможно кто-то подскажет, как решить саму ошибку в console. Заранее спасибо!

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Источник

Unity update не работает

tutovik 23 апр 2015, 15:37

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

Во многих туториалах говорят, что Фикс используется для физики, при этом встречал даже в официальных туториалах, что используют обычный Апдейт. Так в каких конкретно случаях надо использовать Фикс? Чем черевато, если вместо него использовать Апдейт? Можно ли использовать обе функции в одном скрипте?

Re: Update и FixedUpdate

Kate 23 апр 2015, 15:43

Re: Update и FixedUpdate

Woland 23 апр 2015, 16:46

Re: Update и FixedUpdate

ilkalawson 23 апр 2015, 18:35

Re: Update и FixedUpdate

Woolf 23 апр 2015, 19:04

Откуда такая информация?

Re: Update и FixedUpdate

ilkalawson 23 апр 2015, 19:30

Откуда такая информация?

Re: Update и FixedUpdate

tutovik 23 апр 2015, 21:32

Re: Update и FixedUpdate

tutovik 23 апр 2015, 21:33

Re: Update и FixedUpdate

DbIMok 23 апр 2015, 22:20

Re: Update и FixedUpdate

tutovik 23 апр 2015, 22:25

Лучше не делать, но всё-таки будет работать? Просто не понятен эффект, чем это чревато?

Re: Update и FixedUpdate

DbIMok 23 апр 2015, 22:52

Re: Update и FixedUpdate

getAlex 24 апр 2015, 00:34

Я так понял, что если очень низкий фпс и игра считай что в режиме недопаузы, FixedUpdate будет стабильно тикать по часам компьютера. И т.к. физика в юнити в каком-то смысле отделена от общей среды, то если посылать сигналы с Update(), они будут как управление марсоходом, который в данный момент катится с горы где-то на Марсе. Т.е. все ваши действия будут неадекватны по отношению к физике.

И наоборот, если вы логику кинете в FixedUpdate, это при ведёт к линейности вызовов при разной нагрузке на определённые фреймы, что вызовет скачкообразные микролаги.

Re: Update и FixedUpdate

Tomsawyer13 24 апр 2015, 01:59

Читайте также:  Газовая плита от баллончика не работает

tutovik писал(а): Какой-то простейший вопрос, но я не могу до конца понять — может кто-нибудь человеческим языком объяснить, чем отличаются функции Update от FxedUpdate.

Во многих туториалах говорят, что Фикс используется для физики, при этом встречал даже в официальных туториалах, что используют обычный Апдейт. Так в каких конкретно случаях надо использовать Фикс? Чем черевато, если вместо него использовать Апдейт? Можно ли использовать обе функции в одном скрипте?

У меня на fixedDeltaTime акселерометр никак не реагировал. Ставишь TimeScale = 0.5 например, или на 0, вся сцена неподвижна, а объект привязанный к акселерометру работает в полную силу.
А на обычном deltatime все ОК.
Так что смотрите внимательней с этим.

Источник

Как исправить Failed to update Unity Web Player ошибку в Контра Сити

Многие игроки, которые играют в Контра Сити сталкивались с ошибкой «Failed to update Unity Web Player». Это может происходить из-за того, что ваша система или браузер блокируют файлы, которые плеер Unity скачивает для своих нужд. Этими файлами являются обновления, которые разработчики создают довольно часто. Программа их не получает, а вы получаете ошибку. Далее в статье мы узнаем, как устранить эту проблему и продолжим наслаждаться игрой.

Как устранить ошибку с Unity Web Player

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

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

  1. Откройте системный диск на вашем компьютере, открываем папку с именем «Пользователи».
  2. Выберите свое имя, под которым вы используете ПК. Для того, чтобы узнать свое имя, нажмите кнопку «Пуск» и обратите внимание на верхнюю часть этого окна, здесь обычно написано ваше имя учетной записи.
  3. Выберите папку с вашим именем учетной записи.
  4. Здесь нажмите вверху открытой папки вкладку «Вид», затем «Параметры».
  5. В следующем окне нажмите вкладку «Вид» и в самом низу выберите пункт «Показывать скрытые файлы и папки». Подтвердите свои действия, нажав «Ок».
  6. Найдите и откройте папку «AppData», которая должна отобразиться после ваших настроек.
  7. Далее найдите и откройте папку «LocalLow».
  8. Ищем папку «Unity», после чего удаляем в ней папку «WebPlayer».

Теперь нам нужно скачать новую версию Unity Web Player и положить ее на место старой. Для того, чтобы скачать последнюю версию веб-плеера, перейдите по ссылке на официальный сайт – https://unity3d.com/ru/webplayer. Прокрутите страницу в самый низ, выберите вашу систему из 2 предложенных вариантов и нажмите синюю кнопку «Загрузить». Версия плеера больше не меняется, т.к. разработка его прекращена. Это для нас хорошая новость, т.к. она последняя и стабильная. После скачивания файла откройте папку «LocalLow» и перетащите файл с обновлением в нее. Запустите игру, ошибка должна исчезнуть.

Другие способы избавиться от ошибки Unity Web Player в Контра Сити

Ошибка c Unity Web Player может возникать из-за устаревшей версии вашего браузера. Для того, чтобы обновить браузер Mozilla Firefox, нажмите «Справка» в верхней строке панели меню. После этого нажмите «о Firefox» в самом низу окна. Откроется окно, где вы сможете определить версию браузера. Информацию обновляется автоматически.

Установите последнюю версию браузера

Для того, чтобы проверить обновления в браузере Google Chrome, нажмите справа вверху кнопку меню. В открывшемся окне выберите справка, в выпавшем меню нажмите «О браузере Google Chrome». По умолчанию браузер начнет скачивать обновление самостоятельно, после того, как проверит наличие обновлений на сервере.

Чтобы проверить версию браузера Opera, запустите его, нажмите вверху кнопку «Opera». В выпавшем меню наведите курсор мыши на пункт «Справка» и в выпавшем меню нажмите на строку «О программе». Если для браузера нужны обновления, то появится специальное окно, в котором вам будет предложено «Загрузить и установить» браузер или «Напомнить позже».

Выбрав «Загрузить», программа начнет скачивать пакет обновления, после установки произойдет перезагрузка. Ошибка «Failed to update Unity Web Player» в игре Контра Сити после обновлений исчезает. Поэтому чаще обращайте внимание на версию своих браузеров.

Источник

Оцените статью