Frage : Echte Geschwindigkeiten, fliehkraft und so weiter!
Übersicht

Würd mich ma interessieren: Wer von Euch hat mit BB schon mal ein Netzwerkspiel programmiert? | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||
Insgesamt 21 Stimmen |
BurningSoulBetreff: Frage : Echte Geschwindigkeiten, fliehkraft und so weiter! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute - mir reichen die normalen Funktionen - move entity und translate entity usw nicht mehr wirklich aus!
Ich möchte das man einem objekt in einem vektor eine Geschwindigkeit mitgeben kann, und es sich dann weiter in diese Richtung bewegt, auch wenn es NICHT mehr dorthin schaut! Code: [AUSKLAPPEN] Function SetSpeed (obj.go,speed%,max,forward%,upward%,sideward%) If speed = 0 Or (forward% = 0 And sideward% = 0 And upward% = 0) Then Return ; Do Nothing! piv = CreatePivot() absolute% = Abs(forward%) + Abs(sideward%) + Abs(upward%) PositionEntity (piv,EntityX (obj\ent),EntityY (obj\ent),EntityZ (obj\ent)) ; place pivot on entity RotateEntity (piv,EntityPitch (obj\ent),EntityYaw (obj\ent),0) MoveEntity piv,sideward%,upward%,forward% obj\speed_x% = obj\speed_x% + ( (EntityX (piv) - EntityX(obj\ent) ) / absolute%*speed%) obj\speed_y% = obj\speed_y% + ( (EntityY (piv) - EntityY(obj\ent) ) / absolute%*speed%) obj\speed_z% = obj\speed_z% + ( (EntityZ (piv) - EntityZ(obj\ent) ) / absolute%*speed%) Parameter : obj\ent enthält den zu beschleunigenden entity speed ist die einzunehmende Geschwindigkeit max soll die geschwindigkeit bei einer beschleunigung begrenzen, ist aber noch nicht implementiert! die nächsten 3 paramater stellen dann eine bewegungsrichtung im verhältnis dar! woanders im code wird dann jedes objekt per TranslateEntity(entity,x,y,z) bewegt! Das merkwürdige ist jetzt allerdings: gebe ich dem teile eine hohe geschwindigkeit - z.b 5 pro frame- so fliegt es (es ist ein Schuss) relativ genau dahin, wo die Maus hinzeigt - bei einer Geschwindigkeit von 1 hat es allerdings maximal 8 Richtungen! Das dumme ist, das es über die Blitz Bewegungsbefehle nur möglich ist, Integer zu übergeben, und bei einer geschwindigkeit von eins sind alle 3 Richtungen auch ungefähr eins, und werden dann auf 1,0 oder -1 gerundet! Dabei wird die Position intern als double angezeigt! Hat da jemand ne Ahnung was ich da anstellen könnte ? Oder geht es nur indem ich mir eine blikrichtung merke, in die ich das objekt dann bewege ? Das wäre allerdings blöd, weil dann kann ich z.b keine Drifting Effekte einbauen! Danke für Eure Hilfe! P.S: Ich bastel grade ein hübsches Netzwerkspiel! Die physik und das Netzwerkprotokoll stehen schon - wenn jemand also im bezug auf direkt play netzwerkspiele hilfe oder anregungen sucht so bin ich da! P.S.2 : Hat jmd Ahnung wann Bmax endlich für Windows rauskommt ? *es kaum noch erwarten kann! |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
tokamak hat ist ne gute Physikengine, mittlerweile auch freeware, such mal danach, vlt hilft sie dir ja | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
BurningSoulBetreff: ja neee hilft mir nicht! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja neee hilft mir nicht - weil :
ich will dass ja in BB3D umsetzen. Und die standardart - siehe codebeispiel - klappt dort ja nicht ... trotzdem danke . vielleicht hat einer von euch das ja schon mal irgendwie gelöst ... ? |
||
![]() |
Peer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest für alle Vektoren Floatingpoints benutzen.
Und wie kommst du darauf dass man allen Entitystate Befehlen nur Integer übergeben kann? Natürlcih schlucken die Floats. |
||
![]() |
MaTrixCruiser |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du meinst also trägheit. Bin ich auch gerade dabei. Bin bald fertig.
Ich ahbe das so gemacht: Am anfang der schleife wird die position des objektes gelesen. Dann bewegt man das objekt Dann wird die position wieder gespeichert Dann wird errechnet wie schnell sich da objekt bewegt hat Nun wird in der nächsten schleife das objekt genauso bewegt wie vorher nur bissel langsammer. Die folge: Das objekt bewegt sich noch ein wenig weiter(kennt man ja ) |
||
Amd 64 3200+ (939 winchester)
nvidea 6600gt (PCI-E) 1024 ddr400 200GB HDD S |
BurningSoulBetreff: antworten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@peer
Zitat: Du solltest für alle Vektoren Floatingpoints benutzen. tue ich doch ! variable% ! ist logisch das das bei integern nicht klappt! Zitat: Und wie kommst du darauf dass man allen Entitystate Befehlen nur Integer übergeben kann? Natürlcih schlucken die Floats. kann ich Dir sagen: durch ausprobieren - pack ma in deine mainloop den befehl Text (0,20,Entityx (DeineCamera), EntityY (DeineCamera) ... etc und dann führste mal ein Translateentity() mit deiner camera um 0.25 aus - wenn man das 4 mal macht, sollte sich das bild doch um eine kooedinate senken - Du wirst allerdings feststellen, das dies NICHT passiert ![]() komigerweise geht es allerdings schon , seinen entity mit moveentity (vorwärts) zu bewegen , und wenn man schräg guckt, ist eine position von x:2,4355 y:1.3434 z:0,1244 nix ungewöhnliches ich versteh net warum translateentity sowas net kann ! @max danke für Deine Antwort! Ja, stimmt, wenn ich ein autorennen bauen würde, wäre das sicherlich der richtige weg .... was ich allerdings benötige, ist eine lösung, die universal einsetzbar ist! Ich will einen egoshooter bauen, wo es verschiedene Spielerklassen gibt, die total unterschiedlich sind , also im wesentlichen panzer, soldat, dämon und magier .... ist immer mein erfolgsrezept . Und ich möchte wenn möglich die selbe formel verwenden für: ballistische geschosse, z.b granaten, fliehkraft bei hovercrafts/booten/Flugzeugen, die in eine richtung mit einem gewissen tempo sich bewegen, dann in eine richtung abbiegen, aber noch ein stück weiter in die alte richtung gedrückt werden und icht zuletzt für explosionen, bei denen ein spieler durch die luft geschleudert wird, aber mit air control noch ein wenig dagegen lenken kann -> nicht realistisch aber besser für den spielspass find ich! es geht also darum, das ein objekt bereits eine geschwindigkeit hat, und dann während diese geschwindigkeit noch wirkt, gleichzeitig tempo in andere richtungen aufbauen kann! Allerdings: vielleicht wäre es hilfreich, wenn Du die entsprechende codestelle mal hier posten könntest - du musst ihn auch nicht extra konform machen , wenn es das ist was ich brauche werde ich die funktion vermutlich durschauen, wenn ich sie sehe! @ alle Herzlichen Dank auf jeden schon mal an Euch für Eure Ansätze und Tipps =) iss nen klasse Forum hier - ich werde euch auf jeden Fall berichten wie ich es geölst habe sobald ich es gelöst habe![/quote] |
||
TimoBetreff: Re: antworten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BurningSoul hat Folgendes geschrieben: @peer
Zitat: Du solltest für alle Vektoren Floatingpoints benutzen. tue ich doch ! variable% ! ist logisch das das bei integern nicht klappt! mit dem % Zeichen deklarierst du stinknormale integer, Floats erhalten eine Raute (#) ! Also nicht variable% sondern variable# ![]() |
||
BurningSoulBetreff: Okay , Problem gelöst, heissen dank an alle! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Timo , vielen dank Dir !
Dann hatte ich mich einfach nur damit vertan, und es nicht gemerkt! Weil ansonsten schluckt blitz ja auch Integer, und macht daraus dann floats, wo es nötig ist- bis eben dachte ich noch, das man mit dem prozentzeichen Floats deklarieren würde! Hey, ich hab heute nachmittag 3 Seiten text geschrieben, aber leider ist wie ich grade sehe dieser Text auf dem weg ins forum wohl verloren gegangen (*ärger !!) daher also nochmal: freut mich riesig , jetzt kann ich das programm doch so schreiben, wie es gedacht war!!!! =))) Seid ein Klasse Forum hier, weiter so @ alle ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group