Problem bei Kollision im Multplayer mit Types
Übersicht

![]() |
GearTechDEehemals 'KillerJo96'Betreff: Problem bei Kollision im Multplayer mit Types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich habe ein kleines Problem mit der Kollision in meinem Ego Shooter. Und zwar habe ich im Main Dokument ganz oben ein Include auf die LoadResources.bb verwiesen. Darin wird ein Cube erstellt: BlitzBasic: [AUSKLAPPEN]
So jetzt wird also ein Cube erstellt und sofort ausgeblendet -.- Jetzt hab ich im MainDokument 2 Konstante Variablen: Type_Map und Type_OCube Map natürlich aufs terrain verwiesen und den Cube wie ihr oben sehen könnt auch... dann hab ich ne Function UpdateNetwork() darin steht wenn ein user joined: BlitzBasic: [AUSKLAPPEN]
ausserdem kann man mit der maus kugeln erstellen. die kugel ist ein sprite was ich auch in der include datei lade und mit entitytype auf die konstante Type_Bullet verweise... diese kugel möchte ich mit dem Cube kollidieren lassen. also hab ich: BlitzBasic: [AUSKLAPPEN]
..etwas weiter unten vor die hauptschleife geschrieben. dann hab ich noch ne Function wo drin steht: BlitzBasic: [AUSKLAPPEN]
im server rufe ich das ganze ab: BlitzBasic: [AUSKLAPPEN]
Nur leider klappt das ganze alles irgendwie nicht, bin jetzt schon seid stunden am suchen -.- die kollision funktioniert überhaupt nicht... eigentlich müsste die kugel doch schon mit dem würfel kollidieren und dann stoppen, sie fliegt einfach hindurch -.- weiß jemand weiter? |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If oc\ID = ID Then
WriteByte(UDPSTream) ; also die informationen senden nur an den der getroffen wurde... End If vergisst du es da nicht zu senden? |
||
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nee hatte keine lust das alles da zu schreiben, also das SendUDPMsg mache ich schon -.- aber ich glaub nich, dass es am senden von der nachricht hängt, sondern an der Kollision.. Ich habe eine Frage, wenn ich 2 Type habe, einen für die andren Spieler und einen für die Kugeln... dann muss ich doch eigentlich mit types arbeiten und ständig in einer For Next schleife abfragen ob er es ist... muss ich dann um beide types anzusprechen:
BlitzBasic: [AUSKLAPPEN]
Funtioniert das so? |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm kann es evt daran liegen:
Code: [AUSKLAPPEN] HideEntity Cube
eventuell solltest du das copierte mesh mit Showentity wieder sichtbar und somit auch abfragbar machen ![]() |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Blitzcraft |
![]() Antworten mit Zitat ![]() |
---|---|---|
HideEntity deaktiviert auch die Kollision von Objekten
Probiers mal mit EntityAlpha: Code: [AUSKLAPPEN] EntityAlpha cube,0
|
||
Screenshot aus meinem ersten Projekt |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber das kann doch nicht sein, weil ich die kugeln und die anderen spieler ja sehe -.- ??? moment aber ich gucke mal, das hört sich irgendwie ziemlich verdächtig an... | ||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch mal, MeshesIntersect![]() Sollte die Sache mit MeshesIntersect ![]() ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, wenn ich in der Funktion UpdateCollisions:
BlitzBasic: [AUSKLAPPEN]
dann kommt wenn ich auf jeweils den anderen würfel schiesse ein MAV und wenn ich den debugger anschmeisse sagt der mir das eins von beiden oder beide kein Mesh ist.. stimmt ja auch, die schüsse sind sprites... aber eig. sind das doch auch meshes oder nicht? aber dürfte dieser mav nicht eigentlich garnicht kommen wenn keine kollision stattfindet? Edit: ich lade morgen mal das komplette projekt hoch. Hiffe mir kann dann jemand helfen -.- ich bin gerade nämlich ziemlich verwirrt, da och mit kollision eigentlich fast nie probleme hatte :/ |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
gehtst du wirklich alle beide Type Instanzen durch?
sprich : Code: [AUSKLAPPEN] for A.typeA = each typeA
for B.Type = each TypeB prüfen next next |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich glaube schon also so hab ich es gemacht wie du...
hier mal das Projekt, vielleicht findet jemand einen Fehler oder so etwas.. http://geartech.ge.funpic.de/StrikingDown.rar Danke im Voraus |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi...
also erstmal... musst du ganz ganz ganz dringen den code anders organisieren. Momentan ist es bei dir so: Globale constaten includes ### main loop### funktionen types festlegen funktionen irgendwelche funktionen arrys definieren funktionen oh man da sucht man sich zum krüpel ^^ bitte mach das eher so grafik modus setzen.. globale constanten includes types festlegen arrys festlegen ### main loop #### funktionen funktionen .... zu deinem Problem: Code: [AUSKLAPPEN] Function UpdateCollisions() For b.SBullet = Each SBullet For c.Client = Each Client ;If EntityCollided(b\Mesh,Type_OCam) Then End ;WriteByte(UDPStream,Hit) ;WriteInt(UDPStream,c\ID) ;SendUDPMsg(UDPStream,INT_IP(IP),Port) ; End If wert = MeshesIntersect(b\Mesh,c\Mesh) If wert = 1 Then End End If Next Next End Function die schleife For c.Client = Each Client wird nie ausgeführt ! weil noch keine client instanz erstellt wurde. die clients erstellst du hier: Code: [AUSKLAPPEN] Function UpdateNetwork() While RecvUDPMsg(UDPStream) <> 0 Select ReadByte(UDPStream) Case Join End ;Auslesen ReadID% = ReadInt(UDPStream) ReadName$ = ReadString(UDPStream) ;Eintragen + setzen c.Client = New Client c\ID = ReadID c\Name = ReadName c\X = 300 c\Y = 50 c\Z = 250 c\Yaw = 0 c\Mesh = CopyEntity(OPlayer) PositionEntity c\Mesh,c\X,c\Y,c\Z RotateEntity c\Mesh,EntityPitch(c\Mesh),c\Yaw,EntityRoll(c\Mesh) allerdings kommt nie "Case Join" und somit auch keine client instanz.... Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich lasse aber immer auf 2 PC´s die Clients laufen.. Aber das hat nicht funktioniert, deswegen frage ich ja -.- | ||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn ich mit 2 clients joine .. sehe ich aber keinen 2ten ^^ worauf schiest du denn | ||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht, weil du die IP adresse nicht geändert hast? die ist noch auf meine Hamachi IP registriert, änder die mal in deine lokale: 127.0.0.1 | ||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
so.. also erstmal... der code ist so unleserlich das ich mal mega aggro wurde und mit gefühlten 3 atemzügen meine wasserpfeife leer gezogen hab ![]() ![]() so... wie vorhins vermutet hidest du dein mesh ohne es wieder zu "zeigen" Code: [AUSKLAPPEN] HideEntity OPlayer
also bitte ein showentity einfügen, und das bevor du damit etwas machst: Code: [AUSKLAPPEN] Case Join ;Auslesen ReadID% = ReadInt(UDPStream) ReadName$ = ReadString(UDPStream) ;Eintragen + setzen c.Client = New Client c\ID = ReadID c\Name = ReadName c\X = 300 c\Y = 50 c\Z = 250 c\Yaw = 0 c\Mesh = CopyEntity(OPlayer) ShowEntity c\mesh PositionEntity c\Mesh,c\X,c\Y,c\Z RotateEntity c\Mesh,EntityPitch(c\Mesh),c\Yaw,EntityRoll(c\Mesh) EntityType c\mesh,Type_OCam Die kollisionsprüfung habe ich mit If EntityDistance(c\mesh,b\mesh) <3 Then End hinbekommen. Dieser befehl ist aber langsam also sollte man ihn sparsam verwenden. warum es mit entitycollided nicht klappt, kann nur an Entitytype oder ähnlichen liegen. Mir ist eh aufgefallen das du das nicht bei allen Meshes vergeben hast... Also Pflege das nach und dann wirds warscheinlich auch mit entitycolided klappen. Mir ist zudem aufgefallen das du deine clients auf X=300 y=50 Z=... erstellst. Im Spiel haben sie aber ganz andere Positionen. Eventuell solltest da auch mal drüber gehen. Was rede ich.. der ganze code muss überarbeitet werden.. Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja du hast leider Recht-.- komme ja selber schon nich mehr klar -.- werde das einfach nochmal überarbeiten, wird schon irgendwie funktionieren.
Trotzdem danke für die Mühe ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich empfehle IDEAL anstatt die standard ide von Blitzbasic zu verwenden.
Hat tolle funktionen wie funktionen zusammenklappen und das erstellen von solchen blöcken. Ohne IDEAL könnte ich mir das proggen überhaupt nicht mehr vorstellen !! *Edit: danke Holzchopf.. sehr peinlich ![]() |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Sa, Dez 10, 2011 0:25, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bevor du mit dem Rewrite beginnst: Überleg' dir gut, was alles schief gelaufen ist. Dann kannst du die Fehler von Anfang an vermeiden.
Und zu Dottakopfs Tipp möchte ich noch hinzufügen: Die alternative IDE heisst IDEal und kann auf fungamesfactory heruntergeladen werden. Was heisst da kann? Sollte. Nein, muss! Ohne IDEal macht doch Programmieren in BlitzBasic gar keinen Spass ![]() mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Öffne mein Projekt mal mit der Standart IDE, dann siehste das ich IDEal benutze ![]() ![]() Ich halte mich jetzt einfach Schlicht&Weg an den Aufbau den Dottakopf mir gepostet hat. Ich denke so wird das ganze viel übersichtliger und hat mehr Sinn. |
||
Mit freundlichen Grüßen: GearTechDE |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group