Spel45: FysikMotor 1

Vi testar Codeas fysikmotor via physics.body(). Vi inför ett antal dynamiska fysiska kroppar body[n]=physics.body(CIRCLE,10) samt  statiska kroppar floor och wall som rektanglar via floor=physics.body(POLYGON,…) et cet. Vi tilldelar body[n] fysik tex elasticitet eller studs via body[n].resitution=0.5 och sätter physics.gravity(..).  På skärmen täcker vi positionen av body[n] av en bild. Vi kan sedan studera interaktionen av kropparna via elastiska stötar.

Titta på en simulering här.

Template:

— PhysicsEngine

function setup()
print(“Physics Engine”)
N=100
body={}
for n=1,N do
body[n]=physics.body(CIRCLE,10)
body[n].x=math.random(150,600)
body[n].y=math.random(150,1000)
body[n].linearVelocity=vec2(math.random(-100,100),math.random(-100,100))
body[n].restitution=1
end
— floor=physics.body(EDGE,vec2(-100,-100),vec2(-100,100))
— floor.type=STATIC

— floor=physics.body(CIRCLE,100)
floor=physics.body(POLYGON,vec2(0,0),vec2(1000,0),vec2(1000,50),vec2(0,50))
floor.x=100
floor.y=100
floor.r=0
floor.type=STATIC
wall1=physics.body(POLYGON,vec2(0,0),vec2(20,0),vec2(20,1000),vec2(0,1000))
wall1.x=100
wall1.y=100
wall1.r=0
wall1.type=STATIC

wall2=physics.body(POLYGON,vec2(0,0),vec2(20,0),vec2(20,1000),vec2(0,1000))
wall2.x=700
wall2.y=100
wall2.r=0
wall2.type=STATIC

physics.gravity(0,-10)
end
function draw()

background(246, 246, 247, 255)
for n=1,N do
sprite(“SpaceCute:Beetle Ship”,body[n].x,body[n].y,20)
end
fill(0, 26, 255, 255)
rect(floor.x-200,floor.y+25,1000,20)
rect(wall1.x,wall1.y,20,1000)
rect(wall2.x,wall1.y,20,1000)

end

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s