Ну самая большая проблема - фреймрейта IP камеры может быть недостаточно. Выяснить можно наверное только экспериментальным путем. Плюс немного смущает то, что камера может постоянно терять/ловить фокус (грубо говоря на объект сфокусировалась - внезапно объект проехал дальше - фокусируется на фон - и тут новый объект приехал). В остальном - ИМХО нормальная идея, почему бы и нет.
Как разрешить приложению доступ к этим веткам реестра?
Это решает не программист, а политики безопасности конкретного компа.
Обязательно ли для этого применять к приложению права администратора? (и если да - то как избавится от окна безопасности при каждом запуске приложения)
Необязательно - опять таки см. политики безопасности. Вы никак не избавитесь от окна безопасности со стороны приложения. Только со стороны конкретного компа.
Раз вы задаете такой вопрос - значит вы не свободно владеете этими языками.
Это означает что при написании любой задачи у вас не будет возникать вопроса "как реализовать это на этом ЯП". Если проводить аналогию с иностранными языками - вы сможете любую возникшую в вашей голове мысль сказать на иностранном языке. Суть свободного владения - при разработке язык разработки вас не тормозит. Тормозят сложности алгоритмов, структуры проекта или чего то подобного.
Откройте для себя VisualAssist/ReSharper. Крайне полезные вещи для ускорения. Учите горячие клавиши, в т.ч. и стандартные студийные. Расположите окна оптимально.
Ну а чтобы советовать что то более конкретное - нужно знать что конкретно у вас медленно происходит.
Региональные настройки компа какие? Вообще в собранном приложении эксепшны будут на языке локальных настроек (по крайней мере должны быть), но:
1) Не факт что поддерживается русский
2) Зачем оно надо - на английском самые информативные сообщения.
У вас немного некорректно поставлен вопрос. VisaulStudio - это просто меганавороченный блокнот. Ей все равно, пишете вы игру, сервер, веб-приложение или еще что то, лишь бы на знакомом ей языке. По сути ваш вопрос должен был звучать как "можно ли создать игру только средствами c#". Ответ - можно, но долго и непроизводительно. Если жесткое ограничение по языку - используйте Unity. Если жесткое ограничение по "не устанавливать ничего кроме IDE (VisualStudio)", то смотрите в сторону c++ оберток над openGL.
Вы можете взять velocity только у конкретно экземпляра класса Rigidbidy2D.
Пример. Есть тип мебели - шкаф. Шкафов - много. Но вам надо взять высоту не всех шкафов в мире, а одного конкретного шкафа. Так и тут. Rigidbody2D может быть много. Но вам нужен конкретный. Поэтому velocity не статический, и есть только у конкретного экземпляра.
Т.е. вам надо у вашего монобехейвиора найти Rigidbody2d, и у него брать велосити.
Например, так:
Rigidbody2D rigidbody = this.gameobject.GetComponent();
Vector2 velocity = rigidbody.velocity;
Это просто пример. Надо не забыть проверить на null, не делать GetComponent в апдейте. Можно вообще в инспекторе в объект положить его же Rigidbody...
На любом языке это называется keyboard hook. WinAPI вам тут тоже не нужно - тот же .NET замечательно в трей прячет форму и вполне себе поддерживает keyboard hook. Гугл в помощь )