Stop bei colision
Übersicht

niggyBetreff: Stop bei colision |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kann mir einer helfen?
ich wollte einen metroid verschnitt basteln aber ich kriege es nicht hin das man sofort aufhört sich zu bewegen sobald man gegen eine wand kommt kann mir einer helfen? function Function moveleft () samusx = samusx-1 If ImagesCollide(samuslinks, samusx, samusy, frame1, hintergrund1, x2, y2, frame2) Then Goto noleft SetBuffer BackBuffer () DrawImage samuslinks, samusx, samusy Flip DrawImage hintergrund2, x, y DrawImage hintergrund1, x, y .noleft End Function wobei samus die figur ist und samusx und samusy die koordinaten sind |
||
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Gibt es Die Code Tags.
2. Benutz NIE Goto, das bringt nur Ärger. 3. Bitte gewöhn die an deinen Code einzurücken mit [Tab] 3. Zu deinem Problem: Code: SetBuffer BackBuffer () ;Irgendwo am Anfang des Codes global samusx ;Global setzen, sonst hats keine Wirkung repeat cls DrawImage hintergrund2, x, y DrawImage hintergrund1, x, y DrawImage samuslinks, samusx, samusy If ImagesCollide(samuslinks, samusx, samusy, frame1, hintergrund1, x2, y2, frame2)=0 Then samusx = samusx-1 endif Flip until keyhit(1) |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
Roma3ht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ImageCollide ist doch echt langsam. Kuck doch mal die Rob tuts an, da ist ne Kolli abfrage drin und die ist viel schneller. | ||
niggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Roma3ht hat Folgendes geschrieben: ImageCollide ist doch echt langsam. Kuck doch mal die Rob tuts an, da ist ne Kolli abfrage drin und die ist viel schneller.
wenn du mit rob tuts robs blitz basic kurs 2 meinst dann find ich das wenn nicht sag mir was du meinst und das andere funktioniert leider nicht |
||
Roma3ht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja genau den 2. teil meine ich. Wenn du befolgst was rob schreibt, dann hast du in handumdrehen ne Kollisions abfrage. | ||
niggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das hab ich doch hat aber nicht funktioniert | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. |
||
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 |
Roma3ht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir hats geklappt. Dann hast du was falsch gemacht. Schick mal code, ich geh jetz erstma Training. | ||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Abend,
Code: If ImagesCollide(samuslinks, samusx, samusy, frame1, hintergrund1, x2, y2, frame2) Then Goto noleft DrawImage hintergrund1, x, y Das wiederspricht sich. Du macht eine Abfrage an x2 und y2 zeichnest aber an x und y. Mein Tip: Alle Variablen mit Local/Global definieren und ein Kommentar schreiben, was sie bedeuten! Und du solltest diese Reihenfolge beibehalten: 1.Bilder malen 2.Kollision überprüfen 3.Flip() Zudem: - Bilder und Variablen sind nur lokal (siehe hierzu Local) du solltest sie als Global vereinbaren oder gleich auf Funktion verzichten. - Um eine Funktion vorzeitung zu beenden kannst du Return benutzen. (Goto ist oft einfacher, aber wenn die Codes länger werden verliert man den Überblick) - Wenn du ein Bild hast, was du mit Loadimage lädst kannst du bei ImagesCollide als frame 0 angeben. Hoffe es hilft. MFG |
||
niggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: ;set graphics Graphics 800, 600 ;hintergrund Global hintergrund1 = LoadImage("C:\Dokumente und Einstellungen\User\Desktop\blitzbasic\Grafiken\metroid_erstes lvl.bmp") Global hintergrund2 = LoadImage("C:\Dokumente und Einstellungen\User\Desktop\blitzbasic\Grafiken\metroid_erstes level2.bmp") Global samuslinks = LoadImage("C:\Dokumente und Einstellungen\User\Desktop\blitzbasic\Grafiken\samuslinks.bmp") Global samusrechts = LoadImage("C:\Dokumente und Einstellungen\User\Desktop\blitzbasic\Grafiken\samusrechts.bmp") SetBuffer BackBuffer() DrawImage hintergrund2, x, y DrawImage hintergrund1, x, y MaskImage samuslinks, 255, 0, 255 MaskImage samusrechts, 255, 0, 255 MaskImage hintergrund1, 255, 0, 255 DrawImage samuslinks, 600, 373 SetBuffer BackBuffer() DrawImage hintergrund2, x, y DrawImage hintergrund1, x, y ;variabeln Global samusX = 600 Global samusy = 373 ;makes the music levelsound=LoadSound ("C:\Dokumente und Einstellungen\User\Desktop\metroid\metroid_tallon.wav") LoopSound levelsound PlaySound(levelsound) Goto start ;funktionen ;bewegungsfunktionen Function moveleft () If ImagesCollide (samuslinks, samusx, samusy, frame1, hintergrund1, x2, y2, frame2)=1 Then samusx = samusx-1 SetBuffer BackBuffer () DrawImage samuslinks, samusx, samusy Flip DrawImage hintergrund2, x, y DrawImage hintergrund1, x, y EndIf End Function Function moveright () samusx = samusx+1 SetBuffer BackBuffer () DrawImage samusrechts, samusx, samusy Flip DrawImage hintergrund2, x, y DrawImage hintergrund1, x, y End Function .start While Not KeyDown(1) ;bewegungsknöpfe If KeyDown(203) Then moveleft () If KeyDown(205) Then moveright () Wend End ich weiß nich wie ich die bilder jetzt zeigen soll aber hintergrund2 is sowieso egal der wichtige ist hintergrund1 weil es in ihm spielt in einem transparenten bereich[/code] |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dir die Grundkenntnisse aneignen. Arbeite Robs Tutorials nochmal durch.
1. Bilder laden 2. Hauptschleife (While/Wend). Darin 1.Cls 2.Bilder zeichen 3. Kollisionen 3. Flip() 3.Funktionen am Ende des Codes Nehm dir beim lesen des Tuts zeit und tippe alle Codes selber ab. Bitte tu uns den gefallen. Ich steh dir auch gerne persönlich per PM oder ICQ/MSN zur Verfügung. MFG |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group