我正在编写一个游戏,你必须避免小行星(图片)。不幸的是我搞砸了我的坐标系统。今天我想添加一些按钮,但是在设置坐标时,更像是尝试坐标,而不是准确地知道要做什么。 我为我的游戏设置了一个宽度和高度,并且从OrthographicCamera继承了一个OrthoCamera类,并且让每个设备上的游戏看起来都相同。
MyGdxGame课程:
public class MyGdxGame implements ApplicationListener {
SpriteBatch batch;
ShapeRenderer renderer;
OrthoCamera cam;
public static int WIDTH = 1080 , HEIGHT = 720; // "resolution"
OrthoCamera课程:
public class OrthoCamera extends OrthographicCamera {
Vector3 tmp = new Vector3();
Vector2 origin = new Vector2();
VirtualViewport virtualViewport;
Vector2 pos = new Vector2();
public OrthoCamera() {
this(new VirtualViewport(MyGdxGame.WIDTH, MyGdxGame.HEIGHT));
}
我也制作了游戏画面"更大"为飞行小行星创造更多空间。
小行星类:
公共类Asteroids扩展实体{
private final int anzahl = 150;
private float xMin, xMax, yMin, yMax;
private List<Asteroid> asteroids = new ArrayList<Asteroid>();
private final int zyklischeRandbedingungenVielfaches = 2;
public Asteroids() {
xMin = MyGdxGame.WIDTH * (-zyklischeRandbedingungenVielfaches);
xMax = MyGdxGame.WIDTH * (zyklischeRandbedingungenVielfaches);
yMin = MyGdxGame.HEIGHT * (-zyklischeRandbedingungenVielfaches);
yMax = MyGdxGame.HEIGHT * (zyklischeRandbedingungenVielfaches);
for (int i = 0; i < anzahl; i++) {
Asteroid a = new Asteroid( xMax, yMax, asteroids);
asteroids.add(a);
}
}
小行星类:
public void update(float deltaT, float xMin, float xMax, float yMin, float yMax) {
p.x += v.x * deltaT;
p.y += v.y * deltaT;
while(p.x > xMax)
{
p.x -= (xMax - xMin);
}
while(p.x < xMin)
{
p.x += (xMax - xMin);
}
while(p.y > yMax)
{
p.y -= (yMax - yMin);
}
while(p.y < yMin)
{
p.y += (yMax - yMin);
}
例如,我如何设置播放按钮的位置:
texture = new Texture("button.png");
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
TextureRegion region = new TextureRegion(texture, 59, 52, 300,250);
sprite = new Sprite(region);
sprite.setSize(sprite.getWidth() / 2, sprite.getHeight() / 2);
sprite.setOrigin(-sprite.getWidth() / 2, -sprite.getHeight() / 2);
sprite.setPosition(MyGdxGame.WIDTH / 2 - 317, MyGdxGame.HEIGHT /2 - 110); //!!!
希望有人能告诉我如何创建更简单的坐标。 -Thanks -
答案 0 :(得分:0)
阅读文档here。具体做法是:
Sprite始终是矩形的,其位置(x,y)位于 那个矩形的左下角。
因此,如果你有一个坐标,你想要你的精灵中心,你需要确保从该坐标减去精灵的一半宽度和一半高度。
如果您需要更多详细信息,请参阅this question的已接受答案。