public static Body CreateRectangle(World world, float width, float height, float density, Vector2 position = new Vector2(), float rotation = 0, BodyType bodyType = BodyType.Static, object userData = null) { if (width <= 0) { throw new ArgumentOutOfRangeException(nameof(width), "Width must be more than 0 meters"); } if (height <= 0) { throw new ArgumentOutOfRangeException(nameof(height), "Height must be more than 0 meters"); } Body body = CreateBody(world, position, rotation, bodyType, userData); Vertices rectangleVertices = PolygonUtils.CreateRectangle(width / 2, height / 2); FixtureFactory.AttachPolygon(rectangleVertices, density, body); return(body); }
public static Body CreateCapsule(World world, float height, float endRadius, float density, Vector2 position = new Vector2(), float rotation = 0, BodyType bodyType = BodyType.Static, object userData = null) { //Create the middle rectangle Vertices rectangle = PolygonUtils.CreateRectangle(endRadius, height / 2); List <Vertices> list = new List <Vertices>(); list.Add(rectangle); Body body = CreateCompoundPolygon(world, list, density, position, rotation, bodyType, userData); FixtureFactory.AttachCircle(endRadius, density, body, new Vector2(0, height / 2)); FixtureFactory.AttachCircle(endRadius, density, body, new Vector2(0, -(height / 2))); //Create the two circles //CircleShape topCircle = new CircleShape(endRadius, density); //topCircle.Position = new Vector2(0, height / 2); //body.CreateFixture(topCircle); //CircleShape bottomCircle = new CircleShape(endRadius, density); //bottomCircle.Position = new Vector2(0, -(height / 2)); //body.CreateFixture(bottomCircle); return(body); }