Just use a dummy (64x64 is what I'm using) sprite for Saucer.png. Running this on the phone max velocity caps out around 410. It's having something to do with the maximums within the physics engine itself, but the annoying thing is how the vector is "stealing" from the other direction (vertical taking velocity from horizontal).
rem Landscape App
SetDisplayAspect( 4.0/3.0 )
SetVirtualResolution (800,480)
rem Load Saucer
saucerImage = LoadImage ("arena\Saucer.png")
saucerSprite = CreateSprite (saucerImage)
rem Setup Physics
SetSpriteShape (saucerSprite, 3)
SetSpritePhysicsOn (saucerSprite, 2)
SetSpritePhysicsCanRotate (saucerSprite, 0)
SetSpritePhysicsMass(saucerSprite,1)
SetSpritePhysicsDamping(saucerSprite, 0)
SetPhysicsGravity (0, 500)
SetPhysicsWallLeft (0)
SetPhysicsWallRight (0)
SetPhysicsWallTop (0)
SetPhysicsWallBottom (0)
do
if GetPointerPressed() = 1
if GetPointerX () > 400
if GetSpritePhysicsVelocityX(saucerSprite) >= 400 then saucerSpriteVelocityX = 0 else saucerSpriteVelocityX = 100
SetSpritePhysicsImpulse(saucerSprite,GetSpriteXByOffset(saucerSprite),GetSpriteYByOffset(saucerSprite),saucerSpriteVelocityX,-150)
endif
if GetPointerX () < 400
if GetSpritePhysicsVelocityX(saucerSprite) <= -400 then saucerSpriteVelocityX = 0 else saucerSpriteVelocityX = 100
SetSpritePhysicsImpulse(saucerSprite,GetSpriteXByOffset(saucerSprite),GetSpriteYByOffset(saucerSprite),-saucerSpriteVelocityX,-150)
endif
endif
if GetSpriteX(saucerSprite) > 800 then teleportPhysicsObject(saucerSprite, -64, GetSpriteY(saucerSprite))
if GetSpriteX(saucerSprite) < -64 then teleportPhysicsObject(saucerSprite, 800, GetSpriteY(saucerSprite))
if GetSpriteY(saucerSprite) > 480 then teleportPhysicsObject(saucerSprite, GetSpriteX(saucerSprite), -64)
if GetSpriteY(saucerSprite) < -64 then teleportPhysicsObject(saucerSprite, GetSpriteX(saucerSprite), 480)
print(str(GetSpritePhysicsVelocityX(saucerSprite)))
print(str(GetSpritePhysicsVelocityY(saucerSprite)))
Sync()
loop
function teleportPhysicsObject(object, xValue, yValue)
objectVelocityX = GetSpritePhysicsVelocityX(object)
objectVelocityY = GetSpritePhysicsVelocityY(object)
SetSpritePhysicsOff (object)
SetSpriteX (object, xValue)
SetSpriteY (object, yValue)
SetSpritePhysicsOn (object, 2)
SetSpritePhysicsVelocity (object, objectVelocityX, objectVelocityY)
endfunction