Wpis z mikrobloga

Pracując nad moim pluginem podstawowych ruchów platformówek 2D dodałem obsługę customowych eventów. Zamysł jest taki, żeby w łatwy i szybki sposób móc podpiąć do ruchu dodatkową akcję, która wykona się w odpowiednim momencie. Chciałem by było to proste w obsłudze dla osób nieprogramistycznych (np. dla designera, lub żeby dźwiękowiec mógł sobie jakiś hałas podpiąć).

GIF

Taki system ma rację bytu? Dodalibyście jakieś opcje?

Postęp prac (wolny, ale zawsze) będę przedstawiał na twitterze, więc jak ktoś jest zainteresowany, to zapraszam bardzo:

Twitterek

#gamedev #unity3d #unity
  • 15
@bratek91: chodzi o to czy można iterować symulację po wybranym timestampie, tak że jedni zastosują stałe deltatime, a drudzy jak będą chcieli to zmienne bazujące na upływie czasu.
@gozdaGB animationEvents używane są właśnie w animacjach, natomiast mój plugin ma pozwalać na szybkie układanie ruchów na scenie, kontrolowanych z poziomu kodu, nie animacji. Ale idea eventów jest podobna: odpalany jest w odpowiednim momencie ruchu.

To jak wyglądają ruchy ułożone przy pomocy systemu możesz zobaczyć tu:

TU
@SirSajko jeśli dobrze rozumiem, to pytasz czy prędkość może być zmienna w czasie. Odpowiedź wtedy brzmiała by: tak. Aktualnie można zadać czas w którym obiekt przebędzie drogę, a to z jaką prędkością będzie się poruszał w danym "procencie" czasu można określić krzywą (na GIFie w inspektorze można trochę zauważyć pole "Ease", które za to odpowiada).
@bratek91: Nie nie. Chodzi o to jak można dysponować krokami symulacji. Trzymaj źródło:

https://gafferongames.com/post/fix_your_timestep/

Załóżmy taki pseudo kod:

Epic2DEngine engine;

engine.addSomeCurvesAndPathsAndOtherData();

var framesPerSecond = 60;
var deltatime_seconds = 1/framesPerSecond;
var deltatime_ms = 1000/framesPerSecond;

runEvery(deltatime_ms, function() { //dba o to by co x ms wykonywała się funkcja, włącznie z akumulacją wywołań w przypadku laga
engine.step(deltatime_seconds);
});

/// a teraz krótki rzut okiem na engine.step:

engine.step = function(dt) {
SomePosition.x = SomeVelocity.x *
@SirSajko ok, teraz łapię :) (ciekawy artykuł, dzięki)

System oparty jest na fixed timestepie. Założyłem że ruchome obiekty najczęściej będą jakimiś platformami, a więc obiektami fizycznymi, a dla takich zalecana jest stała wartość kroku.
@bratek91: A jeszcze mam pytanie, co do samego systemu pathy.

Da się zadać z góry w jakim czasie ma obiekt przebyć ten odcinek?
jak TAK to:
Czy da się ustawić aby przez cały ten odcinek, obiekt cały czas przyspieszał a i tak dotarł w zadanym czasie?
jak TAK to:
Działa w 3d?
jak NIE to:
czy zadziała w 3d, ale tylko z 2ma punktami czyli prosta linia?
jak TAK to:
Jest