移動先の値をローカルのものにすればいいとは分かるものの

昨日の午後はUnityという3Dゲーム制作のソフトウェアをいじっていたのですが、三人称視点と一人称視点を切り替える仕組みを作っていました。
そこで困ったのはキャラクターを回転させていない時は普通に三人称から一人称、そして三人称に普通に切り替えられるのに、キャラクターの向きをかえると一人称から三人称に戻した時に元の位置に戻れせずおかしな位置に行ってしまいます。
そのおかしな位置というのは常に一定のようだったので、おそらく位置を指定する値がグローバルなものになっており、それをローカルにしないといけないのだろうと察しがつくものの、それをどうやってやるのか悩み、色々試したり検索して記事を読んだりしました。
その結果、localPositionを使ったり、Vector3.SmoothDampの移動先を書き直したりしてようやくまともになります。
実際にスクリプトを書き直した部分は大したことがないのですが、それにたどりつくまでが一苦労でゲーム作りは大変だと改めて思いました。http://www.fndg.co/mobit/okane.html