Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 |
1>c:\users\nowakowski\documents\visual studio 2008\projects\spiele programmierung\erstes2dspiel\erstes2dspiel\erstes2dspiel.h(59) : warning C4244: 'Initialisierung': Konvertierung von 'int' in 'float', möglicher Datenverlust 1>c:\users\nowakowski\documents\visual studio 2008\projects\spiele programmierung\erstes2dspiel\erstes2dspiel\erstes2dspiel.h(60) : warning C4244: 'Initialisierung': Konvertierung von 'int' in 'float', möglicher Datenverlust |
C-/C++-Quelltext |
|
1 |
String.GetPosition(); |
C-/C++-Quelltext |
|
1 2 3 4 |
if(x&&y==xm&&ym) { blabla } |
C-/C++-Quelltext |
|
1 2 |
float mouseX = static_cast<float>(input.GetMouseX()); float mouseY = static_cast<float>(input.GetMouseY()); |
C-/C++-Quelltext |
|
1 2 3 |
sf::Vector2f positon = String.GetPosition(); if(mouseX >= position.x) // ... |
C-/C++-Quelltext |
|
1 |
FloatRect GetRect () const // Aus der Dokumentation |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//Programm-Schleife while(Window.IsOpened()) { sf::Event Event; const sf::Input& Input=Window.GetInput(); sf::Vector2f stringposition=String.GetPosition(); while(Window.GetEvent(Event)) { if(Event.Type==sf::Event::Closed) { Window.Close(); } if(Input.IsKeyDown(sf::Key::Escape)) { Window.Close(); } if(Input.IsMouseButtonDown(sf::Mouse::Left)) { float mousex=static_cast<float>(Input.GetMouseX()); float mousey=static_cast<float>(Input.GetMouseY()); if(mousex==stringposition.x && mousey==stringposition.y) { Window.Close(); } } } Window.Clear(sf::Color::Black); Window.Draw(Sprite); Window.Draw(String); Window.Display(); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nicorotom« (25.05.2010, 11:50)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
// Wie du die Mausposition bekommst, weißt du ja jetzt, hoffe du hast zumindest die Sache mit dem casten verstanden :P // So fragst du die Stringposition inklusive der Breite ab: sf::FloatRect stringRect = String.GetRect(); // Kollisionsabfrage: // (Left = normale Position des Strings; Right = Position am Ende des Strings) // (Top = normale Position des Strings; Bottom = Position am unteren Ende des Strings) if(mouseX >= stringRect.Left && mouseX <= stringRect.Right && mouseY >= stringRect.Top && mouseY <= stringRect.Bottom) |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//Programm-Schleife while(Window.IsOpened()) { sf::Event Event; const sf::Input& Input=Window.GetInput(); sf::Vector2f stringposition=String.GetPosition(); while(Window.GetEvent(Event)) { if(Event.Type==sf::Event::Closed) { Window.Close(); } if(Input.IsKeyDown(sf::Key::Escape)) { Window.Close(); } if(Input.IsMouseButtonDown(sf::Mouse::Left)) { float mousex=static_cast<float>(Input.GetMouseX()); float mousey=static_cast<float>(Input.GetMouseY()); if(mousex==stringposition.x && mousey==stringposition.y) { Window.Close(); } } } Window.Clear(sf::Color::Black); Window.Draw(Sprite); Window.Draw(String); Window.Display(); } |
Das ist keine richtige Kollisionserkennung. Du überprüfst nur ob der Cursor direkt auf dem x und dem y Punkt ist, dass heißt das würde nur bei einem einzigen Punkt auslösen. Du musst mit der Funktion getRect dir auch noch die Höhe und die Breite der Schrift holen und das dann damit machen, so wie es in dem Code von -insane- steht.Zitat
if(mousex==stringposition.x && mousey==stringposition.y)
C-/C++-Quelltext |
|
1 2 3 |
sf::FloatRect Stringwidth=String.GetRect(); float Stringwidth2=Stringwidth.GetWidth(); String.SetPosition(1024/2-Stringwidth2/2,768/2); |
C-/C++-Quelltext |
|
1 |
MouseX>=StringPosition.Left && MouseX<=StringPosition.Right && MouseY>=StringPosition.Top && MouseY<=StringPosition.Bottom |
C-/C++-Quelltext |
|
1 |
MouseX>=StringPosition.Left && MouseX>=StringPosition.Right && MouseY>=StringPosition.Top && MouseY>=StringPosition.Bottom |
C-/C++-Quelltext |
|
1 |
1>LINK : C:\Users\Nowakowski\Documents\Visual Studio 2008\Projects\Spiele Programmierung\Erstes2dSpiel\Debug\Erstes2dSpiel.exe wurde nicht gefunden oder beim letzten inkrementellen Linkvorgang nicht erstellt; vollständiger Link wird durchgeführt. |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Nicorotom« (25.05.2010, 12:26)
Zitat
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 // Wie du die Mausposition bekommst, weißt du ja jetzt, hoffe du hast zumindest die Sache mit dem casten verstanden :P // So fragst du die Stringposition inklusive der Breite ab: sf::FloatRect stringRect = String.GetRect(); // Kollisionsabfrage: // (Left = normale Position des Strings; Right = Position am Ende des Strings) // (Top = normale Position des Strings; Bottom = Position am unteren Ende des Strings) if(mouseX >= stringRect.Left && mouseX <= stringRect.Right && mouseY >= stringRect.Top && mouseY <= stringRect.Bottom)
Stell dir das einfach mal vor.Zitat
MouseX>=StringPosition.Left && MouseX>=StringPosition.Right && MouseY>=StringPosition.Top && MouseY>=StringPosition.Bottom
Werbeanzeige