当前位置:编程学习 > 网站相关 >>

LibGdx--PrismaticJoint移动关节

[html]
package com.joye3g.joint; 
 
import com.badlogic.gdx.ApplicationListener; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.GL10; 
import com.badlogic.gdx.graphics.OrthographicCamera; 
import com.badlogic.gdx.math.Vector2; 
import com.badlogic.gdx.physics.box2d.Body; 
import com.badlogic.gdx.physics.box2d.BodyDef; 
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType; 
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; 
import com.badlogic.gdx.physics.box2d.CircleShape; 
import com.badlogic.gdx.physics.box2d.EdgeShape; 
import com.badlogic.gdx.physics.box2d.FixtureDef; 
import com.badlogic.gdx.physics.box2d.World; 
import com.badlogic.gdx.physics.box2d.joints.PrismaticJointDef; 
import com.joye3g.joint.util.Transform; 
 
public class PrismaticJointDemo implements ApplicationListener{ 
    private Box2DDebugRenderer renderer; 
    private OrthographicCamera camera; 
    private static final float PXTM = 30; 
    private World mWorld; 
    @Override 
    public void create() { 
        float screenWidth = Gdx.graphics.getWidth(); 
        float screenHeight = Gdx.graphics.getHeight(); 
        renderer = new Box2DDebugRenderer(); 
        camera = new OrthographicCamera(screenWidth / PXTM, screenHeight / PXTM); 
        mWorld = new World(new Vector2(0f, -10f), true); 
 
        //绘制地面 
        BodyDef bodyDef = new BodyDef(); 
        bodyDef.type = BodyType.StaticBody; 
        bodyDef.position.set(-screenWidth / PXTM / 2, -screenHeight / PXTM / 2); 
        Body mLine = mWorld.createBody(bodyDef); 
        EdgeShape edgeShape = new EdgeShape(); 
        edgeShape.set(new Vector2(0f, 1f), new Vector2(screenWidth / PXTM, 1f)); 
        FixtureDef fixtureDef = new FixtureDef(); 
        fixtureDef.shape = edgeShape; 
        mLine.createFixture(fixtureDef); 
 
        //绘制一个半径为1米的圆形 
        BodyDef mCircleBodyDef1 = new BodyDef(); 
        mCircleBodyDef1.type = BodyType.DynamicBody; 
        //圆形的位置在屏幕(60,190)的位置 
        Vector2 vector1 = Transform.ptm(60f, 190f, screenWidth, screenHeight, 0f, 0f, PXTM); 
        mCircleBodyDef1.position.set(vector1); 
        Body mCircle1 = mWorld.createBody(mCircleBodyDef1); 
        CircleShape mCircleShape1 = new CircleShape(); 
        mCircleShape1.setRadius(1f); 
        FixtureDef mCircleFix1 = new FixtureDef(); 
        mCircleFix1.shape = mCircleShape1; 
        mCircle1.createFixture(mCircleFix1); 
         
        //绘制一个半径为1米的圆形 
        BodyDef mCircleBodyDef2 = new BodyDef(); 
        mCircleBodyDef2.type = BodyType.DynamicBody; 
        //圆形的位置在屏幕(200,190)的位置 
        Vector2 vector2 = Transform.ptm(200f, 190f, screenWidth, screenHeight, 0f, 0f, PXTM); 
        mCircleBodyDef2.position.set(vector2); 
        Body mCircle2 = mWorld.createBody(mCircleBodyDef2); 
        CircleShape mCircleShape2 = new CircleShape(); 
        mCircleShape2.setRadius(1f); 
        FixtureDef mCircleFix2 = new FixtureDef(); 
        mCircleFix2.shape = mCircleShape2; 
        mCircle2.createFixture(mCircleFix2); 
         
        //绘制一个半径为1米的圆形(静态) 
        BodyDef mCircleBodyDef3 = new BodyDef(); 
        mCircleBodyDef3.type = BodyType.StaticBody; 
        //圆形的位置在屏幕(60,100)的位置 
        Vector2 vector3 = Transform.ptm(60f, 100f, screenWidth, screenHeight, 0f, 0f, PXTM); 
        mCircleBodyDef3.position.set(vector3); 
        Body mCircle3 = mWorld.createBody(mCircleBodyDef3); 
        CircleShape mCircleShape3 = new CircleShape(); 
        mCircleShape3.setRadius(1f); 
        FixtureDef mCircleFix3 = new FixtureDef(); 
        mCircleFix3.shape = mCircleShape3; 
        mCircle3.createFixture(mCircleFix3); 
 
        //创建一个移动关节 
        PrismaticJointDef prismaticJointDef = new PrismaticJointDef(); 
        prismaticJointDef.bodyA = mCircle1; 
        prismaticJointDef.bodyB = mCircle2; 
        //最小位移偏移量 
        prismaticJointDef.lowerTranslation = 3f; 
        //启动限制 
        prismaticJointDef.enableLimit = true; 
        mWorld.createJoint(prismaticJointDef); 
    } 
 
    @Override 
    public void resize(int width, int height) { 
    } 
 
    @Override 
    public void render() { 
        GL10 gl=Gdx.graphics.getGL10(); 
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
        mWorld.step(Gdx.graphics.getDeltaTime(), 8, 6); 
        render

补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,