Показать сообщение отдельно
Старый 09.11.2011, 00:35   #1
defz
AnyKey`щик
 
Регистрация: 09.11.2011
Сообщений: 19
Написано 0 полезных сообщений
(для 0 пользователей)
Проблема со скриптом

Всем привет. Есть скрипт движения по точкам. Все движется, но не так как надо. При координате объекта (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;
			}
        }
    }

}
(Offline)
 
Ответить с цитированием