如何停止运球



我正在使用libGDX制作一个新的突破游戏(我是libGDX的新手(,在游戏中,每当球碰到球拍时,它就开始运球而不会在上面弹跳。

我已经尝试过在这个游戏中改变球的y速度。

这是我的球课的代码。

package com.thejavabay.my_game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Circle;
import com.badlogic.gdx.math.Intersector;
public class Ball{
    int x;
    int y;
    int size;
    int xSpeed;
    int ySpeed;

    Circle cic = new Circle();

    Color color = Color.WHITE;
    public Ball(int x, int y, int size, int xSpeed, int ySpeed) {
        this.x = x;
        this.y = y;
        this.size = size;
        this.xSpeed = xSpeed;
        this.ySpeed = ySpeed;
    }
    public void update() {
        x += xSpeed;
        y += ySpeed;
        if (x < size || x > Gdx.graphics.getWidth() - size) 
            xSpeed = -xSpeed;

        if (y < size || y > Gdx.graphics.getHeight() - size) 
            ySpeed = -ySpeed;

    }
    public void draw(ShapeRenderer shape) { 

        cic.x = x;
        cic.y = y;
        cic.radius = size;
                shape.setColor(color);
                shape.circle(x, y, size);


        shape.circle(x, y, size);
    }
    private static boolean collidesWith(Paddle paddle, Ball ball) {
        if(Intersector.overlaps(ball.cic, paddle.rect))
            return true;
        else
            return false;
    }
    public void checkCollision(Paddle paddle, Ball ball) {
        if(collidesWith(paddle, ball)) {
            ySpeed = -ySpeed;

        }


    }

}

我预计球会从球拍上反弹,但它一直在球拍上滴落。

如果您的执行顺序是paint((->update((->checkCollision(( or paint((->checkCollision->update((

因此,在第一次碰撞后,每三次碰撞检查将返回 true,您的速度将乒乓球

而且由于您在绘画中有 circle.x,它将每 2 帧恢复到原始位置。修复后的更新应如下所示。但在看之前,请自己解决。

public void update(){
    x += xSpeed;
    y += ySpeed;
    if (x < size || x > Gdx.graphics.getWidth() - size) 
        xSpeed = -xSpeed;

    if (y < size || y > Gdx.graphics.getHeight() - size) 
        ySpeed = -ySpeed; 
    cic.x = x;
    cic.y = y;
    cic.radius = size;
}

相关内容

  • 没有找到相关文章

最新更新