Всем привет. Есть скрипт движения по точкам. Все движется, но не так как надо. При координате объекта (Y = 1.284865) и такой же самой координате у точки объект всеравно продолжает менять свой Y. А в конце движения объект вообще поднимается примерно в 2 раза выше исходной координаты. По идее скорость по оси Y должна равнятся 0, но получается что это не так.

using UnityEngine;
using System.Collections;
public class WaypointMove : MonoBehaviour
{
public float speed_move = 2f;
public int points_count;
private Transform _thisTransform;
public Transform waypoint_0;
public Transform waypoint_1;
Transform[] waypoints = new Transform[2];
private int i = 0;
private float distance;
private float target_x;
private float target_y;
private float target_z;
private float speed_x;
private float speed_y;
private float speed_z;
void Start()
{
_thisTransform = transform;
waypoints[0] = waypoint_0;
waypoints[1] = waypoint_1;
}
void Update()
{
target_x = all_Points[i].position.x;
target_y = all_Points[i].position.y;
target_z = all_Points[i].position.z;
distance = Mathf.Sqrt((Mathf.Pow(_thisTransform.position.x - target_x, 2))-(Mathf.Pow(_thisTransform.position.y - target_y, 2))-(Mathf.Pow(_thisTransform.position.z - target_z, 2)));
speed_x = ((target_x - _thisTransform.position.x)/distance)*speed_move;
speed_y = ((target_y - _thisTransform.position.y)/distance)*speed_move;
speed_z = ((target_z - _thisTransform.position.z)/distance)*speed_move;
transform.Translate(speed_x*Time.fixedTime, speed_y*Time.fixedTime, speed_z*Time.fixedTime);
if (distance < 0.1)
{
if (i < points_count)
{
i++;
}
else
{
speed_move = 0;
}
}
}
}