Движение объектов, передвижение к назначенной точке. День первый.

Сегодня реализовал движение объектов и увеличение их в 2 раза при достижении цели

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

public class MoveScript : MonoBehaviour {

    public Transform EndPoint;
    public float Speed;
    Vector3 _newSize;   



     void Start () {
       _newSize = new Vector3(transform.localScale.x * 2, transform.localScale.y * 2, transform.localScale.z * 2);

    }    



  void Update () {
        transform.position = Vector3.MoveTowards(transform.position,EndPoint.position,Time.deltaTime * Speed);

        if (Vector3.Distance(transform.position, EndPoint.position) < 0.1f)
        {
            
            transform.localScale = Vector3.MoveTowards(transform.localScale, _newSize, Time.deltaTime * Speed);
            Destroy(gameObject, 2.0f);
        }
        else {
            transform.position = Vector3.MoveTowards(transform.position, EndPoint.position, Time.deltaTime * Speed);

        }
    }
}

 

Ключевые моменты

_newSize = new Vector3(transform.localScale.x * 2, transform.localScale.y * 2, transform.localScale.z * 2);

Создали переменную и сразу в ней получаем параметры объекта, к которому мы подключили наш скрипт + увеличиваем эти параметры на 2 и присваиваем в переменную

 

 

transform.position = Vector3.MoveTowards(transform.position,EndPoint.position,Time.deltaTime * Speed);

transform.positionОпределяет положение, поворот и масштаб нашего объекта на сцене

Vector3.MoveTowards перемещает его к точки цели..

transform.position Текущая позиция

EndPoint.position  Конечная позиция

Time.deltaTime * Speed Время между обновлениями и скорость.

 

 

if (Vector3.Distance(transform.position, EndPoint.position) < 0.1f)

Если Дистанция первой позиции и второй меньше 0.1F

 

то выполняем 

 

transform.localScale = Vector3.MoveTowards(transform.localScale, _newSize, Time.deltaTime * Speed);

transform.localScale Масштаб преобразования относительно родителя

transform.localScale Текущий размер

_newSize Размер *2 (мы его в самом начале задали)

Time.deltaTime * Speed  Время, за которое будел это сделано преобразование

 

Destroy(gameObject, 2.0f);

Удаляем объект после его увеличения за 2 секунды (не моментально) (текущий объект, на котором висит наш скрипт)

 

 

else { transform.position = Vector3.MoveTowards(transform.position, EndPoint.position, Time.deltaTime * Speed);

Или продолжаем движение.

 

 

p/s Скорость  Speed мы задаем вручную в Unity


Добавить комментарий