falsche Winkel

Previous topic - Next topic

WPShadow

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:

Code (glbasic) Select

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.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

backslider

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

Poetronic

#2
Kann man den Winkel zwischen Start- und zielkoordinate nicht wie folgt berechnen?

Code (glbasic) Select
winkel = ATAN(pos.y - mouse.y, pos.x - mouse.x)
ILI-Blocks, my first game ever - please check it out! http://www.glbasic.com/forum/index.php?topic=8654.0

WPShadow

Ok, einen Teil der Fehler habe ich raus gebracht, aber leider nicht alles...

Code (glbasic) Select


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)

AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

backslider

Geht das hier nicht?
Code (glbasic) Select

//das hier mal umdrehen ganz oben?
pos_x = ownship.x - mx
pos_y = ownship.y - my

WPShadow

Nö, hat leider nichts gebracht!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

backslider

Was genau willst Du denn jetzt überhaupt noch wissen?
Die Entfernung oder den Winkel zur Maus? :D

WPShadow

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...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Poetronic

#8
Bitteschön!  :)

Code (glbasic) Select
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:

Code (glbasic) Select
phi = ATAN(mouse_y - pos_y, mouse_x - pos_x)
ILI-Blocks, my first game ever - please check it out! http://www.glbasic.com/forum/index.php?topic=8654.0

WPShadow

Klasse, hat funktioniert! Danke sehr!

Irgendwo hatte ich einen Denkfehler drin...

Hauptsache es funktioniert!  :booze: Nochmals danke!!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

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
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

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:

AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

Macht doch nix :)
Bin in Mathe mit SIN und COS und co auch net so wirklich gut !
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

backslider

Aber nur in Mathe!

in GLBasic bist du mit SIN und COS gut.  :good:

Schranz0r

Ich mach halt solange bis es geht :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard