CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


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

 

 Nötige Jump-Physical errechnen

Nach unten 
3 verfasser
AutorNachricht
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Nötige Jump-Physical errechnen Empty
BeitragThema: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen EmptyMo 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
Gamer
Staatsrat
Staatsrat
Gamer


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

Nötige Jump-Physical errechnen Empty
BeitragThema: Re: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen EmptyMo 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.
Nach oben Nach unten
http://www.gamer95.npage.de/
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Nötige Jump-Physical errechnen Empty
BeitragThema: Re: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen EmptyMo 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
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Nötige Jump-Physical errechnen Empty
BeitragThema: Re: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen EmptyDi 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
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

Nötige Jump-Physical errechnen Empty
BeitragThema: Re: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen EmptyDo 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
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Nötige Jump-Physical errechnen Empty
BeitragThema: Re: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen EmptyDo 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
Gesponserte Inhalte





Nötige Jump-Physical errechnen Empty
BeitragThema: Re: Nötige Jump-Physical errechnen   Nötige Jump-Physical errechnen Empty

Nach oben Nach unten
 
Nötige Jump-Physical errechnen
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-

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