@Kote23

Где ошибка в скрипте?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class airPatrol : MonoBehaviour
{
    public Transform point1;
    public Transform point2;
    public float speed = 2f;

    // Start is called before the first frame update
    void Start()
    {
        gameObject.transform.position = new Vector3(point1.position.x, point1.position.y, transform.position.z);
    }

    // Update is called once per frame
    void Update()
    {
        transform.position = Vector3.MoveTowards(transform.position, point1.position, speed * Time.deltaTime);

        if (transform.position == point1.position)
        {
            Transform t = point1;
            point1 = point2;
            point2 = t;
        }
    }
}
Данный скрипт по идее заставляет совершать airPatrol, но почему-то проходя точку 2, ничего не происходит. Все метки child точек расставлены верно, но объект все равно улетает. В чем проблема?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 2
GavriKos
@GavriKos
Нельзя вот просто так взять, и сравнить две позиции через ==. Они никогда не будут равны.
Ответ написан
firedragon
@firedragon
Senior .NET developer
Держите ссылку на мануал, Float во всех языках сравнивается не напрямую на равенство.
https://docs.unity3d.com/ScriptReference/Mathf.Eps...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы