Zur Maus hin
Übersicht
BlitzBasic
Allgemein
f L i PBetreff: Zur Maus hin |
Antworten mit Zitat |
|
|---|---|---|
|
Hi,
Ich hatte vor ein Zuma Deluxe - ähnliches Spiel zu proggen. Jedoch hab ich schon innerhalb der ersten 5 Minuten aufhören müssen, denn das Wichtigste an dem Spiel ist dass es ein Bild geben soll was sich immer zum Mauszeiger richten soll, ich weiß nicht welchen Befehl ich benutzen muss, höchstwahrscheinlich ATan2, aber diesen Befehl hab ich noch nie vollständig begriffen. Meine Frage: Wie realisiert man so etwas ? MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
- Zuletzt bearbeitet von f L i P am Fr, Jun 10, 2005 19:02, insgesamt einmal bearbeitet
|
|
Devils Child |
Antworten mit Zitat |
|---|---|---|
|
wenn der mauszeiger immer in der mitte ist, dan rotateimage image, atan2(mousex(), mousey()) |
||
|
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
||
|
|
frigi |
Antworten mit Zitat |
|---|---|---|
|
Du musst mit ATan2() die Position von Figur und Maus verrechnen. Wie genau habe ich jetzt nicht im Kopf, aber mit etwas Probieren kommt man da schnell drauf.
Zu Rotateimage: Berechne die Bilder besser vorher schon. In Echtzeit ist das abnormal langsam. EDIT: ATan2(mx-px,py-my)...denke ich |
||
| frigi.designdevil.de | ||
|
|
Devils Child |
Antworten mit Zitat |
|---|---|---|
|
wenn der mauszeiger nit in der mitte ist muss man halt addieren oder subtrahieren. das beispiel in der cammand reference zeigt dir alllllles |
||
|
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
||
f L i PBetreff: Danke ... |
Antworten mit Zitat |
|
|---|---|---|
|
Erstmal Danke für die Antworten, haben mir schon weitergeholfen, zumindest soweit das ich ne Drehung hinbekommen habe, jedoch nicht die die ich will, der Ursprung scheint falsch zu sein, und ob die Maus was mit dem Ziel zu tun hat weiß ich auch nicht, werde jetzt mal meinen kleinen Code posten und hoffe dass sich jemand die Mühe macht ihn soweit zu modifizieren dass er läuft, als Bild kann alles benutzt werden, meine Maße sind 100*100.
BlitzBasic: [AUSKLAPPEN] AppTitle \"\" MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
|
|
Ctuchik |
Antworten mit Zitat |
|---|---|---|
|
Du benutzt AutoMidHandle falsch!
Das brauchst du nur einmal ganz am Anfang auf True zu setzen, bevor du das Bild lädst! Denn nachdem das auf True gesetzt wurde wird bei allen danach geladenen Bildern automatisch der Bezugspunkt in die Mitte gesetzt! In der Schleife bringt das gar nichts! Ausserdem muss es bei Atan2 glaube ich A=ATan2(MX-PX,MY-PY) heißen, also MY und PY andersrum, bin mir da aber nicht 100% sicher. MfG Ctuchik |
||
|
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
Das bringts auch nicht, vielleicht wäre wie ichs versucht hab zu erklären jemand in der Lage meinen Code nur zu verbessern, denn das hat mir jetzt nichts genutzt. Hab MY und PY vertauscht, kommt auch ne falsche Drehung bei raus, und Automidhandle hab ich auch aus der Schleife geholt (falls das überhaupt nötig sein sollte) ...
MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
hitokiri |
Antworten mit Zitat |
|
|---|---|---|
|
ATan2( y2 - y1, x2 - x1 ) gives the proper orientation for object1.
You can use this angle to select an appropriately rotated image. Notice the reverse order, ATan2( y, x ) rather than ATan2( x, y). ATan2( y, x ) is analogous to ATan( y / x), but covers 360 degrees. nuff said. |
||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
Ich weiß ich müsste daraus jetzt schließen können was zu tun ist, ich tu es aber leider nicht MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
hitokiri |
Antworten mit Zitat |
|
|---|---|---|
|
x und y ist vertauscht bei atan2 also muss es folglich heissen:
y2-y1,x2-x1 bwz: my-py,mx-px ist klar, dass es bei dir eine falsche orientation gibt wenn du wie in deinem code mx-px,my-py machst. |
||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
Okay, also Y zuerst, verstanden, aber es will immer noch nicht, wie stell ich den Ursprung der Drehung und die Mitte des Bildes auf 0,0 ?
AppTitle "" Graphics 400,300,32,0 SetBuffer BackBuffer() Z01=LoadImage("01.png") AutoMidHandle True While Not KeyHit(1) Cls MX=MouseX() MY=MouseY() PX=GraphicsWidth()/2-ImageWidth(Z01)/2 PY=GraphicsHeight()/2-ImageHeight(Z01)/2 DrawImage Z01,PX,PY RotateImage Z01,A A=ATan2(MY-PY,MX-PX) Flip Wend End MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
|
|
Artemis |
Antworten mit Zitat |
|---|---|---|
| Mit ql:MidHandle kann man das für einzelne bilder machen! | ||
hitokiri |
Antworten mit Zitat |
|
|---|---|---|
|
Irgendwie kapiere ich deine frage nicht so ganz.... mit automidhandle=1
wird das bild automatisch immer exakt in seiner mitte angesprochen wenn du das vor dem laden des bildes setzt, also automidhandle true loadimage blublubb dann setzt du es einfach an den punkt graphicswidth/2 , graphicsheight/2 durch das automidhandle ist es damit zentriert in der mitte. so wie du es im moment hast sprichst du dein bild an dem punkt bei einer angenommenen auflösung von 800x600 und 100x100 für dein bild so an: px=800/2-100/2=350 und nicht 450 ! also sprichst du es am linken rand an und nicht in der mitte. py=600/2-100/2=200 also sprichst du es am oberen rand an und nicht in der mitte. px und py bleiben doch gleich, sind doch immer graphicswidth/2 und graphicsheight/2. *total verwirrt* |
||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
Automidhandle true sollte doch alle Bilder in der Mitte ansprechen, tut es aber nicht.
PX=GraphicsWidth()/2 PY=GraphicsHeight()/2 AutoMidHandle True DrawImage Z01,PX,PY Links oben wird angesprochen, auch wenn automidhandle außerhalb der schleife liegt MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
|
|
RallimenSieger des 30-EUR-Wettbewerbs |
Antworten mit Zitat |
|---|---|---|
| AutoMidHandle True muß vor dem laden bzw. vorm erstellen der Grafik stehen! | ||
|
[BB2D | BB3D | BB+]
|
||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
Vor drawimage, aber nach loadimage ?!
fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
hitokiri |
Antworten mit Zitat |
|
|---|---|---|
| vor loadimage nach dem graphics width,height,bla,bla | ||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
soweit so gut, das programm frisst dermaßen speicher, wie mach ich dass es auch in echtzeit zu keinerlei problemen kommt ?!
MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
hitokiri |
Antworten mit Zitat |
|
|---|---|---|
|
das image in 360 drehungen um 0 bis 359 grad in einem dim speichern und dann drawimage imagedim(A).
es ist nicht das speicherfressen bei dir, das es so langsam macht, sondern das rotieren, die berechnung dessen. |
||
f L i P |
Antworten mit Zitat |
|
|---|---|---|
|
Dazu muss ich mich jetzt mit Dims befassen.
Werde das Thema dann wieder ausbuddeln. So, hab es mir sehr sehr viel schwieriger vorgestellt! Habe jetzt das Problem dass ich nicht weiß wie man jetzt jeden Wert abspeichert, Code würde mir helfen, dann kann ich ihn mir nach und nach vorknöpfen. MfG fLiP |
||
| mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen! | ||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group
