Objekt mit Maus bewegen

Previous topic - Next topic

Shogun

Hallo alle zusammen,
würde mich freuen wenn mir jemand bei folgendem Problem helfen kann. Ist zwar absolut Basic und ich sollte sowas schon können, dennoch komme ich nicht weiter.
Also folgender Code:

entfernung_x = (mx - tankx-40)*0.1
entfernung_y = (my - tanky-20)*0.1

IF mb1 = TRUE
tankmoving = true
tankx=tankx + entfernung_x
tanky=tanky + entfernung_y
elseif mb1 = false
tankmoving = true
tankx=tankx + entfernung_x
tanky=tanky + entfernung_y
endif
if mb1=false and tankmoving = false
tankx=tankx
tanky=tanky
endif

Also, am Anfang soll das Sprite stehen, dann drücke ich button und lasse ihn wieder los und das Sprite soll sich zum Ziel bewegen.
Also die Bewegung ist korrekt, nur mit dem Mausbutton loslassen klappt nicht.

Ich habe glaube ich alle Varianten mit If, Elseif, Else, true and false probiert, dennoch klappt es nicht so wie es soll.
Bin für jede Hilfe dankbar.



backslider

Hi,

Ich verstehe deine Frage nicht so ganz. Kann es sein, dass du am Ende der ersten Schleife (if mb1 = true) statt endif am Ende nen "else  tankmoving = false endif"
schreiben möchtest?  :)

Shogun

Danke erstmal,
das mit Else habe ich auch probiert, geht nicht.
Nochmal zur Frage, ich möchte einfach sprites mit der Maus bewegen. Also beim start steht das Sprite, dann bewege ich die Maus, dann drücke ich einen Button und das Sprite soll sich bewegen. Die Formel die ich benutze ist richtig, die Bewegung funktioniert. Nur muss ich entweder den Button gedrückt halten um auf die Koordinaten zu kommen oder das sprite klebt an der Mausposition fest ohne zu drücken.
Wenn ich mit größer, kleiner arbeite geht es, also if mx<tankx, if my kleiner tanky geht es. Aber ich würde es lieber mit der obigen Formel machen.
Wenn du Lust hast kannst du es ja mal probieren.

monono

Hi,
Falls ich das ganze richtig verstanden habe, und du willst nicht, dass das Sprite der Maus folgt, vielleicht so:
Code (glbasic) Select

tankx= 100
tanky = 100
zielx = tankx
ziely = tanky

tankmoving =FALSE

WHILE KEY(01)=FALSE

MOUSESTATE mx, my, mb1, mb2
SYSTEMPOINTER  TRUE

entfernung_x = (zielx - tankx-40)*0.1
entfernung_y = (ziely - tanky-20)*0.1

IF mb1 = TRUE AND tankmoving = FALSE
tankmoving = TRUE
zielx = mx
ziely = my
ENDIF

IF mb1= FALSE THEN tankmoving = FALSE

tankx=tankx + entfernung_x
tanky=tanky + entfernung_y


DRAWSPRITE 1, tankx,tanky
SHOWSCREEN

WEND


Wenn das Sprite sich erst bewegen soll wenn du die Taste loslässt musst du die in die if Anweisung "IF mb1= FALSE THEN tankmoving..." die "tankx=.." "tanky=.." Zeilen darunter auch mit rein stecken.

Shogun

Danke für deine Antwort, so geht es. naja ganz soweit weg war ich ja nicht.