Box2D例子——Demo0掉落的小球

package com.cvte.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
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;

public class Demo0 extends ApplicationAdapter {

    private static final float PXTM = 80;

	protected OrthographicCamera mCamera;
	private Box2DDebugRenderer mRenderer;

	private World mWorld;

	@Override
	public void create() {
        float cameraWidth = Gdx.graphics.getWidth() / PXTM;
        float cameraHeight = Gdx.graphics.getHeight() / PXTM;
		mCamera = new OrthographicCamera(cameraWidth, cameraHeight);
		mCamera.position.set(cameraWidth / 2, cameraHeight / 2, 0);
		mCamera.update();

		mRenderer = new Box2DDebugRenderer();

		mWorld = new World(new Vector2(0, -10), true);

		//ground
		{
			BodyDef bd = new BodyDef();
			bd.type = BodyType.StaticBody;
			bd.position.set(toWorldSize(0), toWorldSize(100));

			EdgeShape edgeShape = new EdgeShape();
			edgeShape.set(new Vector2(toWorldSize(0), toWorldSize(80)), new Vector2(toWorldSize(Gdx.graphics.getWidth()), toWorldSize(80)));

			FixtureDef fd = new FixtureDef();
			fd.shape = edgeShape;

			Body ground = mWorld.createBody(bd);
			ground.createFixture(fd);
		}

		//ball
		{
			BodyDef bd = new BodyDef();
			bd.type = BodyType.DynamicBody;
			bd.position.set(toWorldSize(400), toWorldSize(800));

			CircleShape circleShape = new CircleShape();
			circleShape.setRadius(toWorldSize(20));

			FixtureDef fd = new FixtureDef();
			fd.shape = circleShape;
			fd.density = 1;
			fd.restitution = 0.9f;

			Body ball = mWorld.createBody(bd);
			ball.createFixture(fd);
		}
	}

	@Override
	public void dispose() {
		mRenderer.dispose();

		mWorld.dispose();

		mCamera = null;
	}

	@Override
	public void render() {
		Gdx.gl.glClearColor(1, 1, 1, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

		mWorld.step(Gdx.app.getGraphics().getDeltaTime(), 6, 2);

		mRenderer.render(mWorld, mCamera.combined);
	}

	private float toWorldSize(float pos) {
		return (pos / PXTM);
	}

}


时间: 2024-10-29 03:14:15

Box2D例子——Demo0掉落的小球的相关文章

Box2D例子——Demo1掉落的小球

<pre name="code" class="java">package com.cvte.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.

Box2D例子——Demo2停不下来的球球

package com.cvte.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gd

Box2D例子——Demo3自行车

package com.cvte.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Orthog

时钟特效程序

做了个特效小程序,在过程中发现自己在学过的知识中有掌握的不够牢固的,今天在这里复习一下: 一.三目运算符中能否使用{}吗? 不可以,三目运算符的语法:条件 ? 结果1 : 结果2; 结果不可以用语句代替 二.canvas可以嵌套吗? 不可以, 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title><

【每日算法】链表 &amp; 例题选讲

单链表 链表是常用的数据结构,其优点是插入和删除元素时不需要移动,表的容量可扩充,且存储空间可以不连续. 另外,由于涉及到指针,所以很受面试官的青睐. 本文将主要介绍单链表,并简单介绍下双链表和环形链表,并通过一系列的题目来强化这方面的知识. 链表节点的结构: template<class DataType> struct Node { DataType data; Node<DataType> *next; }; data存放节点的数据,next指向下一个节点. 对于单链表,需要

Libgdx Box2D实战---放开那小球(三:规则常用的body和精灵结合)

上一篇文章我介绍了box2D的基本知识,如果你用心的话,你会搜索网上相关简单demo吧.那些我就不写了.那么如果我用图片表示我的那个body,而不是简单线条,那该怎么办? 下面,我以我的项目中小球对象生成为例,介绍精灵和body如何结合: 下面是创建一个小球类,重要的都注释了: public class Ball { private static final float BALL_RADIUS = 0.15f;// 球半径 private final Random rand = new Rand

Libgdx Box2D实战---放开那小球(四:不规则body创建--physics-body-editor的使用)

继续我们的问题,如果遇到不规则的图形怎么办?难不成要一个个组装吗? 这里就要提一个叫做"关节"的名词了,它可以将一个个部分进行组装成自己的形状,特别是各部件独自运转时,比如一辆自行车,它的轮子和车身都是各自运转的. 但是网上相关的资料真是太少了!一大堆复制粘贴的,全是废话,不知道大家是怎么感觉的?但是我的这个游戏没用到,所以没有深究,有兴趣的可以去谷歌一下. 下面我介绍的是一个非常非常方便的工具,它的名字叫做physics-body-editor,那么它是干什么的呢?恩,它可以根据你的

Libgdx Box2D实战---放开那小球(二:Box2D介绍)

 Box2D官网 : http://box2d.org/ Box2D v2.1.0用户手册翻译 : http://blog.csdn.net/complex_ok/article/category/871440 Libgdx使用jni封装了box2d的c++版本,使得其运行效率比其他同级的物理引擎如jbox2d快不少. 一.基础类 BodyDef  A body definition holds all the data needed to construct a rigid body. Y

第二章实例:动态生成View控件例子---小球跟随手指滑动

package mydefault.packge; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import androi