Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Vector3.MoveTowards

Объявление

public static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);

Параметры

current Позиция, из которой нужно двигаться.
target Позиция, к которой нужно двигаться.
maxDistanceDelta Расстояние для перемещения current за вызов.

Возвращает

Vector3 Новая позиция.

Описание

Вычислить положение между точками, указанными current и target, перемещаясь не дальше, чем на расстояние, указанное maxDistanceDelta.

Используйте элемент MoveTowards, чтобы переместить объект из current позиции в направлении target позиция. Обновляя положение объекта в каждом кадре, используя положение, вычисленное этой функцией, вы можете плавно перемещать его к цели. Управляйте скоростью движения с помощью параметра maxDistanceDelta. Если current положение уже ближе к target, чем maxDistanceDelta , возвращаемое значение равно target; новая позиция не превышает target. Чтобы скорость объекта не зависела от частоты кадров, умножьте значение maxDistanceDelta на Time.deltaTime (или Time.fixedDeltaTime в цикле FixedUpdate).

Обратите внимание: если для параметра maxDistanceDelta задано отрицательное значение, эта функция возвращает позицию в противоположном направлении от target.

using UnityEngine; // Пример Vector3.MoveTowards. // Куб можно перемещать по миру. Он хранится внутри 1 единицы на 1 единицу // пробел xz. Создается небольшой длинный цилиндр, который располагается вдали от центра // блок 1x1. Цилиндр перемещается между двумя точками. Каждый раз, когда цилиндр // позиционированный куб движется к нему. Когда куб достигает цилиндра, цилиндр // перемещается в другое место. Затем куб меняет направление и движется // снова к цилиндру. // // Объект пола создан для вас. // // Чтобы просмотреть этот пример, создайте новый 3D-проект и создайте куб, размещенный в // Происхождение. Создайте Example.cs и измените код скрипта на показанный ниже. // Сохраняем скрипт и добавляем в куб. // // Теперь запустим пример. public class Example : MonoBehaviour { // Adjust the speed for the application. public float speed = 1.0f; // The target (cylinder) position. private Transform target; void Awake() { // Position the cube at the origin. transform.position = new Vector3(0.0f, 0.0f, 0.0f); // Create and position the cylinder. Reduce the size. var cylinder = GameObject.CreatePrimitive(PrimitiveType.Cylinder); cylinder.transform.localScale = new Vector3(0.15f, 1.0f, 0.15f); // Grab cylinder values and place on the target. target = cylinder.transform; target.transform.position = new Vector3(0.8f, 0.0f, 0.8f); // Position the camera. Camera.main.transform.position = new Vector3(0.85f, 1.0f, -3.0f); Camera.main.transform.localEulerAngles = new Vector3(15.0f, -20.0f, -0.5f); // Create and position the floor. GameObject floor = GameObject.CreatePrimitive(PrimitiveType.Plane); floor.transform.position = new Vector3(0.0f, -1.0f, 0.0f); } void Update() { // Move our position a step closer to the target. var step = speed * Time.deltaTime; // calculate distance to move transform.position = Vector3.MoveTowards(transform.position, target.position, step); // Check if the position of the cube and sphere are approximately equal. if (Vector3.Distance(transform.position, target.position) < 0.001f) { // Swap the position of the cylinder. target.position *= -1.0f; } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3