Показать сообщение отдельно
Старый 23.03.2020, 21:59   #1
Sikkyboy
AnyKey`щик
 
Регистрация: 22.03.2020
Сообщений: 18
Написано 6 полезных сообщений
(для 11 пользователей)
Эксперименты с box2d

Привет. Я установил себе этот модуль и посмотрел примеры. Обидно, что первый пример с ошибкой, да ещё просто никакой.
В общем, вместо первого примера я придумал замену.

Framework BaH.Box2D

Import BRL.StandardIO
Import BRL.LinkedList
Import BRL.GLMax2D

Const WORLD_WIDTH:Float=700
Const WORLD_HEIGHT:Float=500

Local worldAABB:b2AABB = New b2AABB.Create()
worldAABB.SetLowerBound(New b2Vec2.Create(0.0, 0.0))
worldAABB.SetUpperBound(New b2Vec2.Create(WORLD_WIDTH, WORLD_HEIGHT))

Local gravity:b2Vec2 = New b2Vec2.Create(0.0, -10.0)

Local doSleep:Int = True


Local world:b2World = New b2World.Create(worldAABB, gravity, doSleep)

Local groundBodyDef:b2BodyDef = New b2BodyDef
groundBodyDef.SetPosition(New b2Vec2.Create(350.0, 10.0))

Local groundBody:b2Body = world.CreateBody(groundBodyDef)

Local groundShapeDef:b2PolygonDef = New b2PolygonDef
groundShapeDef.SetAsBox(350.0, 10.0)

groundBody.CreateShape(groundShapeDef)

Local bodyDef:b2BodyDef = New b2BodyDef
bodyDef.SetPosition(New b2Vec2.Create(350.0, 400.0))
Local body:b2Body = world.CreateBody(bodyDef)

Local shapeDef:b2PolygonDef = New b2PolygonDef
shapeDef.SetAsBox(10.0, 10.0)
shapeDef.SetDensity(1.0)
shapeDef.SetFriction(0.3)
body.CreateShape(shapeDef)
body.SetMassFromShapes()

Local timeStep:Float = 1.0 / 60.0
Local iterations:Int = 10
Local shape:b2PolygonShape
Local vertices:b2Vec2[]
Local poly:Float[]

Graphics WORLD_WIDTH,WORLD_HEIGHT

While Not KeyHit( KEY_ESCAPE )

	world.DoStep(timeStep, iterations,0)
	Cls()


	shape=b2PolygonShape(body.getShapeList())
	vertices=shape.getVertices()
	poly=New Float[vertices.length*2]
	For Local i:Int = 0 Until vertices.length
			poly[i * 2] = body.getworldpoint(vertices[i]).GetX()
			poly[i * 2 + 1] = WORLD_HEIGHT-body.getWorldpoint(vertices[i]).GetY()
	Next
    
	SetColor(0,0,189)
	DrawPoly(Poly)
	
	shape=b2PolygonShape(groundbody.getShapeList())
	vertices=shape.getVertices()
	poly=New Float[vertices.length*2]
	For Local i:Int = 0 Until vertices.length
			poly[i * 2] = groundbody.getworldpoint(vertices[i]).GetX()
			poly[i * 2 + 1] = WORLD_HEIGHT-groundbody.getWorldpoint(vertices[i]).GetY()
	Next
	
	SetColor(0,239,0)
	DrawPoly(poly)
		
	Flip()

Wend
(Offline)
 
Ответить с цитированием