そうですね…正直言うと無駄に複雑になっていると思います
PとAとの間の話なのにGameInstanceが絡んできているところが特に…
まず複数掴んでしまう原因から考えましょう
AはPが近くにあり、掴む状態に入っていたらくっつく、という挙動になっています
が、 Pが別のAを掴んでいる、という情報は一切見ていません
ですので、各々掴まれてるのは自分だと思い込み、各々の判断で勝手についてきているわけですね
逆にPから見ると、Pは掴む状態にこそなるものの、 今何を掴んでいるのか把握していません
掴む動作さえすれば、あとはAが勝手についてくる状態になっているわけです
勝手についてくるので、掴む数をコントロールするどころではありませんね
ですので、Pの掴む数をコントロールしたいのであれば、まずPがどのAを掴んでいるのかを明確化する必要があります
なお謎の第三者(GameInstance)はAとPの間を取り持っているふうに見えますが…いちいち第三者を通してやり取りするのは無駄なように見えますね
僕ならどうするか?という一例を貼っておきます
P側に当たるBPです
掴んだActorを変数に持ち、PがどのAを掴んでいるのか把握できるようにしています
Attachするなら移動処理は不要になりますが、元の構成に合わせてあります
A側には処理は書きません
Aが自分で動くこと、が重要なのであれば、移動処理はA側に書き、P側は掴んでいるものに対して移動を許可する形にすると良いでしょう
なおGameInstanceは不要です