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

1

30.12.2015, 16:01

Spielersteuerung per Maus

Hi, ich habe mich in meinem kleinen Gamegerüst nun soweit vorgearbeitet dass ich beim Steuern des Spielers angelangt bin. Ich will dass wenn ich mit der linken Maustaste iwo auf dem Spielfeld hinklicke soll der Spieler dahingehen. Vector2i sf::Mouse::getPosition, damit ermittle ich die position des Mausklicks. Meine Frage nun: welcher teil in dem Code ist die Variable in dem die Mauskoorfinaten gespeichert sind und wie kann ich machen dass der Player da nicht sofort hinteleportiert wird sondern in einer bestimmten Geschwindigkeit dorthngeht?

cojo2015

Alter Hase

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

2

30.12.2015, 16:41

Das ganze müsstest du in der Player-Klasse machen, oder dort, wo du die Mausposition einliest. Du musst also zuerst die Position von der Maus und dem Spieler vergeleichen und dann den Bewegungsvektor (ich hoffe, dass das der richtige ist ^^) ändern. Anschließend musst du dann die neue Position setzten. Das vorgehen habe ich auch bei einem meiner Spiele implenentiert, um eine Verfolgung der Zombies zu realisieren ;)

3

30.12.2015, 16:51

Die erste Frage erschließt sich mir nicht ganz, das ist halt der, den du auf den Rückgabewert von sf::Vector2i sf::Mouse::getPosition(sf::Window& relativeTo) setzt....
Die zweite Frage allerdings kommt häufiger auf, die Suchfunktion hier im Forum hätte dir sicherlich sehr geholfen. Habe jetzt nicht nachgesehen, aber dazu gibt es bestimmt auch was im Wiki, wenn nicht, mach ich das mal, wenn ich wieder mehr Zeit habe.
Wie dem auch sei, trotzdem möchte ich dir helfern: Das Stichwort lautet Interpolation. Vereinfachen wir das ganze mal und sagen, dass du ein Bild von voller Deckkraft zu totaler Transparenz interpolieren willst. Also von §\alpha_0=255§ zu §\alpha_1=0§. Um diesen Verlauf nun zu kontrollieren hilft die gute alter Prozentrechnung: §\alpha = (1{.}0 - x) \cdot \alpha_1§, wobei §x§ nun der veränderliche Wert ist. Diesen kannst du nun einfach, wie du es möchtest, durch eine beliebige Funktion setzen. Um das nun für zwei Positionen zu machen, machst du die Rechnung einfach zwei mal, eben für jede Vektorkomponente.
Am hilfreichsten ist für dich wohl dann so etwas wie x = (currentTime / sf::seconds(3.f));, dann benötigt der Spieler 3 Sekunden und bewegt sich linear zum Ziel hin. Du kannst aber auch ganz kreativ hierbei werden. :)

MfG
Check

Werbeanzeige