Подскажите почему так может происходить.
При старте сцены объект guard перемещается на 0.0833333 выше изначальной координаты по оси Y.
Никакой силы к нему не прикладывается в этом направлении, только по другим осям. Изначально объект не находится внутри другого объекта, т.е. его не выплёвывает каким-то образом.
Из-за этого не работает условие, когда один объект (transform.position достигает положения player.position) и это никак не происходит, потому что два объект перемещаются в двух разных плоскостях.
if (Vector3.Distance (transform.position, playerPos) == 0)