i use this for movement with a help of simple target sprite.
maybe u can disable SetPhysicsGravity ( 0, 0 )
disable rotate SetSpritePhysicsCanRotate ( iSpriteIndex, 0)
function PlayerInput()
//GetKeyboardExists() ???
//print(GetRawLastKey())
spr=Player.spr
k37=GetRawKeystate( 37 )
k39=GetRawKeystate( 39 )
k38=GetRawKeystate( 38 )
k40=GetRawKeystate( 40 )
k32=GetRawKeystate( 32 ) //Space
Force#=250-Player.Work
if Force#<150.0 then Force#=150.0
//Player.Angle=Player.Angle + 45.0 / (screenfps()*1.0)
//if Player.Angle>180.0 then Player.Angle=Player.Angle-180.0
//collision ist weg wenn man winkel setzt ??!!!
//setspriteangle(spr,abs(sin(Player.Angle)*45.0))
ani=0
//--------------------------------- Joy
jfx#=getvirtualjoystickx(1)*Force#
jfy#=getvirtualjoysticky(1)*Force#
SetSpritePhysicsForce(spr,getspritexbyoffset(spr),getspriteybyoffset(spr),jfx#,jfy#)
if sqrt(jfx#*jfx# + jfy#*jfy#)>1
ani=1
endif
//--------------------------------- Goto Mouse
//Click Goto mit Markierung wäre besser
//Bei Maus halten verschieben
//Dann hin laufen
//Wenn da entfernen
//Click aud X Sprite entfernen
//Entfernung begrenzen evtl.
//Maus Click für Target An
//Maus Click auf Target Sprite wieder aus
if getpointerpressed()=1
mx#=getpointerx()
my#=getpointery()
mx#=screentoworldx(mx#)
my#=screentoworldy(my#)
hit=getspritehit(mx#,my#)
if hit=Player.sprTarget or hit=Player.spr
Setspritevisible(Player.sprTarget,0)
else
if Getspritevisible(Player.sprTarget)=0
Setspritevisible(Player.sprTarget,1)
endif
endif
endif
//Target verschieben wenn maus gehalten wird
if getpointerstate()=1
mx#=getpointerx()
my#=getpointery()
mx#=screentoworldx(mx#)
my#=screentoworldy(my#)
setspritepositionbyoffset(Player.sprTarget,mx#,my#)
endif
//automatisch aus
//wenn maus los und noch sichtbar
if getpointerstate()=0 and getspritevisible(Player.sprTarget)=1
//player im kreis vom ziel
if getspriteincircle(Player.spr,getspritexbyoffset(Player.sprTarget),getspriteybyoffset(Player.sprTarget),2.5)=1
//ziel unsichtbar
Setspritevisible(Player.sprTarget,0)
//spieler abbremsen
setspritephysicsvelocity(Player.spr,getspritephysicsvelocityx(Player.spr)/2.0,getspritephysicsvelocityy(Player.spr)/2.0)
endif
endif
//hin bewegen wenn ziel sichtbar
if Getspritevisible(Player.sprTarget)=1
a#=getspriteangle(Player.sprTarget)
a#=a#+ 45.0 / screenfps()
if a#>360.0 then a#=a#-360.0
setspriteangle(Player.sprTarget,a#)
mx#=getspritexbyoffset(Player.sprTarget)
my#=getspriteybyoffset(Player.sprTarget)
dx#=mx#-getspritexbyoffset(spr)
dy#=my#-getspriteybyoffset(spr)
l#=sqrt(dx#*dx# + dy#*dy#)
if l#>0
dx#=dx#/l#
dy#=dy#/l#
jfx#=dx#*Force#
jfy#=dy#*Force#
SetSpritePhysicsForce(spr,getspritexbyoffset(spr),getspriteybyoffset(spr),jfx#,jfy#)
if sqrt(jfx#*jfx# + jfy#*jfy#)>1
ani=1
endif
endif
endif
//---------------------------------
//Links/Rechts
if k37
Player.L=1
Player.R=0
SetSpritePhysicsForce(spr,getspritexbyoffset(spr),getspriteybyoffset(spr),-Force#,0)
ani=1
endif
if k39
Player.L=0
Player.R=1
SetSpritePhysicsForce(spr,getspritexbyoffset(spr),getspriteybyoffset(spr), Force#,0)
ani=1
endif
//Oben/Unten
if k38
SetSpritePhysicsForce(spr,getspritexbyoffset(spr),getspriteybyoffset(spr),0,-Force#)
ani=1
endif
if k40
SetSpritePhysicsForce(spr,getspritexbyoffset(spr),getspriteybyoffset(spr),0, Force#)
ani=1
endif
if ani=1
PlayerAnimate()
endif
//so ist doof
//suchen welche steine in im umkreis sind, siehe collision
if k32
Player.pull=1
else
Player.pull=0
endif
//Geschwindigkeit Begrenzen
x#=getspritePhysicsVelocityx(spr)
y#=getspritePhysicsVelocityy(spr)
if x#> 40 then x#= 40
if x#<-40 then x#=-40
if y#> 40 then y#= 40
if y#<-40 then y#=-40
if Player.pull=1
x#=0
y#=0
endif
SetSpritePhysicsVelocity(spr,x#,y#)
endfunction
AGK 108 (B)19 : Windows 8.1 Pro 64 Bit : AMD Radeon R7 265