Skip to content

Instantly share code, notes, and snippets.

@picopicolab
Created November 13, 2015 12:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save picopicolab/44a0c6092f384927c580 to your computer and use it in GitHub Desktop.
Save picopicolab/44a0c6092f384927c580 to your computer and use it in GitHub Desktop.
衝突判定サンプル実装(Rectangle クラス利用)
package com.github.picopicolab.games.demo;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.FPSLogger;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Rectangle;
/**
* 衝突判定サンプル実装(Rectangle クラス利用)
*/
public class DemoGame extends ApplicationAdapter {
private ShapeRenderer renderer;
private Rectangle rectangle1;
private Rectangle rectangle2;
private Direction rectangle2Direction;
private float speed;
private FPSLogger logger;
@Override
public void create() {
renderer = new ShapeRenderer();
renderer.setAutoShapeType(true);
float centerX = Gdx.graphics.getWidth() / 2;
float centerY = Gdx.graphics.getHeight() / 2;
rectangle1 = new Rectangle(centerX - 50.0f, centerY - 10.0f, 100.0f, 20.0f); // 画面中央に幅100, 高さ20の四角形
rectangle2 = new Rectangle(20.0f, Gdx.graphics.getHeight() - 15.0f, 15.0f, 15.0f); // 画面上部に幅15, 高さ15の四角形
rectangle2Direction = Direction.Down; // 進行方向を下に設定
speed = 50.0f; // 図形移動速度
logger = new FPSLogger();
}
@Override
public void render() {
Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// 図形移動
float deltaTime = Gdx.graphics.getDeltaTime();
if (Direction.Down == rectangle2Direction) {
// 進行方向が下の場合
rectangle2.y -= speed * deltaTime;
if (rectangle2.y <= 0.0f) {
// 画面下部まで来たら反転
rectangle2.y = 0.0f;
rectangle2Direction = Direction.Up;
}
} else {
// 進行方向が上の場合
rectangle2.y += speed * deltaTime;
if (rectangle2.y >= Gdx.graphics.getHeight() - rectangle2.height) {
// 画面下部まで来たら反転
rectangle2.y = Gdx.graphics.getHeight() - rectangle2.height;
rectangle2Direction = Direction.Down;
}
}
// 画像描画
renderer.begin();
if (rectangle1.overlaps(rectangle2)) {
// 2つの四角形が衝突している(重なっている)場合
renderer.setColor(Color.RED); // 色を緑に指定
} else {
// 2つの四角形が衝突していない(重なっていない)場合
renderer.setColor(Color.GREEN); // 色を緑に指定
}
renderer.set(ShapeRenderer.ShapeType.Filled); // 線にて描画
renderer.rect(rectangle1.x, rectangle1.y, rectangle1.width, rectangle1.height);
renderer.setColor(Color.BLUE); // 色を青に指定
renderer.set(ShapeRenderer.ShapeType.Filled); // 塗りつぶしにて描画
renderer.rect(rectangle2.x, rectangle2.y, rectangle2.width, rectangle2.height);
renderer.end();
// FPS 出力
logger.log();
}
public enum Direction {
Up, Down;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment