Frage : Echte Geschwindigkeiten, fliehkraft und so weiter!

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Würd mich ma interessieren: Wer von Euch hat mit BB schon mal ein Netzwerkspiel programmiert?
Ich ! Klappt vorzüglich! 38% 38% 8 Stimmen
Ich ! Funzt aber leider nicht! 9% 9% 2 Stimmen
Nee, ist mir zu kompliziert! 14% 14% 3 Stimmen
Nee, brauch ich nicht, hab eh nur einen compi zuhause! 9% 9% 2 Stimmen
Mach ich später - wenn es mit meinem Programm so erstmal klappt! 28% 28% 6 Stimmen
Insgesamt 21 Stimmen
 

BurningSoul

Betreff: Frage : Echte Geschwindigkeiten, fliehkraft und so weiter!

BeitragSa, Apr 23, 2005 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Apr 23, 2005 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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
Twitter
 

BurningSoul

Betreff: ja neee hilft mir nicht!

BeitragSo, Apr 24, 2005 0:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 24, 2005 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 24, 2005 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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
 

BurningSoul

Betreff: antworten

BeitragSo, Apr 24, 2005 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Sad

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]
 

Timo

Betreff: Re: antworten

BeitragSo, Apr 24, 2005 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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# Wink
 

BurningSoul

Betreff: Okay , Problem gelöst, heissen dank an alle!

BeitragSo, Apr 24, 2005 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group