unity как сделать дверь

Как сделать открытие двери в Unity3D?

Часто в играх, вне зависимости от жанра, требуется реакция внешнего мира на действия игрока согласно текущему состоянию игры, например, дверь может быть открыта ключом – таким образом “наличие ключа” – это состояние, а открытие двери – это реакция на наличие у игрока ключа. В данной статье мы рассмотрим пример разработки такой системы. Для этого мы сделаем следующее:

Для начала давайте импортируем бесплатный контроллер, а также сделаем иерархию папок.

Создаем систему состояний в Unity 3D

Состояние игры будет выражаться условиями, которые будут представлять собой ScriptableObject, который будет содержать два поля – описание состояния и значение типа bool, отражающее выполнено ли условие или нет. Также стоит помнить, что ScriptableObject сохраняет своё состояние при выключении игры, однако работает это только в редакторе Unity, когда вы запустите билд – состояние сохраняться не будет, поэтому целесообразно определить метод Reset(), который будет сбрасывать состояние условия. Для это расширим класс ScriptableObject.

И создадим класс условий, унаследованный от него.

Создадим объект этого класса в папке “Conditions”.

Как мы можем видеть – мы не можем изменять состояние через инспектор, для этого мы напишем свой инспектор:

Теперь инспектор для условий выглядит так:

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

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

Создаем систему реакций в Unity 3D

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

Все реакции будут наследоваться от IReaction, они могут быть разными, например, включение/выключение объекта, включение звука, добавление предмета в инвентарь и тд, для простоты мы покажем пример на изменении позиции объекта.

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

Демо-сцена в Unity 3D

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

Как мы можем видеть – условия сохраняются даже при выключении игры.

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

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

Источник

Делаем простую игру с кнопками, ящиками и дверями на Unity

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

Для самых нетерпеливых по ссылкам ниже находится готовый прототип.
Онлайн версия
Скомпилированная версия для Windows [Зеркало]

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

Подразумевается, что вы уже успели скачать Unity и поигрались немного в редакторе. Нет? Сейчас самое время, я подожду.

Грубый набросок

Я соврал, я не буду ждать. Создаём пустой проект без лишних пакетов и выбираем схему расположения окошек на свой вкус, я буду использовать Tall. Добавляем в иерархию сферу, перетаскиваем на неё главную камеру. Теперь камера будет следовать за нашей сферой, если она вдруг захочет погулять. Переименовываем сферу в «Player», перетаскиваем в Project, теперь у нас есть prefab, который мы можем использовать в любых новых сценах, если таковые будут. Не забывайте проверять координаты префабов при создании и использовании, если мы хотим делать игрушку в двух измерениях, то третья ось должна быть выставлена в ноль для всех взаимодействующих объектов.

Добавим на сцену кубик, назовём его «Wall» и перетащим в Assets. Одинокая кубическая стена рядом со сферическим колобком не очень-то впечатляет, да? Три поля Scale в инспекторе позволят нам вытягивать стенку, а комбинация клавиш Ctrl+D создаст её копию. В Unity есть много других полезных горячих клавиш, например зажатый Ctrl ограничивает перемещение объектов единичными интервалами, а клавиша V позволит тягать объект за вершины, и они будут липнуть к вершинам других объектов. Замечательно, не правда ли? И вы всё ещё пишете свой движок? Ну-ну.

Сообразите что-нибудь похожее на комнату, сохраните сцену, нажмите Play и полюбуйтесь своим творением пару минут. Хорошие гейм-дизайнеры называют это тестированием. Чего-то не хватает, да? Хмм. Возможно, если я полюбуюсь ещё немного, то…

Скрипты и физика

Нам нужно больше движения и цвета! Хотя, если ваше суровое детство было наполнено бетонными игрушками, то можно оставить всё как есть. Для всех остальных пришло время скриптов. Я буду приводить примеры на C#, но можно писать и на JS или Boo. На самом деле выбирать последние два смысла не имеет, они были добавлены в Юнити скорее как довесок, меньше поддерживаются, хуже расширяются и для них сложнее найти примеры. Особенно ужасен Boo, который по сути является unpythonic Python. Мерзость. Виват, питонисты!

Создаём C# Script, называем его «PlayerController», перетаскиваем на префаб Player и открываем с помощью Visual Studio любимого редактора. Сперва нужно потереть лишний мусор, оставим только нужное.

Функция Update вызывается в каждом кадре, что очень удобно для реализации движения, внутри неё мы и будем размещать код. Нажатия кнопок игроком можно получить с помощью класса Input. В комплекте с Unity идут замечательные настройки ввода, достаточно написать Input.GetAxis(«Horizontal») и мы уже знаем нажал ли игрок на клавиатуре стрелку вправо или влево. Если у игрока подключён геймпад, то он может управлять и с него, нам даже не надо писать лишний код.

Функция AddForce имеет несколько интересных вариантов приложения силы, но для начала нам хватит и значений по умолчанию.

Готово! Сохраняем, жмём Play, тестируем.

Эээм, знаете, мне это напомнило тот момент из фильма Inception, где мужик бешено вращал глазами и катился кубарем то по стене, то по потолку. Наверное так он себя чувствовал.

Нам нужно запретить вращение и передвижение по оси Z. Выделяем префаб, смотрим на компонент Rigidbody и видим раздел Constraints. Оставляем неотмеченными только первые две галочки X и Y, остальные четыре включаем. Чуть выше снимаем галочку Use Gravity и прописываем Drag равный четырём (в разделе об эстетике я расскажу зачем это было сделано). Тестируем ещё раз.

Оно шевелится и не вертится! Ура! Но делает это слишком медленно. Добавим одну переменную к нашему скрипту и задействуем её в формуле нашего движения. Весь код будет в итоге выглядеть так:

Заметили как в инспекторе появилось новое поле Acceleration у нашего скрипта? Эффектно, да? Вбиваем в поле тридцатку или что-нибудь на ваш вкус и проверяем в действии.

Материалы и коллайдеры

Пора уже сделать какую-нибудь кнопку, чтобы было на что нажимать. Дублируем префаб Wall и переименовываем его в «Button». В инспекторе у коллайдера ставим галочку Is Trigger. Это развоплотит нашу кнопку и заставит другие объекты проходить сквозь неё. Создаём скрипт «Button» и вешаем на кнопку.

У коллайдеров-триггеров есть события OnTriggerEnter и OnTriggerExit, которые вызываются всякий раз, когда что-то пересекает область триггера. На самом деле это не совсем так, ибо есть множество разных объектов и физический движок обрабатывает не все столкновения, подробнее читайте здесь.

Для начала просто проверим как работают триггеры. Напишем что-нибудь в консольку Unity. Функция Debug.Log очень полезная, кроме текста она также умеет печатать разные игровые объекты.

Класс Color может принимать кроме тройки RGB ещё и альфу, но у нас стоит обычный диффузный шейдер, поэтому она для нас не важна. Тестируем!

Если вы ещё не сделали это, то настала пора прибраться в нашем проекте, иначе мы заблудимся в мешанине префабов и скриптов. Например создадим папку «Levels» для хранения сцен, «Prefabs» для складирования заготовок, «Materials» для материалов и «Scripts» для скриптов, а потом рассортируем накопившееся богатство по папочкам.

Знаете, а ведь наша кнопка до сих пор не похожа на кнопку! Давайте её сплющим и заставим продавливаться под колобком. Выберите кнопку в иерархии, сделайте её толщиной в 0.3 единицы и положите на пол, т. е. выставьте координату Z в 0.35. Видите в инспекторе наверху три удобных кнопочки «Select», «Revert» и «Apply»? С помощью них можно взаимодействовать с префабом прямо на месте. Нажмите Apply и все кнопки отныне будут плоские и лежачие.

Для реализации программной анимации мы будет использовать класс Transform. У него есть свойство localPosition, которое позволит нам двигать кнопку:

Этот код нажмёт кнопку. В целом это выглядит так:

Двери, ящики и магниты

Теперь, когда у нас есть полнофункциональная кнопка, можно заставить её что-нибудь делать. Склонируем префаб стенки, назовём его «Door», создадим красненький материал «Door Mat», повесим его куда нужно и закинем свежеиспечённую дверь на сцену. Для того, чтобы как-то воздействовать на дверь, нам нужно иметь ссылку на её объект, поэтому создадим у кнопки новую переменную.

Читайте также:  арендовать квартиру в стамбуле

GameObject это класс, в который заворачиваются все-все-все объекты на сцене, а значит у них у всех есть функция SetActive, которая представлена в инспекторе галочкой в левом верхнем углу. Если вы ещё пользуетесь Unity третьей версии, то вам придётся воспользоваться альтернативами. С помощью свойства активности можно прятать объекты не удаляя их. Они как бы пропадают со сцены и их коллайдеры перестают участвовать в расчётах. Прям то, что надо для двери. Приводим код к следующему виду:

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

Наезд колобком на кнопку автомагически растворяет дверь и возвращает её на место после разъезда. Но какой толк нам от кнопки, которая постоянно выключается и запирает нам дверь? Настал час ящиков! Копируем префаб стенки, называем его «Box», добавляем к нему Rigidbody, не забываем проделать те же самые операции, что и с Player’ом, а затем кидаем его на сцену.

Как вы наверное заметили, толкать ящик не очень-то удобно. Кроме того, если он застрянет в углу комнаты, то достать его будет невозможно. Как вариант, мы можем сделать зоны-телепорты по углам комнаты, которые будут перемещать все попавшие в них ящики, но это немного мудрёно. Добавим в PlayerController магнит, который будет притягивать все близлежащие ящики. Функция Input.GetButton в отличие от Input.GetButtonDown будет возвращать true до тех пор, пока нажата запрашиваемая кнопка. То, что нам нужно.

Как мы будем находить ящики? Вариантов множество, например, мы можем прицепить к Player’у ещё один коллайдер и регистрировать OnTriggerEnter или OnTriggerStay, но тогда нужно будет решать проблему раннего реагирования триггера кнопки. Помните ту ссылку на матрицу с разными коллайдерами? Вот-вот. К тому же магнит должен работать только по нажатию кнопки, в остальное время он не нужен. Поэтому мы будем вручную проверять столкновения с помощью Physics.OverlapSphere. Transform.position даст нам координаты центра колобка. Поищем объекты поблизости:

Поищем объекты, практически касающиеся колобка.

Нашли объект в большой сфере, проверили его наличие в малой сфере, проверили метку, двинули к себе. Немного математики с векторами, ничего сложного для тех, кто не прогуливал школу.

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

Внимательные читатели давно уже заметили один баг кнопки. Внимательные и усердные его уже исправили. Какой же это баг?

Если в поле коллайдера попадает два объекта, а потом один объект уходит по своим делам, то срабатывает лишнее выключение кнопки. Что делать? Нам нужно считать количество колобков и ящиков в области коллайдера и выключать кнопку, когда рядом никого нет, а включать при любом количестве тех и других. К сожалению, в Unity нет списка текущих столкновений. Очень жаль. Возможно, у разработчиков ещё не дошли до этого руки. В любом случае это решается парой строчек кода. Мы можем сделать свой список и складывать в него все приходящие объекты, вынимать все уходящие, а состояние кнопки менять в Update.

Lertmind предложил вместо списка использовать счётчик. Этот способ однозначно изящнее, но старый код оставляю выше для примера, как не надо делать.

Сцены, частицы и шейдеры

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

Дублируем префаб стенки, переименовываем в «Finish», меняем метку на одноимённую, превращаем коллайдер в триггер. Создадим материал «Finish Mat» с манящим голубеньким цветом и повесим на финиш.

Вся семья в сборе. Но как-то не очень маняще и слишком похоже на стенку. И на дверь. И на кубик. На помощь приходят шейдеры! Сейчас у нас для всех материалов используется обычный матовый диффузный шейдер. В свойствах материала выберем для финиша Transparent/Specular. Этот шейдер будет учитывать альфу цвета и отсвечивать вторым цветом, который мы укажем. Поставим у голубенького альфу в половину, а отблеск сделаем белым. Тестируем.

Осталось заставить финиш перемещать игрока на следующий уровень. Для управления сценами в Unity есть несколько полезных функций и переменных. Application.loadedLevel покажет нам текущий уровень, Application.levelCount покажет их количество, а Application.LoadLevel загрузит желаемый. Кроме того, нам нужно указать в Build Settings все сцены, в которые мы хотим попасть. Создадим новый скрипт «Finish», повесим на префаб и напишем внутри следующее:

Мы проверяем, что на финиш попал игрок, а потом перемещаемся на следующий или первый уровень. Дегустируем наш новый полнофункциональный финиш.

Эстетика, динамика и механика

Вот наш прототип и готов. Мы теперь можем нажимать на кнопки, открывать двери и переходить с уровня на уровень. Если мы хотим только протестировать новую механику, то этого достаточно. Но если мы хотим сделать прототип игры, то нужно думать ещё об эстетике и динамике. Возможно вы не часто слышали эти термины в применении к играм. Если вкратце, то механика — это какое-то взаимодействие пользователя с игровым миром. Кнопка, которую может нажать пользователь, чтобы открыть дверь, это одна механика. Ящики, которые тоже могут нажимать кнопки — другая. Механики взаимодействуют друг с другом и создают динамику игры. Игрок нашёл ящик, дотащил до кнопки, открыл дверь, перешёл на другой уровень. Эстетика — это ощущение от игры. Бывало ли у вас в какой-нибудь стрелялке чувство, что вы действительно нажимаете курок? Приятная отдача, анимация, звук — всё это влияет на эстетику стрельбы. На эстетику игры в целом влияет множество факторов, от скорости загрузки до сюжета. Кропотливая работа над эстетикой отличает игры-однодневки от игр, которые помнят.

Посмотрим на наше творение. Самая часто используемая механика — передвижение. Давайте внимательно посмотрим всё ли у неё в порядке. Открываем код.

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

А можно это не исправлять. Особенности игрового движка тоже могут быть частью эстетики. Quake 3 без распрыжек был бы совсем другим. Именно знание тонкостей механики отличает новичков от летающих демонов-убийц профессиональных игроков. Но тонкости не должны вредить удобству, именно поэтому мы ранее поменяли Drag у Rigidbody игрока на четвёрку. Такое трение заставляет колобка останавливаться быстро, но не сразу. А большое ускорение даёт чувство контроля. В идеале, старт тоже должен происходить не сразу, это пригодилось бы для точных манёвров. Эти маленькие детали механики влияют на общую эстетику.

Вглядываемся сильнее и замечаем, что… Видите? Нет? Скомпилируйте проект и поставьте настройки на минимум. Здорово колобок летает, правда? Да так шустро, что пролетает коллайдеры насквозь. Это всё из-за функции Update в скрипте управления, которая выполняется в каждом кадре. Если игра ускоряется в два раза, то и все силы прикладываются в два раза чаще. Для решения этой проблемы можно просто поменять Update на FixedUpdate, который не зависит от частоты кадров, а обноляется по таймеру. Если бы для движения использовался не Rigidbody, а Transform, то проще было бы отвязать перемещение от FPS с помощью Time.deltaTime.

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

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

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

Заключение

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

Источник

GameDev.Unity3d.Урок 10.Двери

Найдены возможные дубликаты

С нетерпением жду каждый новый урок. Спасибо автору!

Блин слегка бесит что такие посты игнорируют такое ощущение что мало кто хочет развиваться.

Ответ на пост «Бесплатно помогаю пикабушникам учить программирование, часть 15: «Еще один пост о собеседованиях»»

Привет, вот настала и моя очередь благодарить @prodigal.son 🙂

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

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

Английский с нуля. Не скрываем боль. Урок 51 из 60

Как спросить “Что у вас болит”? Как ответить где болит, учитывая характер боли. Переносный смысл слов ache, pain. Пройдем фразу to cross one’s mind.

Видео взяты из мобильного приложения Английский с Анной, в нем в дополнение к теории есть еще много практических упражнений.

Читайте также:  дверь входная 1200 проем

P.S. Я стараюсь улучшить качество подачи материала, сам материал, примеры в приложении. Спасибо, что поддерживаете плюсами и учитесь по моим урокам)

Английский с нуля. Интересно в начале предложения. Урок 50 из 60

Видео взяты из приложения Английский с Анной (в каждом уроке слова, задание на устный перевод, письменный перевод).

P.S. Я читаю все ваши комментарии и радуюсь каждому плюсу. Нас уже 3945 человек, кто проходит весь курс целиком, спасибо. Для учителя нет лучше награды, чем успех учеников.

Школьники из Нижнего Новгорода стали лучшими в 3D-моделировании и программировании

Юные нижегородцы лучшие в 3D-моделировании и программировании в России: команда FullStack из Нижнего Новгорода стала абсолютным лидером отборочного этапа IV всероссийского хакатона👨‍💻

Кто такая Элис?

Красиво одевается, красиво говорит.

Появилась она во времена IRC и развитого в том направлении ботов. Сам по себе, протокол IRC был довольно прост: все команды и взаимодействия с пользователями/сервисами проходили по открытому протоколу, без шифрования, что существенно облегчало как сам парсинг чатов, так и взаимодействие с серверами в целом.

Что делали тогда боты? Да много чего, по командам: рассказывали о погоде, анекдоты, без устали следили за порядком на каналах (мат и флуд), были и игровые боты (викторины, мафия). Ну и конечно же, разговаривающие боты.

Так как я уже интересовался тогда Линуксами и ботами, то решил разобраться, как это все работает. В большинстве случаев, использовали ядро eggdrop, написанное на Си, специально под IRC. Остальная «начинка» вешалась в виде модулей и скриптов на TCL.

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

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

Когда думал над именем, принял решение подобрать такое, чтобы коротко и звучало. И вот, играю как-то в Need For Speed 3, выбираю тачки и проскакивает Lotus Elise.. решено!

В основе ядра был функционал работы протоколом IRC и с базой данных на FireBird (компонент просто был сразу в коробке Delphi), остальное навешивалось в виде dll-модулей и подгружалось при старте ядра.

Первым делом, нужно было решить, как собирать разговорную базу. Сначала Элис реагировала только на прямое обращение и приваты. Первым режимом был закос под дурочку (отвечала просто рандомными фразами и запоминала то, что пишет собеседник), пока без обучения.

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

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

— Я вчера смотрел матч между Канадой и Россией. Любишь хоккей? (тут у нас явно идет речь о спорте по ключевым словам: матч, хоккей. но есть еще и упоминание стран). В данном случае, Элис имела рандомный выбор: говорить дальше о спорте или о путишествиях например.

— Люблю прыжки в длинну / Я ездила в Турцию, кофе там пила

Вообще, выбора у нее было значительно больше, чем просто отвечать по теме:

— Продолжить разговор по выбранной теме

— Задать вопрос, ответ на который еще нет в базе (из таблицы, куда складывались фразы, в которых не были обнаружены ключевые слова).. чтобы узнать ответ 🙂

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

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

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

Как только собеседник обращался к Элис, она проверяла его по свое базе, знает ли она его уже и какого «оно» пола )) и уже дальше общалась в соответствующем ключе. В качестве идентификатора собеседника, выступал ident@host, без привязки к нику.

Так же, базу фраз пришлось значительно переделать, т.к. одна и та же фраза не могла звучать одинаково для обоих полов. Потому, пришлось сделать что-то вроде триггера-разделителя в фразах, встречая которые, Элис делала выбор в зависимости от пола собеседника:

— Ты ходил|ходила на концерт БИ-2 вчера?

(символ | означал, что первое слово предназначено для м, второе для ж)

Возвращаемся к ключевым словам: добавляем «вес настроения» на определенные фразы.

Добавляем к базе собеседников два параметра: долгосрочное отношение и короткосрочное. Это я подчерпнул из СИМСов )) Короткосрочное влияет на то, хочет ли Элис прямо сейчас с тобой общаться.

Баллы только списываются. Начисляются по 20 в час на короткосрочное и на 2 балла в сутки на долгосрочное.

То есть, если ты будешь постоянно ее оскорблять, она просто перестанет с тобой общаться.

Добавлен модуль, примерно раз в 3 дня поднимал список каналов и рандомной выбирал 10 каналов с +30 юзеров, затем, один из них. Даже я не знал заранее, куда она «решит» зайти )

Когда всевозможные ключевые слова были забиты в базу, фразы почти сами раскладывались по категориям, я уже практически «забил» на мониторинг. Изредка подглядывал за тем, что люди далеко не всегда понимали, что общались с.. ботом..

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

Потом RusNet (IRC) наверное изжил себя.. сначала я ушел, а потом и Элис года через 2 выключил навсегда.

Посвящается памяти EliseAI, более известной, как просто Elise (RusNet).. она же Лиска..

PS. Наверное слишком ужато получилось. о многих моментах, особенно технических, умолчал. можно в комментах еще обсудить.

Бесплатно помогаю пикабушникам учить программирование, часть 15: «Еще один пост о собеседованиях»

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

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

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

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

1. Ярко выраженная авторитарность.

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

2. Негативные отзывы сотрудников.

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

3. Нежелание представителей компании отвечать на вопросы о внутреннем устройстве во время собеседования.

4. Откровенное вранье.

У нас перспективная команда и проекты с узнаваемым именем, поэтому мы платим на n процентов ниже рынка

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

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

P.S. Завтра будет 15 месяцев, с момента как я этим занимаюсь. Все идет очень хорошо. Чатик канала живой, добавил в модераторы несколько опытных разработчиков. Теперь мы вместе помогаем новичкам расти.

Уроки Ардуино. Прерывания таймера

В этом уроке расскажу для чего нужны прерывания таймера и как ими пользоваться.

Большой урок по цифровой фильтрации данных

В уроке разобраны самые простые и популярные цифровые фильтры данных применительно к C++ и Ардуино:

— Линеаризация наименьшими квадратами

Фильтры протестированы на синтетическом «шумном» сигнале

Обучение Unreal Engine 4 | RTX ON. Часть 1. Введение, Глобальное освещение, Ambient Occlusion

Сегодня запустил новую серию уроков по Unreal Engine 4 под название RTX ON!

В вводном уроке по по трассировки лучей на Unreal Engine 4 мы изучим применение рейтрейсинга, узнаем как включить его на движке и рассмотрим применение глобального освещение с каждым типом источника света.

Под конец поглядим как работает трассировка Ambient Occlusion.

Ответ на пост «Как автоматизировать однотипную, монотонную работу бесплатно и без навыков программирования»

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

Но запустить можно где и под Linux и даже под MacOS

Читайте также:  арендовать 1 комнатную квартиру

Мамина школа

Взрослая бенгальская кошка учит котенка открывать двери.

Ответ на пост «Эх, образование, куда ты котишься?»

Не совсем ответ на пост, скорее на ветку комментариев о высших учебных заведениях.

Немного нытья о том, что раньше было лучше.

Мой факультет (не буду обобщать про ВУЗ) считается одним из ведущих в городе (скорее даже, в области, если не в ЮФО). Обычно говорят, что если человек учится на мехмате ЮФУ, то у него личной жизни, работы и любых человеческих благ быть не должно: человек науки всё-таки.

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

Реальность же такова, что над этими словами остаётся смеяться. Может, раньше люди здесь действительно учились, теперь здесь по большей части отдыхают. И если мои одногруппники и товарищи по идеям отдыхают от сессии до сессии, а на сессии всё-таки что-то делают, то многоуважаемые студенты из ближнего зарубежья, коих пришло целых 2 группы (порядком 40-50 человек для набора 300 человек/год), ведут себя, как истинные дети Чингисхана.

Были даже товарищи, которые кочевали между двумя профилями: огребли на сессии чистой математики, перевелись на математику-информатику, снова чистые.

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

Не знаю, как дела в ростовском меде, но если там тоже можно пройти пять лет бакалавриата, не выучив ни слова, то в Ростове больше не где взять выпуск специалистов, разве что «специалистов».

Эх, образование, куда ты котишься?

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

Хотите петь, аки Магомаев?

(Для занятий достаточно телефона\планшета и немного свободного пространства)

Я не шучу, серьезно. Это доступно каждому.

Просто кто-то поет от рождения, а кому то нужно сильно постараться, как мне, например.

Но когда нам это мешало? Я пою вот уже 22 года и не собираюсь останавливаться.

Моя дорожка привела меня в Италию, где я пою в Болонском театре, оном из лучших в Италии.

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

↓↓↓ Все ссылки на предыдущие полезнейшие статьи вы найдете в конце поста ↓↓↓

Итак, в своих статьях здесь, и в видео на Ютубе я подробно разобрал, как готовить тело

и дух к пению. Уделите моим стараниям немного времени, и голос скажет вам спасибо.

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

Как я уже написал, вам вовсе не нужно быть счастливым обладателем фортепиано, рояля или других муз. инструментов. Просто скачайте фортепианную клавиатуру на телефон, например вот эту https://play.google.com/store/apps/details?id=umito.android.

и положите телефон рядом с собой.

Начинаем занятие с разминки мышц, подробная инструкция вот тут:

Почему я написал про Магомаева? Нет, не ради рекламы.

Что такое резонатор?

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

«звенит» и усиливается

Окей, ну пусто у нас в голове где-то, дальше то что?

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

1. Расслабляемся. Легко поглаживаем шею и лицо, чтобы все было свободно. Покрутите шеей.

2. Встаем в УГОЛ. Ага, как в детстве, за то, что вы не знаете о резонаторах.

(Шучу, угол поможет нам их отыскать)

3. Представляем себя бычком на лугу. Таким здоровенным и тупым. Готовимся замычать.

4. Мычим. Спонтанно и громко, чтобы слышно было аж в соседней деревне.

5. Берем в руки телефон с клавиатурой и ищем ноту, на которой мы «замычали».

(Эта нота нашего спонтанного мычания будет отправной точкой для дальнейших распевок)

6. Играем нотку на полтона выше, продолжаем мычать в УГОЛ.

7. Ищем положение головы и приемы пения, при которых у нас в голове, а самое главное,

8. Прогоняем себя по 3-5 ноткам, на которых протяжно и самозабвенно мычим. Ноты должны быть ближайшими к той, что мы нашли вначале.

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

Вот примерно теми местами, куда одеваются Венецианские карнавальные маски.

Некоторые педагоги говорят «петь глазами». Смысл в том, что резонаторы, находящиеся

рядом с глазами, вибрируют и зудят, создавая ощущения полета звука «из глаз».

— УГОЛ нам дает дополнительный отзвук, заставляющий резонаторы вибрировать еще сильнее, нам это будет отличное подспорье на первых порах.

(или будете тормозить на месте, вместо учебы пению)

(В моем видео подробно и наглядно показано, как это должно получиться)

2. Жмем нашу «удобную» ноту, которую мы нашли на упражнении с бычком

3. Вытягиваем губы и начинаем делать «бррр» на этой самой ноте.

4. Ловим вибрации и отзвук от стены

Отлично! Я уверен, у вас неплохо получается)

Эти упражнения делают даже профессионалы. Не думайте, что это бред какой то.

ДЛЯ ПРОДВИНУТЫХ ПОЛЬЗОВАТЕЛЕЙ

Лайвхак очень годный, поэтому не жопьте лайк на Ютубе, для вас же стараюсь.

— Многие певцы, как начинающие, так и маститые профессионалы, имеют тенденцию

пения в нос. Слушать это противно, не делайте так.

— Не делайте КАК?? А вот так. При разговоре плотно зажмите нос. Ужасно, правда?

Вот так некоторые и поют на сцене.

— Как избавиться? При пении трели губами затыкаем нос, плотно. И стараемся, чтобы нос при пении не вибрировал. Особенно там, где пальцами держите ноздри.

— То есть парадокс такой себе. Поете «в лицо», «в переносицу», «в глаза», а нос среди них

— Следите, чтобы струя дыхания была непрерывна и напориста, когда поете.

— Не пойте слишком ГРОМКО. Старайтесь дать громкости за счет правильного отзвука и звона.

— Расслабьтесь. Все мы с чего то начинали.

— Не получается? Возьмите паузу, подышите спокойно.

— Экспериментируйте со звуком. Не повторяйте одно и то же по 150 раз. Ищите звук

С самыми базовыми упражнениями разобрались, на следующем уроке пойдем дальше!

1. Как подготовить тело к занятиям:

Ответ на пост «Когда попытался исправить провалы в образовании. »

Раз уж речь зашла о программировании, хотел бы поделиться ссылкой на канал Наташи Самойленко. Кто хоть приблизительно знаком с курсом для сетевых инженеров СДСМ (сети для самых маленьких), обязательно должен был про нее слышать. Наташа в прошлом преподаватель курсов Cisco, с некоторых пор стала вести курс «Python для сетевых инженеров». Хоть курс и рассчитан на определенную аудиторию слушателей, но подача материала очень подробна, и сетевая тематика присутствует в качестве примеров, т.е. обычный юзер при желании сможет осилить. Очень много практики, а также полезных модулей. Набор видео на канале уже вышел за рамки ООП, но последовательный просмотр с первых лекций позволит учить язык с нуля.

Ответ на пост «Когда попытался исправить провалы в образовании. »

Добавлю и я свои пять копеек в образование. Есть замечательный канал преподавателя информатики и программирования Тимофея Хирьянова, который ведёт лекции и обучению по С++ и Python. Порекомендую поучиться у него многим преподавателем данного направления.

Ответ ITslesar в «Когда попытался исправить провалы в образовании. »

Учительница прекрасно и доступно объясняет химию.Ссылка на канал:

Захотел переучиться на 1с с системного администрирования (поднадоело за много лет), где-то увидел рекламу, посмотрел чудные промо ролики, пару интенсивов, которые напичканы рекламой по самую макушку. Ну ладно, созвонился с менеджером, поговорил, наобещали и общение с преподавателем и супер обучение, разговор был был заманчивый. Предложили какую-то неплохую скидку, рассрочку (ага, кредит). Ладно, согласился, все же хорошо, чего бояться? Презентация Skillboxa (видео, разговоры) были такими заманчивыми, что я уже побежал к банкомату, чтобы побыстрее избавиться от честно заработанных (сейчас сижу и думаю, м-да, пропить надо было, или акций Tesla купить, а они, кстати, с сентября на 70% выросли ). Поехали дальше, деньги отданы, 1с установлена, ноутбук настроен, готов слушать и вникать в супер-профессионалов своего дела (пффф). Первые 3 темы зашли очень хорошо, Дмитрий Барабаш молодец, к нему претензий 0. Потом, стало веселее, по какой-то причине меняется преподаватель и начинается.

— Механизмы интеграции
— Составление ТЗ в терминах 1С
— Доработка конфигураций 1С
— Командная разработка

Написал им претензию на возврат средств за некачественно предоставленную услугу, посмотрим, что из этого выйдет. Сегодня с утра позвонили и предложили на 50% от стоимости учебы предоставить мне доступ к их курсам. Ну, вы понимаете, да? Мне их учеба не понравилась, а они предлагают насыпать еще немного учебы.

Небольшой update: сказали, что много кому курс понравился, поэтому он хороший и я не прав. Вот так.

Еще update: всего 20 тем (с ДЗ 18, остальные административные), менеджер сегодня сказала, что я мог бы написать претензию по возврату денег, например, пройдя 18 тем, или 17, но не 20. Если я прошел 20, то закончил обучение ) хотя, я уже темы с 7-8 писал им свои претензии по обучению.

Последний на сегодня update: Отправил им письмо, где поблагодарил их за то, что сподвигли написать пост на Пикабу и за то, что я стал известным (ага, известным )), вот что пришло в ответ, опять одно и тоже, ни одного конструктивного предложения:

Источник

Обучающий онлайн портал