winkelproblem ;-(

Previous topic - Next topic

xverbatim

Code (glbasic) Select


// ------------------------------------------------------------- //
// ---  TITELBILD  ---
// ------------------------------------------------------------- //

SUB Titelbild:

LOADSPRITE "optiongruen.bmp",1
LOADSPRITE "optionrot.bmp",2
LOADSPRITE "startgruen.bmp",3
LOADSPRITE "startrot.bmp",4
LOADBMP "titelbild.bmp"

FOR x=1 TO 111 STEP 2

INC w, 5
    DRAWSPRITE 2,110,105
    DRAWSPRITE 4,110,160
    ROTOSPRITE 2, x,x,w
    SHOWSCREEN

NEXT

KEYWAIT
ENDSUB // TITELBILD



Hallo,

ich habe da irgendwie ein Winkelproblem, ich versuche die ganze Zeit ein Sprite von oben nach unten fliegend rotieren zu lassen und genau auf die Position
110,105 landen zu lassen, irgendwie treffe ich immer voll daneben ;-( Mathe ist nicht gerade meine Stärke ...

weiß jemand, wie ich das genau hinbekomme oder hat evtl. eine interessante flugbahn von oben nach unten auf eben position 110,105; wobei das Sprite aber wieder den normalen Winkel haben sollte...

Bin gerade dabei, mein Titelbild+Button´s für Optionen und Start zu erstellen und möchte, dass die Buttons hereinfliegen/runterfallen, damit das Menü nicht zu langweilig aussieht...


Würde mich über Tipps freuen

Gruß+Danke
Thomas

Quentin

#1
gehört aber eigentlich eher ins Fragen-Forum, aber sei's drum

so könnte man es evtl. machen:

Code (glbasic) Select

GOSUB Titelbild

SUB Titelbild:

DRAWRECT 0, 0, 100, 50, RGB(255, 255, 0) // als Beispielgrafik
PRINT "Rotobutton", 10, 20
GRABSPRITE 0, 0, 0, 100, 50

zielx = 110 // die Zielkoordinaten
ziely = 105

startx = 0  // die Startposition
starty = 0

// je nachdem ob der X-Weg oder Y-Weg größer ist, die Anzahl
// der erforderlichen Schleifendurchäufe errechnen
IF zielx > ziely
count = zielx - startx
ELSE
count = ziely - starty
ENDIF

// Wert, um den der Drehwinkel bei jedem Schleifendurchlauf
// erhöht werden muss
delta_angle = 360 / (zielx - startx)

// hier die Werte berechnen, um die x und y jeweils
// erhöht werden müssen
deltax = (zielx - startx) / count
deltay = (ziely - starty) / count

// jetzt noch die Variablen für die Schleifendurchlauf initialisieren
x = startx
y = starty
angle = 0

// und los gehts
FOR i = 1 TO count
ROTOSPRITE 0, x + i * deltax, y + i * deltay, angle + i * delta_angle
SLEEP 5
SHOWSCREEN
NEXT

KEYWAIT

ENDSUB

xverbatim

Hi,

super, genau so hatte ich mir das gedacht ;-)

dafür hätte ich ja Wochen gebraucht ............
Danke

Gruß
Thomas

Schranz0r

Quote from: Quentin on 2008-Nov-19
gehört aber eigentlich eher ins Fragen-Forum, aber sei's drum

RICHTÖÖÖÖÖÖÖÖÖÖÖÖSCH :D

Move to -> Siehe oben ;)
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