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

Объявление

public void AddPositions(Vector3[] positions);

public void AddPositions(out NativeArray positions);

public void AddPositions(out NativeSlice positions);

Параметры

positions Позиции для добавления в трейл.

Описание

Добавить массив позиций в трейл.

Все точки внутри TrailRenderer сохраняют временную метку, когда они создаются. Это вместе со свойством TrailRenderer.time используется для определения того, когда они будут удалены. Чтобы следы исчезали плавно, каждая позиция должна иметь уникальную возрастающую отметку времени. Когда координаты предоставляются из сценария, а текущее время одинаково для нескольких точек, метки времени положения настраиваются таким образом, чтобы плавно интерполироваться между меткой времени самой новой существующей точки в следе и текущим временем.

using UnityEngine; using System.Collections; using System.Collections.Generic; public class ExampleClass : MonoBehaviour { public int numExtraPositions = 0; public float speed = 20.0f; public float radius = 4.0f; private TrailRenderer tr; void Start() { tr = GetComponent<TrailRenderer>(); tr.material = new Material(Shader.Find("Sprites/Default")); tr.time = 0.2f; tr.widthMultiplier = 0.3f; } void Update() { float time = Time.time; tr.transform.position = CalculatePosition(time); if (numExtraPositions > 0) { float prevTime = time - Time.deltaTime; List<Vector3> extraPositions = new List<Vector3>(numExtraPositions); for (int i = 0; i < numExtraPositions; i++) { float percentage = (float)(i + 1) / (numExtraPositions + 1); float blendedTime = Mathf.LerpUnclamped(prevTime, time, percentage); extraPositions.Add(CalculatePosition(blendedTime)); } tr.AddPositions(extraPositions.ToArray()); } } void OnGUI() { GUI.Label(new Rect(25, 20, 200, 30), "Extra Positions"); numExtraPositions = (int)GUI.HorizontalSlider(new Rect(165, 25, 200, 30), (float)numExtraPositions, 0, 5); } private Vector3 CalculatePosition(float time) { return new Vector3(Mathf.Sin(time * speed) * radius, Mathf.Cos(time * speed) * radius, 0.0f); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3