Jump to content

Движение по WorldSplineGraph


photo

Recommended Posts

Posted

Я хочу сделать движение объекта по сплайну, созданному в едиторе. 

Сейчас у меня есть код, который работает, но только с SplineGraph, созданного с помощью кода. Но я хочу не писать сплайн вручную, а брать тот, что создан в едиторе. Сейчас я пытаюсь получить его точки, но выдает ошибку, что коллекция только для чтения.

public SplinePoint[] points;
...
totalPoints = splineGraph.NumSplinePoints;
points = new SplinePoint[totalPoints];
splineGraph.GetSplinePoints(points);
Posted

Создаёшь сплайн и сохраняешь его где-то в data

image.thumb.png.51b55ae75a79729b09409f1864c2d4c4.png

На дочернюю ноду-пустышку как показано на скрине...

image.thumb.png.ef7816a82d55cde28badb3e5a0f38e67.png  

...кидаешь скрипт rat_spline :

using Unigine;

[Component(PropertyGuid = "здесь что-то твоё")]
public class rat_spline : Component
{
    public float Speed;
    public SplineGraph Spline;
    public string Path_spline;
    vec3 _trans_start;
    float time;

    void Init()
    {
        Spline = new SplineGraph();
        Spline.Load(Path_spline);
        _trans_start = new vec3(node.WorldPosition.x, node.WorldPosition.y, node.WorldPosition.z);
    }
    void Move_rat()
    {
        time += Game.IFps * Speed;
        float t = time - MathLib.Floor(time / Spline.NumSegments) * Spline.NumSegments;//
        int segment_id = (int)t;
        t -= (float)segment_id;

        vec3 p = new vec3(Spline.CalcSegmentPoint(segment_id, t));
        vec3 direction = Spline.CalcSegmentTangent(segment_id, t);
        vec3 up = Spline.CalcSegmentUpVector(segment_id, t);

        node.WorldPosition = p + _trans_start;
        node.SetWorldDirection(direction, up);
    }
    void Update()
    {
        Move_rat();
    }
}

//--------------------------------------------------------------

В редакторе прописываешь скорость и путь к сплайну в папке data, как показано на примере

К пустышке дочкой кидаешь свою ноду которую хочешь двигать по сплайну. 

Это я пример привёл как крысы и другая живность перемещаются в моей игре. 

Успехов!

 

 

  • Like 2
×
×
  • Create New...