Hi,
Ziel ist es, daß sich das Objekt (ownship.x, ownship.y) zur Maus (mx, my) hin bewegt. Dabei hole ich mir den Winkel (phi) zwischen den beiden.
Was ist hier falsch:
pos_x = mx - ownship.x
pos_y = my - ownship.y
phi = ATAN(pos_y, pos_x)
move_x = (SIN(phi) * ownship.speed) * t
move_y = (COS(phi) * ownship.speed) * t
INC ownship.x, move_x
INC ownship.y, move_y
GLG
W.
Hi WPShadow,
Du kannst ja mal in meinem 2DEntitySystem gucken, wie ich es gelöst habe. ;)
http://www.glbasic.com/forum/index.php?topic=8242.0
Cheers
Kann man den Winkel zwischen Start- und zielkoordinate nicht wie folgt berechnen?
winkel = ATAN(pos.y - mouse.y, pos.x - mouse.x)
Ok, einen Teil der Fehler habe ich raus gebracht, aber leider nicht alles...
pos_x = mx - ownship.x
pos_y = my - ownship.y
phi = 360 + ATAN(pos_y, pos_x)
e_x = ABS(pos_x)
e_y = ABS(pos_y)
entfernung = SQR((e_x * e_x) + (e_y * e_y))
PRINT entfernung, 0, 20
PRINT phi, 0, 40
IF entfernung > 1
move_x = (COS(phi) * ownship.speed) * t
move_y = (SIN(phi) * ownship.speed) * t
ENDIF
INC ownship.x, move_x
INC ownship.y, move_y
ownship.x = INTEGER(ownship.x)
ownship.y = INTEGER(ownship.y)
Geht das hier nicht?
//das hier mal umdrehen ganz oben?
pos_x = ownship.x - mx
pos_y = ownship.y - my
Nö, hat leider nichts gebracht!
Was genau willst Du denn jetzt überhaupt noch wissen?
Die Entfernung oder den Winkel zur Maus? :D
Mein Ziel ist es eine saubere Bewegung zur Maus hin zu bekommen. Komischerweise bewegt sich das Ganze aber nicht sauber.
Das ist eigentlich alles, was ich möchte...
Bitteschön! :)
GLOBAL x#=100
GLOBAL y#=100
GLOBAL angle#=0
GLOBAL speed#=2
GLOBAL mx#,my#,b1,b2
SETSCREEN 640,480,0
WHILE TRUE
PRINT mx,10,10
PRINT my,10,20
LimitMouse()
DRAWRECT mx,my,32,32,RGB(255,0,0) // Mouse#
DRAWRECT x,y,32,32,RGB(255,255,255) // Object
MoveObjectToMouse()
SHOWSCREEN
WEND
FUNCTION LimitMouse:
MOUSESTATE mx, my,b1, b2
IF mx<0 THEN mx=0
IF mx>640-32 THEN mx=640-32
IF my<0 THEN my=0
IF my>480-32 THEN my=480-32
SETMOUSE mx, my
ENDFUNCTION
FUNCTION MoveObjectToMouse:
angle = ATAN(my - y, mx - x)
x=x+COS(angle)*speed
y=y+SIN(angle)*speed
ENDFUNCTION
In Deinem Code müsste es dann wohl heißen:
phi = ATAN(mouse_y - pos_y, mouse_x - pos_x)
Klasse, hat funktioniert! Danke sehr!
Irgendwo hatte ich einen Denkfehler drin...
Hauptsache es funktioniert! :booze: Nochmals danke!!
Quote from: WPShadow on 2012-Aug-09
Klasse, hat funktioniert! Danke sehr!
Irgendwo hatte ich einen Denkfehler drin...
Hauptsache es funktioniert! :booze: Nochmals danke!!
*HUST* Wie so oft */HUST* :D
Hey,
du solltest am Besten wissen, daß ich nicht sonderlich gut bin... in... Mathe... tja... *hust*
Hab heute in Mathe auch vermutlich auch die Klausur versemmelt, also... Tja... Was soll ich sagen... :giveup:
Macht doch nix :)
Bin in Mathe mit SIN und COS und co auch net so wirklich gut !
Aber nur in Mathe!
in GLBasic bist du mit SIN und COS gut. :good:
Ich mach halt solange bis es geht :D
Das kenne ich nur zu gut. :good:
Ich eigentlich auch, aber leider funktioniert das bei Mathe nicht. Da gibt es einen klassischen Ablauf:
1. Versuch: es funktioniert halbwegs
2. Versuch: es wird schlechter
3. Versuch: massiver Rechenfehler
4. Versuch: ich muß es auskommentieren, sonst bewegt sich da nichts mehr oder es landet außerhalb des Bildschirms
5. Versuch: wiederherstellen des ersten Versuchs...