Gamestudio Links
Zorro Links
Newest Posts
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
M1 Oversampling
by jcl. 04/26/24 11:12
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
Eigenwerbung
by jcl. 04/26/24 11:08
MT5 bridge not working on MT5 v. 5 build 4160
by EternallyCurious. 04/25/24 20:49
Trading Journey
by howardR. 04/24/24 20:04
Zorro FIX plugin - Experimental
by flink. 04/21/24 07:12
Scripts not found
by juergen_wue. 04/20/24 18:51
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
5 registered members (Petra, AndrewAMD, VoroneTZ, 2 invisible), 822 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Mega_Rod, EternallyCurious, howardR, 11honza11, ccorrea
19048 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
crazy Dragon physics.... #372684
06/03/11 15:54
06/03/11 15:54
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
Ich habe im Med einen kleinen drachen creiert und habe vesucht ihn auf die folgende weise zu steuern:

wenn man leertaste drückt schlägt der Drache mit den flügeln und man steigt nach oben mit den pfeiltasten kann man den drachen drehen und den vortrieb duch neigung der flügel bestimmen...

ich hab's also mit der physics-engine probiert und folgendes erhalten

Code:
ph_setgravity (vector(0, 0, -383)); // set the gravity
	phent_settype (dragon, PH_RIGID, PH_BOX); // set the physics entity type
	phent_setmass (dragon, 1, PH_BOX); // and its mass
	phent_setfriction (dragon, 100); // set the friction
	phent_setdamping (dragon, 40, 40); // set the damping
	phent_setelasticity (dragon, 1, 1); // set the elasticity
	
	while (1)
	{
		
		
		rotatedragon_force.x = -100 * time_step * (key_cur - key_cul); // move the ball using the cursor keys
		rotatedragon_force.y = -100 * time_step * (key_cuu - key_cud); // 25 sets the x / y movement speeds
		rotatedragon_force.z = 0;
		
		dragon_force.x = 0;
		dragon_force.y = 0;
		dragon_force.z = 3000 * time_step * (key_space); // no need to move on the vertical axis
		phent_addcentralforce(dragon, dragon_force); 
		phent_addtorqueglobal (dragon, rotatedragon_force); // add a torquxe (an angular force) to the ball
		wait (1);
	}


(dragon ist das modell)

das problem an der ganzen sache ist das sich die physik unabhängig von der Modellausrichtun angreift, und sich der drache wirklich immer nur hoch und runter bewegt.
kann man das so ändern dass die physik wie c_move immer in ausrichtungsrichtung des modells angreift????

oder wäre es möglich c_move und die physik zu kombinieren?


thx im vorraus
LPF


..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: crazy Dragon physics.... [Re: LPF] #372685
06/03/11 16:03
06/03/11 16:03
Joined: Jul 2010
Posts: 974
United Arab Emirates, Dubai
TheShooter Offline
User
TheShooter  Offline
User

Joined: Jul 2010
Posts: 974
United Arab Emirates, Dubai
Muss man nicht eigentlich mit PH_movechar arbeiten?


Staub ist das neue Prime!!

Programming is like sex:
One mistake and you have to support it for the rest of your life.

Aktuelles Projekt: http://thisiswargame.bplaced.net/index.html

A8 Commercial *freu*
Re: crazy Dragon physics.... [Re: TheShooter] #372697
06/03/11 17:08
06/03/11 17:08
Joined: Dec 2008
Posts: 605
47°19'02.40" N 8°32'54.67" E...
hopfel Offline
User
hopfel  Offline
User

Joined: Dec 2008
Posts: 605
47°19'02.40" N 8°32'54.67" E...
Ich würde dir an dieser Stelle eh raten, nicht auf die Physik-engine zurückzugreifen, sondern dir selber "Schwerkraft" zu programmieren.
Im Physikunterricht solltest du gelernt haben/wirst du lernen was du dafür für Formeln benutzt und wie du sie anwendest. Das ganze für deinen Fall etwas zusammengefasst:

s = s0 + 1/2 * at² + v0 * t

s ist die zurückgelegte Strecke, a die Beschleunigung (-9.81 für Erdanziehung), v0 die Geschwindigkeit gen oben die der Drache durch den Flügelschlag bekommt, s0 seine anfangshöhe und t für die Zeit. (Hoffe ich hatte das noch richtig im Kopf)

Für eine einigermassen naturgetreuen Fallbeschleunigung würde das im Code etwa so aussehen:

Code:
var t = 0; //Zeit die verstreicht
var v = 10; //Anfangsgeschwindigkeit (Die durch einen Flügelschlag erreicht wurde)
var anfangshoehe = dragon.z; //Höhe vor Fall
while(1)
{

dragon.z = anfangshoehe + 1/2 * -9.81 * (t*t) + v*t;
t += time_frame;

wait(1);
}


Bei jedem Flügelschlag t auf 0 und die Anfangshöhe auf den Drachen setzen und du hast deine Schwerkraft.

Das Viech hat natürlich auch eine Luftreibung, aber das Ganze wird sonst noch ein wenig kompliziert, verringere am besten einfach die Fallbeschleunigung, also a in der oberen Formel.

Und so kannst du auch ohne weiteres mit c_move arbeiten.

Hoffe, das hat dir weitergeholfen. ^^


Hilf mir, dir zu helfen!
Re: crazy Dragon physics.... [Re: hopfel] #372702
06/03/11 18:03
06/03/11 18:03
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
O.K. Thanks...
aber das hatte ich schon probiert... damit das echt mirkt fehlen aber jede menge formeln die auch auf den Abtauchwinkel usw. zugreifen müssen... und das wäre ziemlich... na ja, Aufwendig d-.-b
(-> wenn sich der winkel vergrössert muss die beschleunigung nach vorne dazuaddiert, und aus dem abtauchwinkel ein neuer auftrieb errechnet werden...
ausserdem sind physikalische formeln überflüssig wenn man einfach pro ablaufzyklus etwas von einer ständig herrschenden beschleunigung abzieht,
mit der man dann auch auftrieb erzeugen kann
theoretisch machbar, praktisch aber fast unausführbar...)

und Ja... ich habs schon in der schule gelernt... man berechnet amit aus einem parabelförmigen graphen im t-v diagramm den zurrückgelegten weg... Grins

-> TheShooter: ich bin eigentlich Neuling mit lite-c... und habe mir gedacht, dass es mit der physics-Engine nett aussähe (würde, von dem was ich gelesen habe ,auch viele weitere probleme lösen...)

PS: ist übrigens fast alles copy&paste aus dem Lite-c-Workshop...

Last edited by LPF; 06/03/11 18:05.

..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: crazy Dragon physics.... [Re: LPF] #372703
06/03/11 18:15
06/03/11 18:15
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Vielleicht sind x und y einfach nur viel zu schwach im verhältnis zur z-Kraft und deshalb fällt ihre Kraft nicht auf?

Re: crazy Dragon physics.... [Re: Pappenheimer] #372722
06/03/11 20:15
06/03/11 20:15
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
ich hab gar kein x & y... aber wenn du eine formel aufstellst,die je nach winkel x,bzw. y berechnen wäre das eine große hilfe...

als ansatz vielleicht: so und so viele prozent von 45° (abtauchwinkel) entsprechen so und so viel prozent vo y bzw. x
-> Problem: er fliegt immer richtung x,also müsste man über trigonometrie y berechnen und so weiter... (grins)

Ps: ich hab's so probiert, und die engine hat verrückt gespielt... na ja


..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: crazy Dragon physics.... [Re: LPF] #372723
06/03/11 20:21
06/03/11 20:21
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Für x:

VECTOR temp;
var force_x_n_y = 300;

vec_for_angle(temp, my.pan);
vec_scale(temp, force_x_n_y);

Last edited by Pappenheimer; 06/03/11 20:22.
Re: crazy Dragon physics.... [Re: Pappenheimer] #372726
06/03/11 20:34
06/03/11 20:34
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
was genau macht man da jetzt...?

ich denke man setzt einen richtungsvektor(temp) auf my.pan
und verändert diesen dann mit x...
oder so


..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: crazy Dragon physics.... [Re: LPF] #372736
06/03/11 21:36
06/03/11 21:36
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
MasterQ32 Offline
Expert
MasterQ32  Offline
Expert

Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
@Pappenheimer:
schlechtes beispiel, der code ist unsicher!
Deine Kraft verändert sich auch im Betrag, für die Funktion braucht man vec_normalize!
Code:
VECTOR temp;
var force_x = 300;
vec_for_angle(temp, my.pan);
vec_normalize(temp, force_x);



rotiert die kraft force_x in x-y-z richtung so, dass der drache immer nach vorne fliegt.


Visit my site: www.masterq32.de
Re: crazy Dragon physics.... [Re: MasterQ32] #372766
06/04/11 07:33
06/04/11 07:33
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
werd's mal ausprobieren... thx

-> mehr oder weniger unabhängige frage: wie bekomme ich das massezentrum einer Physics Entity?

ach ja: Lokale Rotation hab ich gesern abend noch hinbekommen d-.-b
deshalb auch: wenn ich bei phent_addforcelocal den angriffspositionsvektor(oder so) ins massezentrum setze müsste er mir das gewünschte ergebnis liefern...

Last edited by LPF; 06/04/11 07:39.

..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Page 1 of 2 1 2

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1