Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Teilen | 
 

 Nötige Jump-Physical errechnen

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 24
Anmeldedatum : 21.12.08

BeitragThema: Nötige Jump-Physical errechnen   Mo Jan 03, 2011 5:39 pm

Wieder mal steht ein Problem vor der Tür. Ein Clonk soll per Script bis zu einem gewissen Punkt springen, unabhängig von seinem momentanen Standort. Allerdings liegt der Punkt ziemlich weit oben(also er soll bis an eine Wand hoch springen und dort dann beginnen zu hangeln) und seine Jump-Physical ist nicht groß genug. Wie kann ich nun errechnen, wie groß sie sein muss, dass er von seinem Standort aus etwa zum Punkt (100/-300 ) springt?
Nach oben Nach unten
Benutzerprofil anzeigen
Gamer
Staatsrat
Staatsrat
avatar

Männlich Alter : 22
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

BeitragThema: Re: Nötige Jump-Physical errechnen   Mo Jan 03, 2011 6:07 pm

Hm.. Müsstest erstmal sowas wie die Parablerfunktion f(x) rausfinden und wie sie in Abhängigkeit von der Jump-Physical steckt also sowas wie f(x)=-x²+??, aber von Mathe hab ich dad eher weniger Ahnung.. Und ob bei Clonks Physicengine Mathematische Formeln helfen, sei auch mal dahingestellt. Das besste wäre, wenn du mal die Sprungfunktion untersuchen würdest, da ist bestimmt i-eine Parabelfunktion drinne.

_________________
Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars

Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Nach oben Nach unten
Benutzerprofil anzeigen http://www.gamer95.npage.de/
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Nötige Jump-Physical errechnen   Mo Jan 03, 2011 6:17 pm

Hier gings um ein ähnliches Problem - besonders leicht ist das nicht^^

Als erstes reichts, sich auf die Jump-Physical und den zu bewältigenden Y-Unterschied zu beschränken. Dann solltest du noch festlegen, wo der Clonk den Punkt erreichen soll - am besten ist es, einfach am Höhepunkt. Das ist am leichtesten, wenn der Punkt über dem Clonk liegt. Liegt er ca auf gleicher Höhe oder tiefer, wirds hackig.
Dann brauchst du noch die Schwerkraft. Ohne Schwerkraft wirds leicht, da springt der Clonk gerade und die Physical kann dir egal sein, nur das Verhältnis von Walk zu Jump muss stimmen.

Also, du errechnest zuerst die Y-Differenz (y).
Die Gravitation sei g.
Die zu suchende Jump-Physical nennen wir j, bzw erstmal errechnen wir die Start-Y-Dir, yd.

Nun muss die Strecke y in f Frames mit der Startgeschwindgkeit yd zurückgelegt werden. Da der Hochpunkt gesucht werden soll (also da, wo der Clonk wieder runterkommt), lässt sich f leicht ausrechnen, nämlich Startgeschwindigkeit / Schwerkraft.

Zwischenbemerkung: Eh... versteht eh keiner.

Der Hochpunkt ist da, wo yd 0 wird.
Nochmal kurz:
g = 2 * GetGravity()
yd: Präzision 1000
Die Funktion, die yd zum Zeitpunkt f beschreibt, wäre yd(f) = yd(0) - f * g. Die Y-Position wäre dann das ganze Zeug aufgeleitet, also y(f) = f * yd(0) - f² * g / 2.

Meine Gedanken... weiß iwie nicht mehr weiter, hab mich irgendwo aufgehängt xD
Jedenfalls: Ist schwer zu berechnen :/

Edit:
Irgendwie komm ich als Parabelfunktion auf
y/(f² - 2f) * (x² - 2x)
Ableitung: y/(f² - 2f) * (2x - 2) << die müsste 0 werden, glaub ich
Vllt hilfts irgendwie weiter xD
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Nötige Jump-Physical errechnen   Di Jan 04, 2011 5:33 pm

So, ich glaub, ich habs. Funktioniert mit normalen Clonk und Gravity 100 sehr gut, führt aber mitunter zu seltsam hohen Sprüngen, da ich die Walk-Physical konstant gehalten hab... wär sonst ziemlich schwer Surprised

Zitat :
global func TestJump(int iX, int iY, object pObj)
{
if (!pObj && !(pObj = this))
return;

var Prec = 1000,
x = (iX - GetX(pObj)) * Prec,
y = (iY - GetY(pObj)) * Prec,
g = -GetGravity() * 2 * Prec / 1000,
xd = GetPhysical("Walk", PHYS_Current, pObj) * 28 * Prec / 1000000,
t = Abs(x / xd),
yd = Prec * t * g / 2 + Prec * y / t,
j = Abs(yd * 10 / Prec);
SetPhysical("Jump", j, PHYS_Temporary, pObj);
SetDir(iX > GetX(pObj), pObj);
pObj->Jump();
}
Nach oben Nach unten
Benutzerprofil anzeigen
Bowserkoopa
Staatsrat
Staatsrat
avatar

Männlich Alter : 24
Anmeldedatum : 21.12.08

BeitragThema: Re: Nötige Jump-Physical errechnen   Do Jan 06, 2011 8:42 pm

Na sowas, ich hätt schwören können ich hätte schon geantwortet? o.0
Na gut, dann eben nochmal:
Als ich deinen vorherigen Post zum ersten mal gelesen hab, dacht ich mir erst: Scheinbar ne Stufe zu hoch für mich, gut, dann kriegt der Clonk eben eine Funktion weniger^^

Tja, und ich dachte die Ableitungsfunktion brauch ich nie im Leben o.0 Man wird eben doch immer wieder überrascht. Ich kann die Funktion eigentlich ziemlich gut nachverfolgen.
Differenz zwischen aktueller Position und Zielposition, dann entgegen der Schwerkraft wirken, aber beim Walk-Physical berechnen weiß ich nicht wozu die mal 28 gerechnet wird. Trotzdem ziemlich derbe Mathematikfolter >.<

Jedenfalls funktioniert alles, seltsam hohe Sprünge konnte ich eigentlich nicht feststellen, also hast dich sogar selbst übertroffen Wink
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Nötige Jump-Physical errechnen   Do Jan 06, 2011 9:35 pm

Zitat :
aber beim Walk-Physical berechnen weiß ich nicht wozu die mal 28 gerechnet wird.
Ist zur Berechnung der X-Geschwindigkeit aus der Walk-Physical.
Zitat :
GetPhysical("Walk") * 28 / 1000000 Pixel/Frame wimni.
Der normale Clonk (Walk 70k) erreicht damit ca 1,96 Pixel pro Frame Laufgeschwindigkeit.

Gravitationsbeschleunigung ist GetGravity() * 0.002 Pixel / Frame².
Bei Standard-Schwerkraft (100) erfährt ein Objekt eine Beschleunigung von 0.2 Pixel/Frame².

Sprungkraft weiß ich grad nicht, müsste man aber mit etwas Probieren auch rauskriegen.

Edit:
- GetPhysical("Jump") / 10000 Pixel/Frame.
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Nötige Jump-Physical errechnen   

Nach oben Nach unten
 
Nötige Jump-Physical errechnen
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Das Jump Jupiter Teamforum und RPG Foren
» [phpBB3] Unnötige Leerzeilen bei Unterforenbeschreibungen
» Benötige CSS Code für Login Bereich um Flaggen nebeneinander steht

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Anfragen-
Gehe zu: