Надо подобрать значение, что бы был не "телепорт". А из школьного курса должно быть известно, чем больше масса объекта, тем больше ускорение свободного падания.
Выделение происходит по рендерингу, если ни чего не отобразилось, то и выделять нечего. То что там где-то в одной из переменных лежит меш, не даёт ни как правил, где на экране он типа должен быть.
If you use IsPointerOverGameObject() without a parameter, it points to the "left mouse button" (pointerId = -1); therefore when you use IsPointerOverGameObject for touch, you should consider passing a pointerId to it.
Если у тебя dll это .NET сборка, то ставишь там "для любых платформ". Если же это нативная библиотека, то нужно её собирать под каждую платформу отдельно. Для андроид для этого есть NDK.