Egoshooter mit mehreren Ebenen. Wie laufen??

Übersicht BlitzBasic Blitz3D

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

 

kolloffnikoff

BeitragMi, Sep 15, 2004 3:03
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry...hab auf letztes posting der ersten seite geantwortet...lass trotzdem mal stehen...cya



ich post euch einfach mal den anfang der player.bb meines 3d shooters den ich grad bastel...X-Treme-Bauern-Shooter(merkt euch diesen namen...der wird mal GROOOS werden.. Very Happy )...
da fehlt noch einiges aber genau das hier beschriebene problem wird da gelöst...glaub ich mal
Code: [AUSKLAPPEN]

Include "collisions.bb"

Type T_Player
   Field pivot
   Field camera
   
   Field yspeed#
   Field movespeed
End Type

Global player.T_Player


Function Init_Player()
   ;Setup player
   player.T_Player = New T_Player
   
   ;Base
   player\pivot=CreatePivot()
   EntityRadius player\pivot,32
   EntityType player\pivot,col_player
   
   ;Camera
   player\camera=CreateCamera( player\pivot )
   MoveEntity player\camera,0,64,0
   
   ;Jump
   player\yspeed#=0.0
   player\movespeed=8
   
   ;Setup collisions
   Collisions col_player,col_environment,2,3
   
   ;Ins level etwas über den boden
   PositionEntity player\pivot,0,100,0
   
   
   MoveMouse 400,300
End Function


Function Update_Player()
   ;Look around
   mys = MouseYSpeed()/2
   If Abs(EntityPitch(player\camera)+mys)<89 Then
      TurnEntity player\camera,mys,0,0
   EndIf
   TurnEntity player\pivot,0,-MouseXSpeed()/2,0
   
   ;Movement
   If KeyDown(17) MoveEntity player\pivot,0,0,player\movespeed
   If KeyDown(31) MoveEntity player\pivot,0,0,-player\movespeed
   If KeyDown(30) MoveEntity player\pivot,-player\movespeed,0,0
   If KeyDown(32) MoveEntity player\pivot,player\movespeed,0,0
      
   ;Es lebe die schwerkraft
   player\yspeed=player\yspeed-2
   MoveEntity player\pivot,0,player\yspeed,0
   
   
   ;Collisions
   col=CountCollisions(player\pivot)
   For i=1 To col
      If CollisionNY(player\pivot,i) Then ;Baby,wenn ich down bin
         player\yspeed=0
         If KeyDown(57) player\yspeed=20 ;dann flieg ich nur so dahin(Jump),muha
      End If
   Next
   
   
   MoveMouse 400,300
End Function


hier wird einfach ausgenutzt das das pivot einen radius von 32 hat und so treppenstufen mit 16 units einfach hochslidet.

auf dem boden wird der spieler durch eine art schwerkraft berechnung gehalten


...hoffe es hilft

cya
 

Darren

BeitragFr, Okt 22, 2004 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
also cih würde die figur bewegen un dann die camera immerwider hinter die figur setzten..........
 

Dödel

BeitragFr, Okt 21, 2005 9:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist zwar Uralt Thema, aber trotzdem:

Kollisionen helfen doch nicht! Wenn man eine Kollision einbaut, dann bleibt man an Treppen hängen...

Jan_

Ehemaliger Admin

BeitragFr, Okt 21, 2005 9:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Er ist uralt, und wenn du die nächsten minuten, noch so einen Uralten ausgräbst, gibts par aufs maul!
between angels and insects
 

Dödel

BeitragFr, Okt 21, 2005 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist aber doch schade, wenn ein nicht beendeter Thread im Nichts versinkt, oder?

Jan_

Ehemaliger Admin

BeitragFr, Okt 21, 2005 9:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist schade, das du den alten dinger ausgräbst,
wer sucht, der findet, aber du bringst die Zeitliche Reinfolge durcheinander.
between angels and insects
 

Dödel

BeitragFr, Okt 21, 2005 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du mal gesucht? All diese Treppenthreads haben nur lose Enden. Nirgendwo wird ein Lösungsweg zu Ende gebracht, niemlas ein Thread beendet. Als Seoman meinen eigenen Treppenthread wieder ausgegraben hat, war das für mich nochmal ein Anstoß, selber zu suchen...

Wenn du einen Thread weißt, in dem eine wirklich funktionierende Lösung gefunden wurde, könntest du ihn mir dann sagen? Ich nämlich nicht, und ich kann es nicht nachvollziehen, da gerade "Experten" (wie du, Jan_) sowas doch bestimmt schonmal gelöst haben müssen...

Jan_

Ehemaliger Admin

BeitragFr, Okt 21, 2005 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo ist den Das Problem, beim Treppen Steigen?

Die Collisionen, auf modus, 3, großgenuge Collisionssphere und alles funktiooniert, Testet es doch einfach.
between angels and insects
 

Dödel

BeitragFr, Okt 21, 2005 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Radius groß genug sein soll, dann kann man (ich??) ja nicht mehr bis zum Anschlag an die Wand ran (nun habe ich allerdings auch Figuren Perspektive und nicht Ego)

Klip

BeitragFr, Okt 21, 2005 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Prüfe auf eine Kollision mit einem Entity mit voller Transparenz (beispielsweise einer Box), die vor und hinter der Treppe steht. Wenn berührt wird, dann stelle die Collisions um.
 

Dödel

BeitragFr, Okt 21, 2005 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann müsste ich ja die Treppe komplett einrahmen, mit solchen Boxen. Ohne Reaktion--> Meshsintersect--> 1. Bei vielen Treppen zum einen sehr langsam, bei Wendeltreppen zusätzlich unmöglich^^

Jan_

Ehemaliger Admin

BeitragMo, Okt 24, 2005 7:42
Antworten mit Zitat
Benutzer-Profile anzeigen
du bist ein Dödel!
between angels and insects

Henry

BeitragMo, Okt 24, 2005 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Dödel hat Folgendes geschrieben:
Dann müsste ich ja die Treppe komplett einrahmen, mit solchen Boxen. Ohne Reaktion--> Meshsintersect--> 1. Bei vielen Treppen zum einen sehr langsam, bei Wendeltreppen zusätzlich unmöglich^^


Was ist bei Wendeltreppen unmöglich?

Wie bereits vor ein paar Monaten erwähnt, weiss wohl immer noch niemand, was genau Dein Problem hier ist...und Jan muss ich recht geben.
In Bezug auf Treppen in B3D habe ich Dir eine Lösung gegeben und somit ist das Thema eigentlich beendet...wenn Du aus den Vorschlägen nichts machst, ist das Dein Ding.

Hier nochmal eine Lösung für eine Wendeltreppe (sofern man rechts und links nicht runterfallen können soll):

Die Treppe:

user posted image


Rechts und links neben die Treppe werden Hilfsobjekte (Dummies) gesetzt, die im Spiel unsichtbar sind, die aber auf Kollision geprüft werden.
Der einfachen Bewegung halber legt man auf die Treppe ebenfalls ein solches Hilfsobjekt, auf welchem man die Treppe hochgehen kann...es findet also keine Kollision mit den Stufen, sondern mit dem Plane statt, das nach oben führt. Diese Vorgehensweise findet man in vielen Spielen:

user posted image

user posted image

user posted image

Bei gleich grossen Stufen und einem gleichmässigen Walkcycle fällt es in der Regel nicht auf, dass man nicht über die Stufen, sondern über ein Plane nach oben geht.
Da die Dummies alle aneinanderstossen, fällt man auch nicht durch sie hindurch bzw. die Treppe runter.

Mit dieser Methode kommen durch die drei Dummies genau 27 Polygone hinzu, die man über ein View oder Distance Culling mit HideEntity komplett ausblenden kann, wenn der Spieler davon weit entfernt ist.

Wo wird denn da etwas langsam oder raubt Performance??
Aiya Eärendil Elenion Ancalima!

All you have to decide is what to do with the time that is given to you.

Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen!
Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht!
 

Dödel

BeitragMo, Okt 24, 2005 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehs immernoch nicht. Man müsste den Kollisionstyp auf nur raufsliden setzen, für den Rest des Levels aber sliden. Also müssen die Schrägen BlitzIntern erstellt werden (oder als einzelnes Objekt geladen und über die Treppe gelegt).

Zu Möglichkeit 1:
Ich persönlich habe keine Lust, bei einer Wendeltreppe Blitz Intern mit den Normals eine Schräge drüberzulegen...

Zu Möglichkeit 2:
Für jede Treppe nochmal eine Hilfsschräge als externes Mesh?? Unübersichtlich und Speicher fressend...


Ich weiß nicht, wo meine Denkblockade liegt, aber was mache ich denn falsch????

Henry

BeitragMo, Okt 24, 2005 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Dödel hat Folgendes geschrieben:
Ich weiß nicht, wo meine Denkblockade liegt, aber was mache ich denn falsch????


Was Du falsch machst, kann ich Dir sagen...Du atmest.

"Ich persönlich habe keine Lust"? - Nun, programmieren ist mit Arbeit verbunden...wenn Du darauf keinen Bock hast, dann kauf Dir ein Drag&Drop Toolkit wie GameStudio.

"Methode 2" ist unübersichtlich und Speicherfressend?
Für die Unübersichtlichkeit sorgst Du selbst und Speicherverbrauch? Huch, eine weitere Datei mit einem Objekt welches an die 30 Polygone hat zwingt Deinen Rechner in die Knie...und FreeEntity ist ein Fremdwort.

Mit Deiner Einstellung brauchst Du keine weitere Hilfe erwarten.
Aiya Eärendil Elenion Ancalima!

All you have to decide is what to do with the time that is given to you.

Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen!
Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht!
 

Dödel

BeitragMo, Okt 24, 2005 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Was du falsch machst, ist mich für einen idiotischen kleinen Typen zu halten, der denkt, Quake Programmieren wäre in 10 mins getan... Das bin ich nicht!!

Ich persönlich habe keine Lust, nein! Für sagen wir 50 Treppen solche Schrägen erstellen... Also, Koordinaten, Größe gehen vielleicht noch, aber Wendeltreppen? Mit Normals ist es da ja nicht getan... Dann müsste ich für eine Wendeltreppe ja die einzelnen Ecken mit ihren Koordinaten herausfinden und danach dann die Schräge erstellen. Das dauert doch und ist eine nervtötende Arbeit. Vllt. Kennst du Enter the Matrix... Da gibts eine Map, heißt Vertigo/China Town... Die besteht fast nur aus Treppen. Würde man die alle per "Hand" mit Schrägen versehen, dann würde man sich dämlich klicken.

Ich kann mir das einfach nicht vorstellen.


Methode 2:
Von arbeitsspeicher habe ich nie gesrpochen... Methode 2 war, die Treppenschrägen individuell für jede Treppe im Modeller zu erstellen und zu speichern. Das ist unübersichtlich (GFX-->Treppen-->Map1-->Treppe1.b3d, Treppe2.b3D... Und dann Map2-->Treppe1.b3D...)
und verbraucht unnötigen Festplattenspeicher. Diese Idee war außerdem nicht ernst gemeint, sondern eher eine fiktive Ironie auf meine Hilflosigkeit...

Mr.Keks

BeitragMo, Okt 24, 2005 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
worüber diskutiert ihr hier eigentlich nochmal die ganze zeit?
für die kollision einer figur, die auf beinen steht, mit dem level nutzt man übrigens am besten linepick ^^.
MrKeks.net

Jan_

Ehemaliger Admin

BeitragDi, Okt 25, 2005 7:50
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, wenn du keine Lust hast,

nimm einfach Line intersect,
das du radial von der Figur nummst, (so, ca. 260 Grad * die Höhe der Figur, auf Treppen höhe.)
+meshintersect. --> du weißt, wann sie kollidiert und du weißt, wo sie überhaupt hinlaufen kann.
dann berechnest du noch die Neue Position.

Das ist viel schneller und übersichtlicher.
between angels and insects
 

Dödel

BeitragDi, Okt 25, 2005 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
... und jetzt nochmal für Laien??

Line Intersect Question

radial von der Figut nummst? Question

260 Grad * die Höhe der Figur, auf Treppen höhe Question

Also, sorry, aberr ich versteh das nicht Confused
 

Dödel

BeitragDo, Okt 27, 2005 7:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Juhuu, jetzt funktioniert alles, wie gewollt! Gilt natürlich auch für alle restlichen Threads zu Treppen in denen ich schändlicherweise gepostet habe. Entschuldigung! Smile

Naja, vielen Dank für all die vielen Posts (auch die negativen XD Die haben in mir den Drang hervorgerufen, (mir selbst?) zu beweisen, dass ich kein Dödel bin)...

Ich mach mich dann mal wieder ans Programmieren...

Vielen Dank ihr alle (Juhuuuu Very Happy )

mfg
Dödel

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group