- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我可能错过了一些简单的东西,不确定是什么。我只是在练习并重新创建 Pong,看看它会如何发展。
我有这个:
package com.gibbo.pong;
enter code here
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.CircleShape;
import com.badlogic.gdx.physics.box2d.World;
public class GameScreen implements Screen {
// Object instances
Pong pong;
Paddle paddle;
Walls wall;
Ball ball;
OrthographicCamera cam;
public static World world;
Box2DDebugRenderer debug;
// Booleans for paddles
private boolean playerOne = false;
private boolean playerTwo = false;
// Booleans for walls
private boolean wallTop = false;
private boolean wallBottom = false;
// Fields for the balls
private boolean ballExists = false;
private int ballTotal;
//Array to hold ball objects
Ball[] ballArray = new Ball[3];
// GameScreen default constructor
public GameScreen(Pong pong) {
this.pong = pong;
// Initiate the camera
cam = new OrthographicCamera(20f, 14f);
cam.position.set(10f, 7f, 0);
// Initiate the world, no gravity
world = new World(new Vector2(0, -10), true);
// Initiate the renderer
debug = new Box2DDebugRenderer();
// Initiate the paddle
paddle = new Paddle();
//Initiate the walls
wall = new Walls();
//Initiate the ball
ball = new Ball();
}
public void render(float delta) {
// Clear the screen and fill it black
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// Update the camera
cam.update();
// Render the debug lines
debug.render(world, cam.combined);
// Check if paddles exist, if not create them
if (!playerOne) {
paddle.createPaddle(1, 7);
playerOne = true;
System.out.println("Creating player ones paddle");
}
if (!playerTwo) {
paddle.createPaddle(19, 7);
playerTwo = true;
System.out.println("Creating player twos paddle");
}
//Check if walls exist, if not create them
if(!wallBottom){
wall.createWalls(0, 0.1f);
wallBottom = true;
System.out.println("Creating top wall");
}
if(!wallTop){
wall.createWalls(0, 13f);
wallTop = true;
System.out.println("Creating bottom wall");
}
//Checks if ball exists
if(!ballExists){
ball.createBall(10f, 7f);
ballExists = true;
if(ballTotal == 0){
System.out.println("Creating ball number 1");
ballTotal += 1;
}else{
System.out.println("Creating ball number "+ballTotal + 1);
}
}
if(ball.ballBody.getPosition().x < 0){
System.out.println("Player twos point");
ball.destroyBall();
}
boolean test = true;
if(test){
ball.ballBody.setLinearVelocity(-10, 0);
System.out.println("Does this work?");
}
// Simulate the world with frame rate
// Keep at bottom of render when possible
world.step(1 / 60, 6, 2);
}
我正在使用其他 3 个类,一个用于球,一个用于墙壁,一个用于桨。主要是练习如何让它们一起工作、传递参数等。这里写的所有内容都是来自 LibGDX 站点的教程和 C++ box2d 手册的混合。
这是我的球类:
package com.gibbo.pong;
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.CircleShape;
import com.badlogic.gdx.physics.box2d.Fixture;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.World;
public class Ball {
//Instance of the world
World world;
//Body for the ball
Body ballBody;
//Fixture for the ball
Fixture ballFixture;
public void createBall(float posX, float posY){
//Define a body for the ball
BodyDef ballBodyDef = new BodyDef();
ballBodyDef.type = BodyType.DynamicBody;
ballBodyDef.position.set(posX, posY);
//Define a shape for the ball
CircleShape ballShape = new CircleShape();
ballShape.setRadius(0.50f);
//Define a fixture for the ball
FixtureDef ballFixtureDef = new FixtureDef();
ballFixtureDef.shape = ballShape;
ballFixtureDef.density = 1;
//Create a ball
ballBody = GameScreen.world.createBody(ballBodyDef);
ballFixture = ballBody.createFixture(ballFixtureDef);
ballShape.dispose();
ballBody.setLinearVelocity(-10, 0.1f);
}
相当简单,可以轻松地在 GameScreen 类中实现,但为了练习和整洁,我选择了这个。我尝试在此处和球的 GameScreen 中设置 LinearVelocity,我试图模拟如果球击中 Racket 会发生什么、它会如何 react 以及在屏幕外销毁球的方法是否有效。
但由于某种原因,一切都“卡住了”。仿佛一切都是静止的。我什至尝试在对象数组中创建球,这样我就可以执行 balls[0].setxxxx
但这一切都很有趣。
我需要为我的球和其他类创建一个构造函数吗?我的 Racket 、墙壁和球是否只是不断渲染并被迫保持在同一位置?
关于其中包含 print 方法的随机 if 语句,只是测试是否达到了该方法,因此强制它通过使用该方法来运行。
我在这里有什么失败的地方吗?
提前致谢。
最佳答案
开枪打死我,结果发现整数除法太糟糕了。
我必须改变:
world.step(1/60, 6, 2)
至:
world.step(1f/60f, 6, 2)
哇,这很烦人,但又这么简单,哈哈。
关于java - Box2D + LibGDX pong,所有主体 "stuck",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729797/
我使用 Xcode 和 swift 5 构建了一个应用程序。 每次我点击“简单”、“中等”、“困难”或“2 人”按钮时,我都会收到错误消息: Could not cast value of type
所以我和我的搭档正在尝试制作一个玩家对电脑的乒乓球游戏,但我们就是不知道如何让电脑输。 我们已经完成了基本的工作,它运行良好,但计算机永远不会丢失。我们还尝试使用 sleep 来减慢计算机的速度,但是
我应该如何设计“适当的” OO Pong? 正确的想法是可以更改任何元素:球,球场和 Racket 的形状,增加了障碍,甚至是“助力”,例如“可以将球粘在 Racket 上”。 目前,还有两个紧迫的问
我正在尝试用 Java 制作 Pong 游戏,但在球从 Racket 上弹起时遇到了一些问题。 我有两个桨:左桨1,右桨2。 我的想法如下:ball_Y应该在 Racket 的高度之间,ball_X触
我对 Java 还很陌生,需要一些帮助。我已经创建了 Pong 游戏(使用 Eclipse),并且在大多数情况下,它运行得很好。然而,碰撞检测有些不对劲。球从人类控制的 Racket 上反弹得很好,但
我正在打乒乓球,我已经将球的 x 坐标设置为在它碰到 Racket 时立即反转,并在它没有击中 Racket 时停止。此代码在“大部分”时间都有效,但“有时”球会在没有明显原因的情况下一击中 Rack
我正在创建一个 JS Pong 游戏,但 Pong 游戏中的球在几秒钟后开始滞后。我尝试停止动画帧,优化代码以获得更好的性能并重写球的代码,但没有任何效果。有人可以帮我吗? HTML(无 CSS)
我很困惑为什么我的记分板没有在屏幕上更新。分数正在增加(我用调试器检查过,球也正在居中)。但记分牌根本不更新,它不断显示“0:0” 乒乓球类 package com.dheraxysgames.pon
最近我编写了一个pygame 'Pong',我还没有完成它,因为桨还不能移动。 但是,我在这里遇到了一个问题。因为我想要得到的分数等于球击中 window 边缘的次数。对于我的程序,当球撞到墙壁时,得
嗨,我写了这个简单的碰撞检测和弹跳算法,但是碰撞检测到 y 就好像它是 x 轴一样 bool Ball::DetectCollision(Paddle p) { if(GetPosition().y
我正在用 Python 制作经典的 Pong,但我需要帮助。 对于/在这个游戏中,我想计算球的轨迹,因此对于给定的开始点(在左桨上弹跳)和角度(绿色物体),我想计算终点(蓝色 X)。这一切都是为了将
我有一个 UIImageView,其中加载了一个 png 图像序列。 我的问题是 - 你知道有什么方法可以“乒乓”动画序列吗?这样就从 1-24 向前播放,然后从 24-1 向后播放并循环。 (技术上
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我正在用java制作乒乓球,但敌人的AI没有动。它应该向球移动的方向移动。请问有人可以帮助我吗? 主类: import javax.swing.*; public class Main extends
我正在用java制作一个乒乓球类型的游戏,我试图让球从墙上弹开,但每当球撞到球时,它就会停止,它不会从墙上反射出来,我看不到找出原因。 处理球运动的球类 public class Ball { pri
我正在为我的 Pong 克隆编写一些困难,我写这些是为了熟悉 SFML 和 Xcode。对于最难的难度,我想创建一个人工智能关卡,让计算机立即知道球会去哪里。所以,如果我有 xVelocity 和 y
我是 HTML 5 + Canvas 游戏开发新手。试图在我的 Pong 游戏中为球制作动画。这是我的 code .相关片段: 增加球的速度: Ball.prototype.update = func
好吧,我为此搜索了很多,但我能找到的只是人们说的像 pi * direction,方向是我假设的球进入的角度。但我的问题是,我不知道我是如何得到球进入的角度的,所以我做不到这些。如果有人可以解释我将如
试图在 java 中制作乒乓球但不能同时移动两个 Racket 。您可以移动其中一个,但不能同时移动两者。我是否需要创建具有 2 个不同面板的 2 个线程? 这里是我指定关键事件的地方 public
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我是一名优秀的程序员,十分优秀!