如何在 libgdx 中创建带有碰撞和球的随机无限墙?
How to create random and Infinite walls with collision and a ball in libgdx?
我是 Android 游戏开发的新手,但我对标准应用程序开发有一些经验。
我想创建一个 "TutorialGame" 用于学习目的。游戏类似于这个游戏:https://goo.gl/ywawt5 但玩家不是忍者,而是一个球。而且没有敌人或其他任何东西。它只是无缘无故地从一边跳到另一边。正如我所说,它只是为了学习代码!
我开始用 LIBGDX 的 ShapeRenderer 创建一个小球:
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.circle(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, Gdx.graphics.getWidth() / 20);
shapeRenderer.setColor(1,0,0,1);
shapeRenderer.end();
现在的问题是:从这样的事情开始,这是否是正确的方式?我在 LIBGDX 中读到了其他 classes,比如 circle 和 body,但是因为没有关于这些的任何教程,而且我是初学者,我真的不知道 class 需要哪个在这里使用。当然,我以后会需要无限墙,墙和球应该有碰撞(我想是吗?)但我真的不知道该怎么做。
感谢任何能帮助我更了解 LIBGDX 的回答。
提前致谢!
如果我理解你的问题,我会使用 box2d,用于墙壁和球,这里你必须从 box2d 示例开始:
https://www.youtube.com/watch?v=zDEQycnhaAc
在无穷无尽的墙上,我会尝试这样的事情
这取决于你想如何工作,但如果你的播放器垂直、向上或向下移动,你可以放置一个图形 box2d,具有你想要的形状。
开始行动,在游戏中塑造这个区域
- 是游戏区。
- 是box2d的shape。"example size"
例如,如果你的玩家向上,你会朝那个方向移动你的形状等等。
我没做过,类似的东西,我是这样测试的,作为第一个想法,希望能有所帮助。
注意:
如果你选择使用 box2d,就不需要做很多物体之间的碰撞模拟,还有重力,只是你需要知道如何使用它们,我认为最终会更容易,但是这只是我的意见
您必须将问题分解成更小的步骤。
首先,让你的绘图开始工作。您使用 ShapeRenderer 是正确的,有关如何使用 class(以及许多其他 classes)的更多信息可以在 the libGDX API and the libGDX wiki 中找到。你能在屏幕中央画一个圆圈吗?
一旦你的绘图工作,然后担心动画。你能让圆圈在屏幕上弹跳吗?您可以使用非常基本的 if 语句来确定圆圈何时触及屏幕边缘,并且可以使用相同的逻辑将 "wall" 添加到屏幕的每一侧。这里确实不需要Box2D。
这样想:你实际上并不需要无限的墙,你只需要让它看起来像你做的那样。您可以通过简单地在屏幕两侧绘制墙壁装饰并每帧将它们向下移动一点来做到这一点。
既然你问过了,Circle class 只是一个 class,它包含有关圆的信息:它的位置和半径。 class 还包含用于测试圆是否与圆相交、是否包含点等的函数。因此您 可以 将此 class 与其他代码一起使用,但您不必这样做。
同样,CircleShape class 是另一个与 Box2D 一起工作的 class,Box2D 是 libGDX 附带的物理引擎。尽管您最终 可能 使用 Box2D,但我绝对不建议您使用它,直到您掌握了基础知识。
我是 Android 游戏开发的新手,但我对标准应用程序开发有一些经验。
我想创建一个 "TutorialGame" 用于学习目的。游戏类似于这个游戏:https://goo.gl/ywawt5 但玩家不是忍者,而是一个球。而且没有敌人或其他任何东西。它只是无缘无故地从一边跳到另一边。正如我所说,它只是为了学习代码!
我开始用 LIBGDX 的 ShapeRenderer 创建一个小球:
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.circle(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, Gdx.graphics.getWidth() / 20);
shapeRenderer.setColor(1,0,0,1);
shapeRenderer.end();
现在的问题是:从这样的事情开始,这是否是正确的方式?我在 LIBGDX 中读到了其他 classes,比如 circle 和 body,但是因为没有关于这些的任何教程,而且我是初学者,我真的不知道 class 需要哪个在这里使用。当然,我以后会需要无限墙,墙和球应该有碰撞(我想是吗?)但我真的不知道该怎么做。
感谢任何能帮助我更了解 LIBGDX 的回答。 提前致谢!
如果我理解你的问题,我会使用 box2d,用于墙壁和球,这里你必须从 box2d 示例开始:
https://www.youtube.com/watch?v=zDEQycnhaAc
在无穷无尽的墙上,我会尝试这样的事情
这取决于你想如何工作,但如果你的播放器垂直、向上或向下移动,你可以放置一个图形 box2d,具有你想要的形状。
开始行动,在游戏中塑造这个区域
- 是游戏区。
- 是box2d的shape。"example size"
例如,如果你的玩家向上,你会朝那个方向移动你的形状等等。
我没做过,类似的东西,我是这样测试的,作为第一个想法,希望能有所帮助。
注意: 如果你选择使用 box2d,就不需要做很多物体之间的碰撞模拟,还有重力,只是你需要知道如何使用它们,我认为最终会更容易,但是这只是我的意见
您必须将问题分解成更小的步骤。
首先,让你的绘图开始工作。您使用 ShapeRenderer 是正确的,有关如何使用 class(以及许多其他 classes)的更多信息可以在 the libGDX API and the libGDX wiki 中找到。你能在屏幕中央画一个圆圈吗?
一旦你的绘图工作,然后担心动画。你能让圆圈在屏幕上弹跳吗?您可以使用非常基本的 if 语句来确定圆圈何时触及屏幕边缘,并且可以使用相同的逻辑将 "wall" 添加到屏幕的每一侧。这里确实不需要Box2D。
这样想:你实际上并不需要无限的墙,你只需要让它看起来像你做的那样。您可以通过简单地在屏幕两侧绘制墙壁装饰并每帧将它们向下移动一点来做到这一点。
既然你问过了,Circle class 只是一个 class,它包含有关圆的信息:它的位置和半径。 class 还包含用于测试圆是否与圆相交、是否包含点等的函数。因此您 可以 将此 class 与其他代码一起使用,但您不必这样做。
同样,CircleShape class 是另一个与 Box2D 一起工作的 class,Box2D 是 libGDX 附带的物理引擎。尽管您最终 可能 使用 Box2D,但我绝对不建议您使用它,直到您掌握了基础知识。