Created
November 13, 2015 12:25
-
-
Save picopicolab/44a0c6092f384927c580 to your computer and use it in GitHub Desktop.
衝突判定サンプル実装(Rectangle クラス利用)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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