Руководство Unity
1) Вам нужно почитать статью
Unity3D Best Practices
(не запрашивайте объекты при каждом нажатии/кадре, кэшируйте их в полях класса; двигать объект с rigidbody нужно только в FixedUpdate и т.д.)
1.1) Что бы кэшировать элементы текущего объекта используйте Awaik() { ... }. Что бы обратиться к другим объектам используйте Start() { ... /* другие объекты уже будут созданы, поэтому вы их тут точно найдете */ }.
2) Что бы персонаж шел постоянно при зажатой кнопке, сделайте флаг (true/false). Нажали кнопку, через Event Trigger вызвали событие PointerDown (или любое другое в своем скрипте, все на ваше усмотрение), в нем флаг выставили в true, в FixedUpdate у нас условие if ( this._move ) { ... } персонаж пошел. Отжали кнопку PointerUp, флаг выставили в false, персонаж перестал идти. Вся суть в том что движение происходит только в FixedUpdate, вам нужно только переключать флаг включен или выключен из других методов/метода. На кнопку можно навесить любой скрипт и вызвать из него открытый метод.
3) По анимации не понял. Для состояния вкл/выкл лучше использовать bool, SetBool вроде, и это значит что значение нужно задавать в коде самому, оно не вернется в false пока вы сами этого не пожелаете (для таких целей используется триггер).
Пройдите бесплатный курс на MVA по разработке
2D и 3D игр.
Многие вещи я и сам регулярно забываю, приходится перечитывать постоянно т.к. использую редко.
Если вы серьезно решили заняться разработкой игр и вообще программированием то нужно учить English и еще один из популярных для развития мышления,
https://www.busuu.com/enc/ бесплатно.
90% всех вопросов уже решены, нужно только уметь искать. Раньше тратил на это кучу времени, теперь относительно быстро решаются даже сложные вопросы.