Kollision funzt net!!
Übersicht

DarrenBetreff: Kollision funzt net!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey leude!
ich habe folgenden code: Code: [AUSKLAPPEN] Global b_versch = LoadImage("gfx/buttonversch.bmp")
Global b_drehen = LoadImage("gfx/buttondrehen.bmp") While... ;code DrawImage b_drehen,30,724 DrawImage b_versch,100,724 If on_click(1,b_drehen,30,724) = 1 Then bewmod = 1-bewmod; <<<---- das funktioniert End If If on_click(1,b_versch,100,724) = 1 Then bewmod = 1-bewmod; <<<---- das nicht End If ;code Wend Function on_click(taste,bild,bildx,bildy) If ImagesOverlap(mauszeiger_s,mx,my,bild,bildx,bildy) = 1 And (MouseHit(taste)) = 1 Return 1 Else Return 0 End If End Function wenn ich jetzt auf das bild b_drehen klicke wird der befehl audgeführt. bei dem bild b_versch nicht warum??? es ist doch die selbe funktion. ich sollte vieleicht hinzufügen dass das alles im 3dmodus passiert. THX für hilfe ich bin schon kurz vorm GAU |
||
MFG Darren |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ich denke der Fehler liegt an der Mousehit Abfrage in der Funktion. Ich habe mir erlaubt, den Code etwas zu ändern. So sollte es in etwa funktionieren: Code: [AUSKLAPPEN] ;Global b_versch = LoadImage("gfx/buttonversch.bmp") ;Global b_drehen = LoadImage("gfx/buttondrehen.bmp") Graphics 640,480,16,2 Global b1 = CreateImage(40,40) SetBuffer ImageBuffer(b1) Color 255,0,0 Rect 0,0,40,40 Global b2 = CreateImage(40,40) SetBuffer ImageBuffer(b2) Color 255,255,0 Rect 0,0,40,40 SetBuffer BackBuffer() Global mhit Repeat Cls ;code mhit = MouseHit(1) DrawImage b1,30,100 DrawImage b2,100,100 If on_click(1,b1,30,100) = 1 Then Text 0,0,"Nummer 1" End If If on_click(1,b2,100,100) = 1 Then Text 0,0,"Nummer 2" End If ;code Flip Until KeyHit(1):End Function on_click(taste,bild,bildx,bildy) If ImageRectCollide(bild,bildx,bildy,0,MouseX(),MouseY(),1,1) And mhit Return 1 Else Return 0 End If End Function |
||
~ Hey Ho Let's Go ~ |
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey echt fetten dank!!! Es funtioniert!! Aber warum????????? Ich versteht es nicht!! Das ist doch höcht unlogisch | ||
MFG Darren |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Jo, das ist so ne Sache mit dem Mousehit. Wenn du ständig den direkten Syntax Mousehit benutzt, kann BB nur an den Stellen darauf reagieren, wo es zuerst vorkommt. Genauer erklären kann ich das auch nicht ![]() Besser ist es auf jedenfall daher, alle Mouse Sachen in Variablen zu speichern. Zum Beispiel so: Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() Global mx#,my#,mhit1,mdown2 Repeat Cls mx# = MouseX() my# = MouseY() mhit1 = MouseHit(1) mdown2 = MouseDown(2) Flip Until KeyHit(1):End Machst du das wie oben beschrieben, hast du keinerlei Probleme mehr beim Abfragen, ob nun eine Taste gedrückt wurde oder nicht. (Und es ist ja auch ein bisschen kürzer: Anstatt z.B: Code: [AUSKLAPPEN] If ImageRectCollide(bild,bildx,bildy,0,MouseX(),MouseY(),1,1) And mousehit(1) = 1 ;einfach: If ImageRectCollide(bild,bildx,bildy,0,mx#,my#,1,1) And mhit1 ![]() |
||
~ Hey Ho Let's Go ~ |
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hatte es auch vorher schon aber nur mit mousespeed und den positionen aber auf tasten bin ich noch nicht bekommen.....
fetten dank nochmal |
||
MFG Darren |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kein Problem | ||
~ Hey Ho Let's Go ~ |
![]() |
DivineDominion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Const NORMAL = 0
const HIT = 1 const DOWN = 2 const UP = 3 global MLB ;linke Maustaste if MLB = NORMAL if MouseDown( 1 ) then MLB = HIT elseif MLB = HIT if mousedown( 1 ) then MLB = DOWN else MLB = UP elseif MLB = DOWN if not mousedown( 1 ) then MLB = UP elseif MLB = UP MLB = NORMAL endif Wenn du drückst wird in jedem schleifendurchlauf der status verändert - erst HIT (weil erste frame), dann DOWN wenn es so bleibt bzw jeweilt UP, wenn die Drückerei aufhört. Kannst dann in deinem code Code: [AUSKLAPPEN] ... and MLB = HIT
nutzen und hast ein zuverlässiges MouseHit() mit extras ![]() Geht natürlich für jede Maustaste und jede Taste deiner tastatur. So kannst du bei HIT z.b. andere Aktionen ausführen als bei DOWN[/code] |
||
christian.tietze@gmail.com - https://christiantietze.de
macOS |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group