Matrix KameraSichtmodus

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Black Spider

Betreff: Matrix KameraSichtmodus

BeitragSa, Aug 06, 2005 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Seltsame Themaformulierung, aber nun:
Ich (OK, nicht Ich alleine, sondern Ich mit anderen) habe eine Art Weltraumshooter geproggt (in Bearbeitung) allerdings fliegt man auf einem Planeten mit Landschaft usw...
so ich hätte es jetzt gerne das man mit der Raumsonde einen Spezialangriff startet,
bei dem die Sonde sich drehend nach obenfliegt (nicht besonders Schwer),
doch dann
soll das ganze Programm angehalten werden, und die Kamera soll sich einmal um die Sonde herumdrehen
(wir kennen diese Szene aus dem Film MATRIX, wo Neo den Kugeln ausweicht und die Kamera sich um ihn dreht...)
allerdings ist dies im Film einfacher als bei Basic, denn
die Kamera soll sich ja um Das Schiff drehen WÄHREND alles andere stillsteht (deshalb funzt
Delay nicht)... Die SOnde soll Anschliessend auf den Boden knallen und eine Explosion
hervorrufen (das krieg ich aber auchnoch hin Very Happy )

helft mir!!!
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

skey-z

BeitragSa, Aug 06, 2005 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
da die 3D objekte ja nicht nach jedem schleifendurchlauf gelöscht werden, könntest du dann in eine Funktion springen, dort die Camera als child von nem pivot machen, der sich an der sonde befindet und dann einfach den pivot drehen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Black Spider

BeitragSo, Aug 07, 2005 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank!
doch wie krieg ich dass dann hin das der rest des Progs anhält (wie bei "Matrix")?
und noch eine Frage: wie kann man so eine Art "Umstelltaste" einbauen?,
man steuert mit den Pfeiltasten, und wenn man leertste gedrückt hat, dann kann man mit den
Pfeiltasten die Kamera drehen, oder so...

Dankö!!!
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 09, 2005 2:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Du speicherst die Bewegungen aller Objekte in ein Type/Dim, dann setzt du die Bewegung aller Objekte auf Null, ausser die der Kamera und fliegst mit ihr rum. Nach der Attake passiert was passieren soll und setzt den Rest wieder in Bewegung. Oder was war die Frage?

Allerdiings steht bei Matrix die Zeit nicht still, sondern wird extrem verlangsamt dargestellt.

x-pressive

BeitragDi, Aug 09, 2005 9:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso so umständlich? In meinen Games benutze ich z.B. immer eine Variable "gameSpeed", die bestimmt, in welcher Geschwindigkeit das Spiel abläuft. Wenn die Variable auf 1.0 gesetzt ist, heisst das normale Geschwindigkeit, bei 2.0 doppelte Geschwindigkeit, bei 0.5 halber Speed usw. Dann kann man jederzeit während dem Spiel die Zeit stufenlos schneller oder langsamer drehen -womit sich tolle Effekte erzeugen lassen.

Ist ganz einfach. Wenn du ein Objekt bewegst, machst du das ja dann normalerweise so:

MoveEntity Ship,0,0,shipSpeed
oder
MoveEntity Ship,0,0,shipSpeed*deltaTime

Soweit nichts neues. Und wenn du jetzt zusäzlich noch variablen Gamespeed einbauen möchtest, fügst du einfach hinzu:

MoveEntity Ship,0,0, (shipSpeed*gameSpeed)
oder
MoveEntity Ship,0,0, (shipSpeed*gameSpeed) * delta

Um dann den Matrix-Effekt zu erreichen, einfach die Variable gameSpeed kurzzeitig auf 0.25 oder so setzen (Zeitlupe) und die Kamera um das Schiff rotieren. Allerdings dran denken, daß du die Variable gameSpeed- bei allen Bewegungen im Game benutzt, deren Zeit beeinflussbar sein soll.

Eine gameSpeed-Variable macht sich auch sehr nützlich zum Debuggen. Ich lasse mein Game immer auf 20-facher Geschwindigkeit durchlaufen, damit ich beim Testen Zeit sparen kann Very Happy Das fetzt dann richtig. Ausserdem kann man dann später beim fertigen Game noch mal die Geschwindigkeit anpassen, wenn man merkt, daß das Gameplay zu langsam oder zu hektisch geworden ist und muss nicht alles extra wieder ändern.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Black Spider

BeitragDi, Aug 09, 2005 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, das is gut! Danke! An euch beide!!! Also müsste die Variable
gamespeed# = wasserbewegung# + mki\speed# + eigenspeed# + waffenspeed# + alleanderengeschwindigkeiten#
sein?
Und der CamPivot müsste dann
BlitzBasic: [AUSKLAPPEN]

PositionEntity campivot,EntityX(Schiff),EntityY(Schiff),EntityZ(Schiff)
Global cam = CreateCamera(campivot)
ungefähr so aussehen???

Ich glaube, wenn ich das hab, dann hab ich alles ^^ vielen Dank an euch alle !!! Very Happy
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

x-pressive

BeitragDi, Aug 09, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum so kompliziert? Du kannst gameSpeed auf jeden beliebigen Wert setzen, dementsprechend läuft dann halt das Spiel. 1.0 ist dabei immer normale Geschwindigkeit. 0.5 halb so schnell, 2.0 doppelt usw.

Also ist es am einfachsten, wenn du einfach in dem Moment, in dem du Zeitlupe willst, die Variable gameSpeed von 1.0 (normal) langsam auf zum Beispiel 0.25 herunterzählst. Du kannst die Variabel auch sofort auf 0.25 setzen, aber es wirkt "cooler", wenn die Zeit in deinem Game fliessend langsamer wird, nicht plötzlich. Ist doch ganz simpel.

In deiner Hauptschleife:

BlitzBasic: [AUSKLAPPEN]


; ZEITLUPEN-MODUS AKTIV? SPIEL WIRD LANGSAMER
If zeitlupe = True Then
If gameSpeed > 0.25 Then
gameSpeed = gameSpeed - 0.01
End If
; ZEITLAUPE AUS? SPIEL WIRD WIEDER SCHNELLER
Else
If gameSpeed < 1.0 Then
gameSpeed = gameSpeed + 0.01
End If
End If



Und im Rest des Spiels alle Bewegungsgeschwindigkeiten immer mit gameSpeed multiplizieren. Zumindest alle Bewegungen, die von der Zeitlupe beeinflusst werden sollen.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 09, 2005 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi x-pressive,
die Idee mit dem Gamespeed ist echt cool, werd ich auch in mein Spiel einbauen! Einen kleinen 'Fehler' habe ich aber bei deinem letztem Eintrag zu bemängeln. Es fehlt die delta -Variable bei der allmählichen Verlangsammung des Spiels...

; ZEITLUPEN-MODUS AKTIV? SPIEL WIRD LANGSAMER
If zeitlupe = True Then
If gameSpeed > 0.25 Then
gameSpeed = gameSpeed - 0.01 * delta
End If
; ZEITLAUPE AUS? SPIEL WIRD WIEDER SCHNELLER
Else
If gameSpeed < 1.0 Then
gameSpeed = gameSpeed + 0.01 * delta
End If
End If

Ansonsten braucht ein grottig *1 langsamer Rechner paar Minuten um die Geschwindigkeit zu verlangsamen.

*1 - Übertriebener Wert und kann nicht ganz ernst genommen werden.

Black Spider

BeitragDi, Aug 09, 2005 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Mann !!! Echt !!! warum hast du dich eigentlich nicht mehr wegen den grafiken gemeldet???

Danke an alle!!! Das wir soooooooo GEIL !!!
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

x-pressive

BeitragDi, Aug 09, 2005 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe die Delta-Variable beim Beispiel absichtlich mal weg gelassen, um es einfacher zu machen. Es gibt ja auch hin und wieder Leute, die bei einfachen Games WaitTimer benutzen. Aber stimmt natürlich: wenn man Delta-Timing benutzt, muß die Variable auf jeden Fall mit dazu.

Merke: eine gute Lösung ist niemals kompliziert. Wink
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Black Spider

BeitragDi, Aug 23, 2005 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry...
Ich wollte den effekt jetzt in nem Neuen Game Anwenden, doch ich hab da son Problem mitm Pivot.
Man soll die Kamera immer un das Objekt drehen können (wie bei Splinter Cell),
doch die Figur dreht sich jetzt seltsamerweise mit...

warum und

HILFÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

x-pressive

BeitragDi, Aug 23, 2005 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Da liegt der Fehler dann aber sich irgendwo anders -vielleicht hast du irgendwie die Figur mit der Kamera bzw. dem Kamerapivot verknüpft (ParentEntity).
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Black Spider

BeitragDo, Aug 25, 2005 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, dass muss ich doch, sonst bleibt der Pivot ja stehen, oder?
und nochwas:
beim Weltraum spiel hatte ich das Problem nicht,
doch hier schon:
Die Kamera hat den gleichen KolliType wie der PLayer (damit man nicht durch die Landschaft gucken kann)
das Problem ist, dass sich die Kamera jetzt zwischendurch verschiebt (wenn sie mitm Terrain-Hügel kollidiert),
wie krieg ich die wieder normal!?
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group