當前位置: 首頁>>代碼示例>>Java>>正文


Java PolygonShape類代碼示例

本文整理匯總了Java中com.badlogic.gdx.physics.box2d.PolygonShape的典型用法代碼示例。如果您正苦於以下問題:Java PolygonShape類的具體用法?Java PolygonShape怎麽用?Java PolygonShape使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


PolygonShape類屬於com.badlogic.gdx.physics.box2d包,在下文中一共展示了PolygonShape類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: createWall

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Creates a wall by constructing a rectangle whose corners are (xmin,ymin) and (xmax,ymax),
 * and rotating the box counterclockwise through the given angle, with specified restitution.
 */
public static Body createWall(World world, float xmin, float ymin, float xmax, float ymax,
        float angle, float restitution) {
    float cx = (xmin + xmax) / 2;
    float cy = (ymin + ymax) / 2;
    float hx = Math.abs((xmax - xmin) / 2);
    float hy = Math.abs((ymax - ymin) / 2);
    PolygonShape wallshape = new PolygonShape();
    // Don't set the angle here; instead call setTransform on the body below. This allows future
    // calls to setTransform to adjust the rotation as expected.
    wallshape.setAsBox(hx, hy, new Vector2(0f, 0f), 0f);

    FixtureDef fdef = new FixtureDef();
    fdef.shape = wallshape;
    fdef.density = 1.0f;
    if (restitution>0) fdef.restitution = restitution;

    BodyDef bd = new BodyDef();
    bd.position.set(cx, cy);
    Body wall = world.createBody(bd);
    wall.createFixture(fdef);
    wall.setType(BodyDef.BodyType.StaticBody);
    wall.setTransform(cx, cy, angle);
    return wall;
}
 
開發者ID:StringMon,項目名稱:homescreenarcade,代碼行數:29,代碼來源:Box2DFactory.java

示例2: makePolygonGround

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Creates polygon ground from the given object, at the given world.
 *
 * @param world  The world were the ground will be.
 * @param object The object used to initialize the ground.
 * @return The body of the created ground.
 */
static Body makePolygonGround(World world, PolygonMapObject object) {
    Polygon polygon = object.getPolygon();

    // Body and Fixture variables
    BodyDef bdef = new BodyDef();
    FixtureDef fdef = new FixtureDef();
    PolygonShape shape = new PolygonShape();

    bdef.type = BodyDef.BodyType.StaticBody;
    bdef.position.set(PIXEL_TO_METER * polygon.getX(), PIXEL_TO_METER * polygon.getY());

    Body body = world.createBody(bdef);

    float[] new_vertices = polygon.getVertices().clone();
    for (int i = 0; i < new_vertices.length; i++)
        new_vertices[i] *= PIXEL_TO_METER;

    shape.set(new_vertices);
    fdef.shape = shape;
    fdef.filter.categoryBits = GROUND_BIT;
    body.createFixture(fdef);

    return body;
}
 
開發者ID:AndreFCruz,項目名稱:feup-lpoo-armadillo,代碼行數:32,代碼來源:B2DFactory.java

示例3: makeRectGround

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Creates rectangular ground from the given object, at the given world.
 *
 * @param world  The world were the ground will be.
 * @param object The object used to initialize the ground.
 * @return The body of the created ground.
 */
static Body makeRectGround(World world, RectangleMapObject object) {
    Rectangle rect = object.getRectangle();

    // Body and Fixture variables
    BodyDef bdef = new BodyDef();
    FixtureDef fdef = new FixtureDef();
    PolygonShape shape = new PolygonShape();

    bdef.type = BodyDef.BodyType.StaticBody;
    bdef.position.set(PIXEL_TO_METER * (rect.getX() + rect.getWidth() / 2), PIXEL_TO_METER * (rect.getY() + rect.getHeight() / 2));

    Body body = world.createBody(bdef);

    shape.setAsBox((rect.getWidth() / 2) * PIXEL_TO_METER, (rect.getHeight() / 2) * PIXEL_TO_METER);
    fdef.shape = shape;
    fdef.filter.categoryBits = GROUND_BIT;
    body.createFixture(fdef);

    return body;
}
 
開發者ID:AndreFCruz,項目名稱:feup-lpoo-armadillo,代碼行數:28,代碼來源:B2DFactory.java

示例4: WaterModel

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Water Model's constructor.
 * Creates a water model from the given object, into the given world.
 *
 * @param world The world the water model will be in.
 * @param rect  The rectangle to create the water model with.
 */
public WaterModel(World world, Rectangle rect) {
    // Body and Fixture variables
    BodyDef bdef = new BodyDef();
    FixtureDef fdef = new FixtureDef();
    PolygonShape shape = new PolygonShape();

    bdef.type = BodyDef.BodyType.StaticBody;
    bdef.position.set(PIXEL_TO_METER * (rect.getX() + rect.getWidth() / 2), PIXEL_TO_METER * (rect.getY() + rect.getHeight() / 2));

    this.body = world.createBody(bdef);

    shape.setAsBox((rect.getWidth() / 2) * PIXEL_TO_METER, (rect.getHeight() / 2) * PIXEL_TO_METER);
    fdef.shape = shape;
    fdef.filter.categoryBits = FLUID_BIT;
    fdef.isSensor = true;
    fdef.density = 1f;
    fdef.friction = 0.1f;
    fdef.restitution = 0f;
    body.createFixture(fdef);

    body.setUserData(new BuoyancyController(world, body.getFixtureList().first()));

}
 
開發者ID:AndreFCruz,項目名稱:feup-lpoo-armadillo,代碼行數:31,代碼來源:WaterModel.java

示例5: createPolygonShape

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Creates a polygon shape from a pixel based list of vertices
 *
 * @param vertices Vertices defining an image in pixels
 * @param size     Width/Height of the bitmap the vertices were extracted from
 * @return A PolygonShape with the correct vertices
 */
static PolygonShape createPolygonShape(float[] vertices, Vector2 size) {
    // Transform pixels into meters, center and invert the y-coordinate
    for (int i = 0; i < vertices.length; i++) {
        if (i % 2 == 0) vertices[i] -= size.x / 2;   // center the vertex x-coordinate
        if (i % 2 != 0) vertices[i] -= size.y / 2;  // center the vertex y-coordinate

        if (i % 2 != 0) vertices[i] *= -1;          // invert the y-coordinate

        vertices[i] *= PIXEL_TO_METER;              // scale from pixel to meter
    }

    PolygonShape polygon = new PolygonShape();
    polygon.set(vertices);

    return polygon;
}
 
開發者ID:AndreFCruz,項目名稱:feup-lpoo-armadillo,代碼行數:24,代碼來源:EntityModel.java

示例6: createStaticBoxBody

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
    * Create static body from a TiledObject Refer the box2d manual to
    * understand the static body
    * 
    * @param o
    *            TiledObject
    */
   public Body createStaticBoxBody(float x, float y, float width, float height) {
BodyDef groundBodyDef = new BodyDef();
groundBodyDef.type = BodyType.StaticBody;

// transform into box2d
x = x * WORLD_TO_BOX;

// get position-y from map
y = Gdx.graphics.getHeight() - y;
// transform into box2d
y = y * WORLD_TO_BOX;

groundBodyDef.position.set(x, y);
Body groundBody = world.createBody(groundBodyDef);
PolygonShape polygon = new PolygonShape();
((PolygonShape) polygon).setAsBox(width * WORLD_TO_BOX / 2, height
	* WORLD_TO_BOX / 2);
groundBody.createFixture(polygon, 0.0f);
groundBody.setUserData("static");
return groundBody;
   }
 
開發者ID:game-libgdx-unity,項目名稱:GDX-Engine,代碼行數:29,代碼來源:PhysicsManager.java

示例7: createStaticBoxBody

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Create static body from a TiledObject Refer the box2d manual to
 * understand the static body
 * 
 * @param o
 *            TiledObject
 */
public Body createStaticBoxBody(float x, float y, float width, float height) {
	BodyDef groundBodyDef = new BodyDef();
	groundBodyDef.type = BodyType.StaticBody;

	// transform into box2d
	x = x * WORLD_TO_BOX;

	// get position-y from map
	y = tileMapRenderer.getMapHeightUnits() - y;
	// transform into box2d
	y = y * WORLD_TO_BOX;

	groundBodyDef.position.set(x, y);
	Body groundBody = world.createBody(groundBodyDef);
	PolygonShape polygon = new PolygonShape();
	((PolygonShape) polygon).setAsBox(width * WORLD_TO_BOX / 2, height
			* WORLD_TO_BOX / 2);
	groundBody.createFixture(polygon, 0.0f);
	groundBody.setUserData("static");
	return groundBody;
}
 
開發者ID:game-libgdx-unity,項目名稱:GDX-Engine,代碼行數:29,代碼來源:PhysicsTiledScene.java

示例8: circleToSquare

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Because the algorithm is based on vertices, and the circles do not have vertices, we create a square around it.
 * @param fixture Circle fixture
 * @return A square instead of the circle
 */
private static PolygonShape circleToSquare(Fixture fixture) {
	Vector2 position = fixture.getBody().getLocalCenter();
	float x = position.x;
	float y = position .y;
	float radius = fixture.getShape().getRadius();
	
	PolygonShape octagon = new PolygonShape();
	Vector2[] vertices = new Vector2[4];
	vertices[0] = new Vector2(x-radius, y+radius);
	vertices[1]= new Vector2(x+radius, y+radius);
	vertices[2]= new Vector2(x-radius, y-radius);
	vertices[3]= new Vector2(x+radius, y-radius);
	octagon.set((Vector2[]) vertices);

	return octagon;
}
 
開發者ID:jocasolo,項目名稱:water2d-libgdx,代碼行數:22,代碼來源:IntersectionUtils.java

示例9: createBody

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
private void createBody() {
	BodyDef bodyDef = new BodyDef();
	bodyDef.type = BodyType.DynamicBody;
	
	// Set our body's starting position in the world
	bodyDef.position.set(Gdx.input.getX() / 100f, camera.viewportHeight - Gdx.input.getY() / 100f);
	
	// Create our body in the world using our body definition
	Body body = world.createBody(bodyDef);

	// Create a circle shape and set its radius to 6
	PolygonShape square = new PolygonShape();
	square.setAsBox(0.3f, 0.3f);

	// Create a fixture definition to apply our shape to
	FixtureDef fixtureDef = new FixtureDef();
	fixtureDef.shape = square;
	fixtureDef.density = 0.5f;
	fixtureDef.friction = 0.5f;
	fixtureDef.restitution = 0.5f;

	// Create our fixture and attach it to the body
	body.createFixture(fixtureDef);

	square.dispose();
}
 
開發者ID:jocasolo,項目名稱:water2d-libgdx,代碼行數:27,代碼來源:GameMain.java

示例10: InteractiveTileObject

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
public InteractiveTileObject(World world, TiledMap map, Rectangle bounds){
    this.world = world;
    this.map = map;
    this.bounds = bounds;

    BodyDef bdef = new BodyDef();
    FixtureDef fdef = new FixtureDef();
    PolygonShape shape = new PolygonShape();

    bdef.type = BodyDef.BodyType.StaticBody;
    bdef.position.set((bounds.getX() + bounds.getWidth() / 2) / NoObjectionGame.PPM, (bounds.getY() + bounds.getHeight() / 2 )/ NoObjectionGame.PPM);

    body = world.createBody(bdef);
    shape.setAsBox(bounds.getWidth() / 2 / NoObjectionGame.PPM, bounds.getHeight() / 2 / NoObjectionGame.PPM);
    fdef.shape = shape;
    fixture = body.createFixture(fdef);
}
 
開發者ID:MissionBit,項目名稱:summer17-android,代碼行數:18,代碼來源:InteractiveTileObject.java

示例11: createTopTube

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
public static Array<Body> createTopTube(World world, float posX) {

        float posY = generateTubePosition();

        BodyDef bodyDef = new BodyDef();
        bodyDef.type = BodyDef.BodyType.KinematicBody;
        bodyDef.position.set(posX, posY);
        PolygonShape shape = new PolygonShape();
        shape.setAsBox(Constants.TUBE_WIDTH / 2, Constants.TUBE_HEIGHT / 2);
        Body bodyTop = world.createBody(bodyDef);
        bodyTop.createFixture(shape, 0f);
        bodyTop.resetMassData();
        shape.dispose();
        bodyTop.setLinearVelocity(Constants.TUBE_SPEED, 0.0f);
        Array<Body> bodies = new Array<Body>();
        bodies.add(bodyTop);
        bodies.add(createBottomTube(world, posX, posY));
        return bodies;
    }
 
開發者ID:ZephyrVentum,項目名稱:FlappySpinner,代碼行數:20,代碼來源:WorldUtils.java

示例12: createPolygon

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * Erzeugt aus einem PolygonMapObject ein PolygonShape.
 *
 * @param polyObject das MapObject
 * @return die entsprechende Form
 */
public static PolygonShape createPolygon(PolygonMapObject polyObject)
{
    PolygonShape polygon = new PolygonShape();

    float[] vertices = polyObject.getPolygon().getTransformedVertices();
    Vector2[] worldVertices = new Vector2[vertices.length / 2];

    if (worldVertices.length > 8)
    {
        Gdx.app.error("ERROR", "Too many polygon vertices. A polygon may have up to 8 vertices but no more.");
        return null;
    }

    for (int i = 0; i < vertices.length / 2; i++)
    {
        worldVertices[i] = new Vector2();
        worldVertices[i].x = vertices[i * 2] * Physics.MPP;
        worldVertices[i].y = vertices[i * 2 + 1] * Physics.MPP;
    }

    polygon.set(worldVertices);
    return polygon;
}
 
開發者ID:Entwicklerpages,項目名稱:school-game,代碼行數:30,代碼來源:PhysicsTileMapBuilder.java

示例13: init

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
private void init() {
	mRegion = MyGdxGame.assetManager.getTextureAtlas(Constant.PLAY_BLOOD).findRegion("hp");

	mBodyDef = new BodyDef();
	mFixtureDef = new FixtureDef();
	PolygonShape shape = new PolygonShape();

	//初始化剛體形狀
	mBodyDef.type = BodyDef.BodyType.StaticBody;
	mBodyDef.position.set(x, y);

	shape.setAsBox(30 / Constant.RATE, 30 / Constant.RATE);
	mFixtureDef.shape = shape;
	mFixtureDef.isSensor = true;
	mFixtureDef.filter.categoryBits = Constant.TAO;
	mFixtureDef.filter.maskBits = Constant.PLAYER;

	mBody = mWorld.createBody(mBodyDef);
	mBody.createFixture(mFixtureDef).setUserData("tao");
}
 
開發者ID:heyzqt,項目名稱:libGdx-xiyou,代碼行數:21,代碼來源:Tao.java

示例14: createStick

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * 創建攻擊夾具
 */
public void createStick() {
	if (mAttackFixture != null) {
		return;
	}
	//創建攻擊傳感器 stick
	PolygonShape shape = new PolygonShape();
	if (STATE == State.STATE_RIGHT_ATTACK) {
		shape.setAsBox(45 / Constant.RATE, 5 / Constant.RATE
				, new Vector2(60 / Constant.RATE, 0), 0);
	} else {
		shape.setAsBox(45 / Constant.RATE, 5 / Constant.RATE
				, new Vector2(-60 / Constant.RATE, 0), 0);
	}
	FixtureDef attackFixDef = new FixtureDef();
	attackFixDef.shape = shape;
	attackFixDef.filter.categoryBits = Constant.PLAYER;
	attackFixDef.filter.maskBits = Constant.ENEMY_DAO | Constant.BOSS;
	attackFixDef.isSensor = true;
	mAttackFixture = mBody.createFixture(attackFixDef);
	mAttackFixture.setUserData("stick");
}
 
開發者ID:heyzqt,項目名稱:libGdx-xiyou,代碼行數:25,代碼來源:Monkey.java

示例15: createJumpStick

import com.badlogic.gdx.physics.box2d.PolygonShape; //導入依賴的package包/類
/**
 * 創建升龍斬攻擊夾具
 */
public void createJumpStick() {
	if (mJumpAtkFix != null) {
		return;
	}
	//創建攻擊傳感器 stick
	PolygonShape shape = new PolygonShape();
	if (STATE == State.STATE_RIGHT_JUMP_ATTACK) {
		shape.setAsBox(10 / Constant.RATE, 40 / Constant.RATE
				, new Vector2(100 / Constant.RATE, 20 / Constant.RATE), 0);
	} else {
		shape.setAsBox(10 / Constant.RATE, 45 / Constant.RATE
				, new Vector2(-100 / Constant.RATE, 20 / Constant.RATE), 0);
	}
	FixtureDef attackFixDef = new FixtureDef();
	attackFixDef.shape = shape;
	attackFixDef.filter.categoryBits = Constant.PLAYER;
	attackFixDef.filter.maskBits = Constant.ENEMY_DAO | Constant.BOSS;
	attackFixDef.isSensor = true;
	mJumpAtkFix = mBody.createFixture(attackFixDef);
	mJumpAtkFix.setUserData("ball");
}
 
開發者ID:heyzqt,項目名稱:libGdx-xiyou,代碼行數:25,代碼來源:Monkey.java


注:本文中的com.badlogic.gdx.physics.box2d.PolygonShape類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。