Du bist nicht angemeldet.

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

11

25.10.2011, 14:08

Ich habe immer noch nicht den Fehler gefunden, es wäre nett wenn mir jemand einen kleinen "da ist das Problem" Schubser geben
könnte oder mir nochmal für dumme erklärt wie ich genau vorgehen muss, denn so langsam verzweifel ich... :|

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

12

25.10.2011, 16:28

Und so wirklich hilft mir das jedoch bei meinem Problem nicht weiter... ^^

und ermöglichst es jeden, der C++ beherrscht, deinen Code zu verstehen.

Ich glaub du verstehst den Code auch besser. Ausserdem hilft es uns dir zu helfen.
Ich hab ja aber oben geschrieben für was die Bezeichner stehen... :P

Also sollen wir uns die Mühe machen, ständig nachzuschauen welcher Bezeichner für was steht?

Mir persönlich sind keine Kommentare lieber als unnötige. Gewöhn dich lieber um^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

13

25.10.2011, 17:23

Ok, vielleicht hast du ja recht... :P
So besser: Der Quelltext? :)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

14

25.10.2011, 18:13

C-/C++-Quelltext

1
2
3
Mouse.SetPosition(App.ConvertCoords( 
                              App.GetInput().GetMouseX() - (Mouse.GetSubRect().GetWidth() / 2),
                              App.GetInput().GetMouseY() - (Mouse.GetSubRect().GetHeight() / 2)));

Du verwendest GetSubRect falsch. Benutz lieber GetSize, sonst kriegst du später Probleme.
Aber das hat nichts mit dem Fehler zutun.

Der Fehler kann nur hier liegen.(den hätte ich eigentlich schon früher sehen können :/)

C-/C++-Quelltext

1
Item.SetPosition(Hand.TransformToGlobal(Hand.GetPosition()));

Du solltest TransformToGlobal nur lokale Positionen übergeben. Die kannst du z.b. mit Paint herausfinden, indem du mit der Maus über die Stelle fährst.

Zitat

die Position des Schwertes an sich auf der globalen Position der Hand liegt(genauer: Die Stelle an der das Schwert festgehalten werden soll)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

15

25.10.2011, 20:20

Es funktioniert immer noch nicht... ;(

C-/C++-Quelltext

1
2
//Setze die Position des Items am Ende der Hand (Hand.GetSize().x)
Item.SetPosition(Hand.TransformToGlobal(sf::Vector2f(5, 25)).x + Hand.GetSize().x, Hand.TransformToGlobal(sf::Vector2f(5, 25)).y);

Das Bild des Items ist 97x49 Pixel groß, der Griff liegt bei 5, 25 das sagt mir jedenfalls Paint, das einzige was durch diese Code Änderung
passiert, ist das bei Rotation der Hand das Item sich im Kreis dreht, der Radius des Kreises in dem sich das Item dreht ist nicht sehr groß, es ist
also in der Nähe der Hand, bei einem bestimmten Drehungs Grad der Hand landet das Item auch perfekt auf ihr... Nur ist das halt
nicht das gewünschte Ergebnis... :(

Hab auch ein bisschien an den Werten rum gespielt, aber so wirklich Erfolg hatte ich nicht... und das ich nichts
näheres zu diesem Thema über Google finde, verwirrt mich.. :|

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

16

25.10.2011, 20:34

Erklär ichs wirklich so schlecht? :(
Du musst nur das "Ende der Hand" übergeben. 5|25 sollte das Center des Items sein. Das "Ende der Hand" wäre aber Hand.GetSize().x|Hand.GetSize().y/2.

Stell dir doch mal vor was da passiert. Weißt du was das Center und TransformToGlobal/Local macht?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

17

25.10.2011, 20:55

Sagt dir die Relativitätstheorie was? Die sagt, dass sich etwas relativ zu einem Objekt bewegt. Bei der Rotation ist das ähnlich. Das Item soll sich relativ zur Hand drehen.
UND dieses relative Objekt, diesen Punkt, zu welchem sich das Item relativ drehen soll, der wird an das Ende der Hand gesetzt.
Heißt, wie NachoMan es schon sagte, du setzt den Punkt auf die Hand bzw. auf das Handende. Wenn du den Sprite so rotierst, ohne SetCenter, dann dreht er sich vorzugsweise um den Punkt in der oberen linken Ecke, 0|0 eben. Mit SetCenter änderst du diesen Punkt, wie schon erwähnt. Setze ihn doch mal aus Spaß in die Mitte und an andere Orte und rotiere den Sprite dann, dann merkt man es schön. Gerade wenn man den Punkt noch mit einem kleinem Rechteck markiert.

MfG
Check

18

26.10.2011, 15:55

Ich bin euch sooo verdammt dankbar, das glaubt ihr nicht... ^^
Jetzt funktioniert es und das aller aller schönste dadran ist das ich es sogar verstanden habe... ^^
Vielen vielen Dank ;( *freudenträne*

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

19

26.10.2011, 16:51

Frag das nächste mal bitte was die vorgeschlagenen Methoden machen, wenn du es nicht weißt. Wenn ich nicht davon ausgehe, dass du es weißt oder fragst muss ich jedes mal nen riesen Vortrag schreiben.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige