// Project: 2dracer
// Created: 2017-02-12
// show all errors
SetErrorMode(2)
// set window properties
SetWindowTitle( "2dracer" )
SetWindowSize( 1024, 768, 0 )
// set display properties
SetVirtualResolution( 1024, 768 )
SetOrientationAllowed( 1, 1, 1, 1 )
SetSyncRate( 30, 0 ) // 30fps instead of 60 to save battery
UseNewDefaultFonts( 1 ) // since version 2.0.22 we can use nicer default fonts
SetPhysicsDebugOn()
SetPhysicsScale(0.05)
SetPhysicsGravity(0,200)
a = createSprite(0)
SetSpritePositionByOffset(a,GetDeviceWidth()/2,GetdeviceHeight()/2)
SetSpriteSize(a,100,50)
SetSpritePhysicsOn(a,2)
SetSpritephysicsMass(a,100)
b = Createsprite(0)
SetSpritePositionByOffset(b,GetSpriteXByOffset(a)+25,GetSpriteYByOffset(a)+25)
SetSpriteSize(b,25,25)
SetSpritecolor(b,255,0,0,255)
SetSpritePhysicsOn(b,2)
SetSpriteShape(b,1)
SetSpritePhysicsMass(b,500)
c = Createsprite(0)
SetSpritePositionByOffset(c,GetSpriteXByOffset(a)-25,GetSpriteYByOffset(a)+25)
SetSpriteSize(c,25,25)
SetSpritecolor(c,255,0,0,255)
SetSpritePhysicsOn(c,2)
SetSpriteShape(c,1)
d = CreateRevoluteJoint(a,b,GetSpriteXByOffset(b),GetSpriteYByOffset(b),0)
e = CreateRevoluteJoint(a,c,GetSpriteXByOffset(c),GetSpriteYByOffset(c),0)
/*
for i = 1 to 32
f = createSprite(0)
SetSpriteShape(f,1)
SetSpritePositionByOffset(f,GetSpriteXByOffset(b),GetSpriteYByOffset(b))
MoveSpriteAngle(f,17.5,360/32*i)
AddSpriteShapeCircle(b,GetSpriteXByOffset(b)-GetSpriteXByOffset(f),GetSpriteYByOffset(b)-GetSpriteYByOffset(f),2.5)
DeleteSprite(f)
next i
for i = 1 to 32
f = createSprite(0)
SetSpriteShape(f,1)
SetSpritePositionByOffset(f,GetSpriteXByOffset(c),GetSpriteYByOffset(c))
MoveSpriteAngle(f,17.5,360/32*i)
AddSpriteShapeCircle(c,GetSpriteXByOffset(c)-GetSpriteXByOffset(f),GetSpriteYByOffset(c)-GetSpriteYByOffset(f),2.5)
DeleteSprite(f)
next i
*/
//SetJointMotorOn( d, 10000,2000 )
h = CreateSprite(0)
SetSpriteSize(h,200,25)
SetSpriteAngle(h,-25)
setSpritePosition(h,GetDeviceWidth()*0.65,GetDeviceHeight()-25)
SetSpritePhysicsOn(h,1)
do
angularVelocityC# = GetSpritePhysicsAngularVelocity(b)
if angularVelocityC#> 0
SetSpritePhysicsAngularVelocity(b,angularVelocityC#-0.5)
endif
if GetPointerState() =1
SetSpritePhysicsAngularVelocity(b,angularVelocityC#+50)
endif
update(0.02)
Print( ScreenFPS() )
render()
swap()
loop
function MoveSpriteAngle(id as integer,amount as float,Angle as float)
a# = Angle
x# = GetSpriteXByOffset(id) + cos(a#) * amount
y# = GetSpriteYByOffset(id) + sin(a#) *amount
SetSpritePositionByOffset(id,x#,y#)
endfunction
its not perfect but it may get you started
i actually forgot how i did it the last time.
hopefully someone will fix this , but you'll get the hang of it dont worry.
i got caught in a mess with this code , it should be much more easier
the part where it is commented out is where you add the wheels little extra circles at its radius this is for better friction however it made my vehicle jump up and down...