Я новичок и следую учебному пособию по кодированию flappy bird в android studio. У меня есть 2 вопроса по поводу кода ниже. Первый кадр птицы падает на 10 пикселей (= GRAVITY). Затем количество кадров умножается на 10 пикселей каждого кадра, чтобы он падал быстрее с каждым кадром. Но какая польза от speed.scl (1 / dt)? Также возможно я понимаю что-то не так? И почему падение выглядит плавным? Я ожидал бы, что это выглядело более резким, потому что птица перемещается на много пикселей в каждом кадре.
if(position.y>0){
velocity.add(0, GRAVITY, 0); // bird falls 15 pixels above ground
}
velocity.scl(dt); //multiply gravity with dt (frame) -> gravity gets larger
position.add(0, velocity.y, 0);
if(position.y<0){
position.y=0; // bird doesn't fall through ground
}
velocity.scl(1/dt); // what does this do
Полный класс птицы:
private static final int GRAVITY = -10;
private Vector3 position;
private Vector3 velocity;
private Texture bird;
public Bird(int x, int y){
position = new Vector3(x,y,0);
velocity=new Vector3(0,0,0);
bird = new Texture("Flappy-midflap.png");
}
public void update(float dt){
if(position.y>0){
velocity.add(0, GRAVITY, 0); // bird falls 15 pixels above ground
}
velocity.scl(dt); //multiply gravity with dt (frame) -> gravity gets larger
position.add(0, velocity.y, 0);
if(position.y<0){
position.y=0; // bird doesn't fall through ground
}
velocity.scl(1/dt); // what does this do
}
public void jump(){
velocity.y = 250;
}
public Vector3 getPosition() {
return position;
}
public Texture getTexture() {
return bird;
}