![]() |
[C# XNA] Kollision nur mit bestimmten 2D Objekt
Hallo,
Ich Bin völlig neu in C# habe vorher immer Visual Basic Programmiert, nun mach ich mit XNA Game Studios ein kleines Spiel ich will das wenn 2 bestimmte 2D Objekte sich berühren der Hintergrund seine Farbe verändert. Das Problem ist der Hintergrund besteht auch aus einer 2D Texture und wenn ich bool collision = true; mache und unten ins Graphics output schreibe if (collision) { spriteBatch.Draw(bg, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight), Color.Green); } dann wird wenn ich debugge sofort der Hintergrund Grün, weil der Hintergrund ja auch eine 2D Texture ist. Wie kann ich es machen das ich mit "if (collision)" nur 2 bestimmte Texturen anspreche ? |
ohne von xna viel ahnung zu haben: versuch doch alle 2d-objekte für die collision funktionieren soll, in einen array o.Ä. zu packen und checke dann bei der abfrage ob die beiden objekte in der liste sind.
|
ok das muss ich ma versuchen hoffe ich bekomm das hin wie gesagt kenn mich eigendlich nicht mit C# aus ist aber zimlich ähnlich wie VB.net
|
Okey ich schaffs nich :O
wie leg ich eine ArrayList an in der 2 2DTexturen sind ? |
In Java gibts ArrayList als vordefinierte Datenstruktur in der Api, vllt auch bei C#.
|
Code:
ArrayList MyTextureList= new ArrayList(); |
Als ergänzung zu Thelvan code:
Code:
ArrayList<Texture2D> MyTextureList= new ArrayList<Texture2D>(); MFG Melfis |
@MetalForLive: ich glaube zu wissen wo dein problem liegt, und zwar, dass du nicht verstehst was du da überhaupt machst! lies dir mal paar tutorials zu xna durch, code beispiele nach, ändere diese! ich persönlich habe schon einiges mit xna erstellt, und finde das wirklich sehr einfach.
du übergibst doch in der draw methode doch u.a. die textur die geändert werden soll!? wo ist das problem? naja viel kann man da nicht mehr sagen, kannst evtl. dein code posten, dann werden wir schlauer! |
ich poste ma den Code
Achso das mit der ArrayList klappt zwar aber ich weiß nicht wie ich sage das die collision nur innerhalb der Liste passieren soll Code:
@testerws Das Problem ist das nur 2 bestimmte Texturen bei Berührung etwas machen sollen und da der Background auch ne 2dtexture ist denkt der pc das bei berürung des BG auch die interaktion kommen soll. |
Die ArrayList hat eine Methode Contains. Bei jeder Kollision könntest du damit prüfen, ob das Objekt sich in der Liste befindet
|
Danke Thelvan
DAS KANN MAN AUCH NETTER SAGEN !!!! Auserdem habe ich erwähnt das ich noch nie etwas mit C# gemacht habe. |
Tut mir leid das ich noch nie mit VB ein Spiel Programmiert habe, weil das ja auch so gut geht O.o
|
Hallooooo
Ihr seit total "patzig" zu mir Und wie es aussieht kann man auch mit XNA ein Spiel Programmieren wobei ich nicht sagen würde "Ohne jegliche Grundlagen" Da VB zimlich ähnlich ist wie C# Ich will auch garnicht weiter drauf eingehen. |
OH MEIN GOTT!! schade dass ich arbeiten war und erst heut abend reinschauen kann, OMG !!!!
MetalForLive, glaube mir (und den anderen) es hat NICHTS, rein garnichts mit vb,c# oder java zu tun, du hast einfach NULL verständnis für die Programmierung! Das ist jetzt nicht böse gemeint, aber lerne erstmal die grundlagen, dann schaue dir den code an, und du wirst mit an sicherheit grenzender wahrscheinlichkeit dich kaputt lachen! |
Zitat:
Ernsthaft, in dem bisschen Code das du gepostet hast sind so viele Fehler drin dass dir hier niemand wirklich helfen kann ohne komplett bei null anzufangen. Das geht bei der gar nicht erst implementierten Kollisionsabfrage los, geht damit weiter dass sich die Spielerfiguren auf unterschiedlich schnellen Rechnern auch unterschiedlich schnell bewegen werden, die Sprites werden unnötigerweise jede Runde zweimal gezeichnet, und schließlich wird dir nach kurzer Zeit der Speicher überlaufen, weil du in jedem Draw() call zwei Texturen in die ArrayList wirfst. Und das waren jetzt nur die gröbsten Dinger. Hör auf die Leute hier und lern erstmal die Grundlagen der Programmierung bevor du dich an Echtzeitanwendungen wie Spiele setzt, das wird sonst im Leben nichts. |
JA mach ich ja jetz
Und auserdem habe ich erfahrung in "Programmierung" nur halt mit Windows FOrms Anwendungen und nicht mit C# XNA das sind 2 verschiedene sprachen und 2 verschiedene ich sag mal "Anwendungen" auserdem gibt es hier im Forum ja wohl keine Regel die besagt das hier keine Anfänger ne Frage Posten dürfen oder ? Es gibt genau so keine Regel die Besagt um hier ein Frage zu Posten muss ich super Programmierer sein und allle möglcihen sachen drauf haben. Danke an alle Helfer ich werde mir jetz n paar Tutorials auf YT ansehen und austesten. das war jetzt mein letztes Wort. |
1.) Windows Forms ist ein schlechter witz.
2.) Wenn du wirklich programmieren könntest, dann würdest du dir 2 Wochen C# dokus angucken und wärst dann auch in der Lage C# zu programmieren. Nicht so gut wie in VB aber akzeptabel. Wenn man eine Sprache kann, kann man alle. Das einzige was dann noch im weg steht ist die Syntax oder sprachspezifisches Gedöns (Wenn man von C# auf C++ umsteigt sind Pointer z.B. sowas sprachspezifisches) 3.) XNA ist keine Sprache. XNA ist ein Framework welches Betriebssystem abhängig die die Programmierung von grafischen Applikationen ermöglicht. Nicht mehr und nicht weniger. 4.) Um Spiele zu programmieren muss man ein akzeptabler Programmierer sein. Auch nach mehreren Jahren macht mich OpenGL echt fertig, weil man sich einiges abgewöhnen und einiges neues angewöhnen muss. Man stößt auf Probleme die man in der normalen Entwicklung von Desktop Apps nicht hat. Keine Grafikframework nimmt einem Arbeit ab. XNA ist da vielleicht ein wenig netter. Aber im Endeffekt musst du trotzdem alles selber machen und ich bin mir relativ sicher, dass auch XNA dir nicht sagen kann, ob sich 2 Texturen berühren wenn du nicht selber eine Bounding Box angibst und die Boxen beider Objecte auf Kollision abfragt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.