Trygonomatria | Obliczanie kierunku ruchu wg pozycji kursora w kole

0

Witam.
Tworzę grę i utknąłem na funkcji ruchu :C
Mam koło 200x200 pikseli o środku w pozycji 100x700
I teraz chcę aby wg pozycji kursora na kółku inny obiekt się poruszał, czyli jeśli kursor jest nad środkiem ale blisko środka to obiekt jedzie wolno w górę, jeśli bliżej krawędzi koła to obiekt jedzie szybciej.
I teraz mogę uzyskać cos i sin ale nie wiem jak tego użyć do przemieszczania :/ (obiekt lata nie tam gdzie powinien :C )

var dLine:Number = 100 - FlxG.mouse.x;
if (FlxG.mouse.x > 100)
	dLine = FlxG.mouse.x - 100;
else
	dLine = 100 - FlxG.mouse.x;
					
var eLine:Number = Math.sqrt(Math.pow((FlxG.mouse.x - 100), 2) + Math.pow((FlxG.mouse.y - 700), 2));

var cos:Number = Math.cos(dLine / eLine);
var sin:Number = Math.sin(Math.acos(dLine / eLine));

Kod pisany w actionscript ale to nie ma znaczenia, moje pytanie brzmi jak zmusić obiekt do poruszania się w wyznaczonym kierunku :( ?
Nie umiem sobie z tym poradzić :(
Proszę o pomoc.

0

Masz kółko i jeździsz po nim myszką zatem możesz od środka do położenia kursora wyznaczyć wektor kierunku. Jego długość to może być przeskalowana prędkość i tyle. Chyba że nie zrozumiałem Twojego pytania :)

0

Tak jak kolega wyżej napisał należy obliczyć wektor kierunkowy czyli odjąć od siebie wektory: pozycja kursora (M), środek koła (S). Mając wektor kierunkowy wiemy, w którą stronę ma poruszać się obiekt, brakuje teraz prędkości. Wiemy, że okrąg ma koło 200x200, czyli wynika, że promien = 100. Należy teraz obliczyć długość wektora (l) i sprawdzić czy nie osiągnął maksimum, jeżeli nie to wystarczy pomnożyć przez współczynnik prędkości, czyli im dalej będzie kursor (tym dłuższy wektor), tym szybciej będzie poruszał się obiekt.

<image>Bez tytułu.png</image>

0

ja jeszcze dodam ze zamiast liczyć długość wektora lepiej liczyć kwadrat długości wektora, czyli po prostu x*x + y * y, następnie całość mnożyć przez v/r^2 czyli jezeli chcesz żeby max prędkość wynosiła 20 gdy mysz jest na obwodzie koła to masz 20 / (100 * 100) czyli mnożnikiem jest 20/10000 = 1/500. Dzięki temu nie liczysz niepotrzebnie pierwiastka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1