Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Szybkość teleportacji (czasomierza) Pomoc
#1
Cześć, próbowałem zrobić krótki fragment teleportacji i działa dobrze, ale jedyny problem polega na tym, że nie zatrzymuje się na teleportację, jeśli osiągnę znaczącą pozycję teleportacji, teleportuje się tylko do przodu i do przodu. Co robię źle (mam na myśli szybkość teleportacji, dzięki której można teleportować się wolniej, aby ominąć skrypty Anti-Teleport):   publiczny void teleporttimer_Tick (obiekt nadawca, EventArgs e) { // _ timer.Stop (); functions2.TP (); //System.Threading.Thread.Sleep(1000);   }     private void button1_Click (obiekt nadawca, EventArgs e) { if (Teleportspeed.Checked) { _timer = new System.Windows.Forms.Timer (); _timer.Interval = 150; _timer.Tick + = new EventHandler (teleporttimer_Tick); _timer.Start (); //System.Threading.Thread.Sleep(1000); } jeszcze { functions2.TP ();   } }   Mam nadzieję, że możesz mi pomóc ^^   EDIT :: Po prostu sukces, który sprawił, że zadziałało, zrobiłem tylko kolejny buttom z _timer.Stop () i działa, jestem teleportowany. Ale jeśli pójdę w grze i będę leżał (jak martwy) i dostałem 5 sekund później kopnięcie do lobby (bez błędów w grze), jeśli ponownie się zaloguję, jestem tam, gdzie teleportowałem. Czy ten kicktolobby może być naprawiony?
Reply
#2
Aby uzyskać płynne ograniczenie prędkości teleportacji, musisz wykonać funkcję wektorową między tobą a docelową lokalizacją teleportacji i użyć równań parametrycznych. T = 1 przy odległości / limicie prędkości (co daje całkowity czas na ruch), który przesunie Cię prosto prostą linią do celu ze stałą prędkością i zatrzyma się, gdy tam dotrzesz. Wiem, że nie jest to dokładnie to, o co prosiłeś, ale jest o wiele ładniejsze niż przyrostowe TP co X sekundowe IMO. Kod: Timer = GetTickCount (); float delta = Timer - (UINT) StartTime; float t = delta / (float) TotalTeleportTime; if (t> 1) {t = 1; DoTeleport = 0; } localPlayer -> coords -> współrzędne. x = StartPosition. x + t * (EndPosition. x - StartPosition. x); localPlayer -> coords -> współrzędne. z = StartPosition. z + t * (EndPosition, z - StartPosition. z); localPlayer -> coords -> współrzędne. y = StartPosition. y + t * (EndPosition, y - StartPosition, y); localPlayer -> coords -> prędkość. y = 0; gettickcount nie jest dokładny, ale działa dobrze dla tej aplikacji.
Reply
#3
Bardzo dziękuję, próbuję tego jutro, idę teraz spać, thx za pomoc Dobranoc.
Reply
#4
Zacytować: Napisał Douggem Kod: localPlayer -> coords -> prędkość. y = 0; Czy byłbyś tak miły dzieląc przesunięcie dla wektora prędkości? Nie można znaleźć opublikowanego
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)