Kollisionen ungenau etc... Win7
Übersicht

![]() |
M0rgensternBetreff: Kollisionen ungenau etc... Win7 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Ich hab ein kleines Problem: Undzwar sind meine Kollisionen, die vorher relativ genau waren (Kollisionsrechtecke mit RectsCollide) auf einmal ungenau (ich sehe, dass die beiden Rechtecke sich berühren aber nichts passiert). Außerdem wird mein Level (scrollend) nicht mehr so gezeichnet wie vorher. Aber an dem Code dafür hab ich wirklich gar nichts geändert. Außerdem werden nicht immer alle Bilder gezeichnet. z.B.: ich starte das Spiel und die Wiese im vordergrund wird gezeichnet. Ich starte es neu und sie wird nicht mehr gezeichnet. Das ist alles seit ich Windows 7 habe. Gibts vielleicht aktuelle Updates oder so? Ich bräuchte da echt dringend Hilfe. Wäre echt nett wenn jemand da was wüsste. Lg, M0rgenstern |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mich recht erinnere, sind das Dinge, die direkt von der GPU "berrechnet" werden.
Welche Grafikkarte hast du denn? Welchen Treiber? Tritt das Problem auch bei anderen Blitzbasic-Programmen auf? Tritt das Problem auch bei anderen DirectX-7-Anwendungen auf? Grüße, Smily |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, Grafikkarte ist die Geforce 8600 Gs, Treiber hab ich erst vor zwei Tagen aufn neusten Stand gebracht.
Ich hab jetzt ein paar meiner anderen Programme durchgetestet und da funktioniert alles super. Aber ich hab an dem Code fürs Scrolling echt nix geändert und meine Kollsionsrechtecke lass ich extra anzeigen um es zu überprüfen. Außerdem zeigt er ein bestimmtes Bild manchmal an und manchmal eben nicht. Ich hab noch keien anderen DirectX7 Programme getestet. Aber BB (B3D) funktioniert ansonsten (mit und ohne zusätzliche libs wie Draw3D) gut. Hab bei anderen Programmen jetzt noch keine Fehler festgestellt. Lg, M0rgenstern |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Grafikkarte ist die Geforce 8600 Gs
Du armer, eine so alte Geforce und dann noch eine GS ... Hast du es schonmal in exe form versucht, kompatibilitäs modus, alter treiber, Virenschutz aus? Welche Programme sind immer an? Ansonsten, kann ich dir nur ans Herz legen, eine ATI zu kaufen, denn (ich persönlich jedenfalls) hatte Probleme mit BB und Geforce (aber der 8000 er reihe) |
||
It's done when it's done. |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
RectsOverlap is eine recht simple IF-Abfrage und die CPU würde im Traum nicht daran denken, etwas derart simples zur GPU zu schicken. Meiner Meinung nach hat das also herzlich wenig mit der Grafikkarte zu tun. Und da andere Programme wohl noch funktionieren, wird er einfach was falsch machen und sich irren, nix geändert zu haben. Aber er kann natürlich auch erst ne ATI kaufen. Kann die HD5770 empfehlen. ![]() |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich habs mit kompatibilitätsmodus versucht, mit der Exe, hab mein Virenprog ausgeschaltet.
@Pummelie: Alter Treiber von was? Warum muss es eigentlich an der GraKa liegen? Es ist immernoch die gleiche wie vor win7. Ich habs hier mal hochgeladen, vielleicht liegt ja gar nicht an meinem Pc. Wäre echt nett wenn jemand mal drüber gucken könnte wies bei ihm aussieht: www.siliziumbrain.de/downloads/Tanz.zip Also, Am Anfang sollte unten eine Wiese und auch schon der Himmel im Hintergrund sein. Danach zwei verschiedene Zäune. Die Wiese ist das was er immer nur ab und zu malt. Lg, M0rgenstern |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht mir nach einem flipping-Problem aus. Ich seh nen Kürbis auf Schwarzem Hintergrund. Zu Beginn ist eine grüne Fläche eingezeichnet. Sobald ich das Fenster verschiebe verschwindet es.
Sollte sonst noch was passieren? Und warum reichst Du deine Includes mit? |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry ist beim kopieren reingerutscht.
Ah, sorry.. Das ist noch sone Sache... Da steht "Enter drücken zum starten" nicht, das könnte aber auch an meinem Code liegen. Sorry.. um zu starten musst du enter drücken. Steuern kann man mit den Pfeiltasten und schießen mit der Leertaste. Lg, M0rgenstern |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne genaueren Code keine ahnung, aber auf mich wirkt wie ein Flipping-Problem- teils verschwindet auch der Hintergrund. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einmal der Code der das Level zeichnet:
Code: [AUSKLAPPEN] Verschiebung# = Verschiebung# + 1 ;Das Level bewegen
If Verschiebung# >= (GraphicsWidth()) Then Verschiebung# = 0 SchiebNr = SchiebNr + 1 EndIf If SchiebNr > 3 Then SchiebNr = 0 SetLevel() DrawBlock Himmel, GraphicsWidth()/2-Verschiebung#, GraphicsHeight()/2 DrawBlock Himmel, (GraphicsWidth()+(GraphicsWidth()/2))-Verschiebung#, GraphicsHeight()/2 ;Text 100, 100, SchiebNr ;Text 100, 200, Verschiebung# DrawImage Bild1, GraphicsWidth()/2-(Verschiebung#), GraphicsHeight()/2 DrawImage Bild2, (GraphicsWidth()+(GraphicsWidth()/2))-(Verschiebung#), GraphicsHeight()/2 End Function Und die Funktion SetLevel() die aufgerufen wird: Code: [AUSKLAPPEN] Function SetLevel()
If SchiebNr < 1 Then Bild1 = Wiese Bild2 = ZaunM2 EndIf If SchiebNr = 1 Then Bild1 = ZaunM2 Bild2 = ZaunM1 EndIf If SchiebNr = 2 Then Bild1 = ZaunM1 Bild2 = ZaunM2 EndIf If SchiebNr = 3 Then Bild1 = ZaunM2 Bild2 = Wiese EndIf End Function Das kuriose ist: Das läuft ja alles über die Bildschirmbreite etc und daran hab ich nix mehr geändert. Und die Auflösung ist immernoch die gleiche. Ich kapiers einfach nicht. An der Rechnung hab ich gar nichts verändert. Hier ist auch noch der erste Teil der Hauptschleife, warum "Enter drücken zum Starten" nicht angezeigt wird ist mir auch ein Rätsel: Code: [AUSKLAPPEN] Repeat
WaitTimer(FTimer) Cls Select Game_State Case 1 ;Das "Menü" DrawBlock Himmel, GraphicsWidth()/2, GraphicsHeight()/2 DrawImage Wiese, GraphicsWidth()/2, GraphicsHeight()/2 DrawImage Spieler\Image2, Spieler\XPos#, Spieler\YPos#+38 DrawImage Spieler\Image, Spieler\XPos#, Spieler\YPos# Text GraphicsWidth()/2, GraphicsHeight()/2, "Enter drücken zum Starten", 1, 1 If KeyDown(28) Then LevelStart = MilliSecs() LevelTime = 30000 GegnerStart = MilliSecs() Game_State = State_Start EndIf ;/ ;dann der rest an case... End Select Flip 0 Until Beenden = 1 Lg, M0rgenstern EDIT: Wenn ihr von irgendwas noch mehr code braucht, dann sagt einfach bescheid. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohne den code genauer anzusehen, wäre folgendes eine mögliche lösung
Du schreibst evtl: Rect verschieben Rect anzeigen Kollisionsprüfung bzw Kollisionsprüfung Rect verschieben Rect anzeigen bzw Rect anzeigen Kollisionsprüfung Rect verschieben Wenn eins dieser Sachen zutrifft, verschiebe Kollisionsprüfung zwischen Rect verschieben und Rect anzeigen sodass Rect verschieben Kollisionsprüfung Rect anzeigen in dieser Reihenfolge auftritt... |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs in dieser Reihenfolge.
Erst bewege ich die Gegner (und somit die Rechtecke), dann prüfe ich die Kollision und dann zeichne ich alles. Lg, M0rgenstern EDIT: Sorry, sehe grade dass ich ganz oben geschrieben habe es sei rectcollide, aber ich meinte RectsOverlap. Aber ich glaube nicht, dass das so viel utnerschied macht. Das sieht bei mir so aus: Code: [AUSKLAPPEN] If RectsOverlap((Gegner\XPos# - (ImageWidth(Gegner\Image\Image)/2.5)), (Gegner\YPos# - (ImageHeight(Gegner\Image\Image)/2.5)), (ImageWidth(Gegner\Image\Image)/1.3), (ImageHeight(Gegner\Image\Image)/1.3), (Schuss\XPos#-(ImageWidth(Schuss\Image\Image)/4)), (Schuss\YPos#-(ImageHeight(Schuss\Image\Image)/4)), (ImageWidth(Schuss\Image\Image)/2), (ImageHeight(Schuss\Image\Image)/2)) Then
Lg, M0rgenstern |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Rect (Gegner\XPos# - (ImageWidth(Gegner\Image\Image)/2.5)), (Gegner\YPos# - (ImageHeight(Gegner\Image\Image)/2.5)), (ImageWidth(Gegner\Image\Image)/1.3), (ImageHeight(Gegner\Image\Image)/1.3)
Rect (Schuss\XPos#-(ImageWidth(Schuss\Image\Image)/4)), (Schuss\YPos#-(ImageHeight(Schuss\Image\Image)/4)), (ImageWidth(Schuss\Image\Image)/2), (ImageHeight(Schuss\Image\Image)/2) hast du schon gemacht oder? Also einfach man wirklich alles kopieren und anzeigen.. evtl ist auch ein /3.4342 falsch oder so |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab ja oben schon beschrieben, dass ich sehe, dass die Rechtecke sich berühren bzw überlappen.
Also ich hab das rect mit genau den gleichen Werten schon eingefügt. An sonsten könnte ich ja nicht mit Sicherheit sagen, dass die Kollision nicht richtig abläuft. Der download den ich hier reingestellt habe zeigt das auch, da ist nämlich im Moment alles so wies bei mir ist. Lg, M0rgenstern EDIT: Also, das Kollisionsproblem ist jetzt gelöst. Ich habe statt rectsoverlap Imagesoverlap genommen und das funktioniert bestens. Das Problem ist immernoch dass das SCrolling nicht ganz funktioniert. Den Code hab ich ja geschickt. Hab ich die vielleicht nen Fehler in der Berechnung drin? Lg, M0rgenstern |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry für den Doppelpost, aber ich will dass die admins drauf aufmerksam werden!
Könnte das mal bitte jemand verschieben in Begginer's Corner oder so? Ich glaube es gehört nicht mehr hier hin. Scheint eher sowas wie ein Compilerproblem zu sein. Mir ist folgendes aufgefallen: Code: [AUSKLAPPEN] Case 1
;Das "Menü" DrawBlock Himmel, GraphicsWidth()/2, GraphicsHeight()/2 DrawImage Wiese, GraphicsWidth()/2, GraphicsHeight()/2 DrawImage Spieler\Image2, Spieler\XPos#, Spieler\YPos#+38 DrawImage Spieler\Image, Spieler\XPos#, Spieler\YPos# Text 10, 10, " " Text 100, 50, "Erfahrung: " + Spieler\Erfahrung + " / " + (100*(Spieler\Level/1.7)) Text 100, 100, "Level: " + Spieler\Level Text 300, 50, "Geld : " + Spieler\Geld Text 220, 100, "Energie: " + Spieler\Energie Text 512, 384, "Enter drücken zum Starten", 1, 1 Ihr könnt sehen, dass bei den Textbefehlen einer dabei ist, der im Prinzip nichts anzeigt. Wenn ich den auskommentiere oder rauslösche dann wird der danach nicht angezeigt. Ich habs ausprobiert. Beim Spielstart (also wenn sich noch nichts bewegt) werden nicht alle Textbefehle angezeigt, sondern immer erst ab dem zweiten. Also der erste wird nie angezeigt. Außerdem ist das Level selbst nicht von der Verschiebung betroffen sondern nur der Himmel im Hintergrund, das aber genauso gesteuert wird. Wie gesagt, sorry. EDIT: Es lag daran, dass ich das Programm im Fenstermodus ausgeführt hatte. Im Vollbildmodus gehts. Das einzige was immernoch nicht funktioniert ist das mit dem Text Befehl. Aber das verschieben geht jetzt (auch wenns vorher im Fenstermodus ging, aber egal). Vielen Dank für eure Bemühungen. Lg, M0rgenstern |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group