Quote: "I'm not able to have the sprite keep its current position AND face upright.
"
You might need some trigonometry here. I wrote a few functions for the UCF project (see sticky on this board) to simplify the process though.
A small example (project attached as well):
rem
rem AGK Application
rem
SetVirtualResolution(GetDeviceWidth(), GetDeviceHeight())
Spr = CreateSprite(LoadImage("Char0001.png"))
X as float = 200.0
Y as float = 150.0
Angle as float
Vel as float = 2.0
rem Hodgey Did It!
do
// increase the angle
Angle = Angle + 1.0
if Angle > 360.0 then angle = 0.0
// reposition the sprite
X = NewXValue(X, Angle, Vel)
Y = NewYValue(Y, Angle, Vel)
SetSpritePosition(spr, x, y)
// sync
Sync()
loop
Function NewXValue( X#, Angle#, Speed#)
X# = X# + (cos(Angle#) * Speed#)
Endfunction X#
Function NewYValue( Y#, Angle#, Speed#)
Y# = Y# + (sin(Angle#) * Speed#)
Endfunction Y#