Witajcie, ostatnio piszę sobie dla rozrywki taki weekendowy projekt, mianowicie grę z grubsza mówiąc platformową. Ostatnio zacząłem implementować w niej delta-timing, jednak nie mogę sobie poradzić z zaimplementowaniem go do mojego “skakacza”, oto jego kod:
yspeed-=0.2; //ta zmienna
if(Gdx.input.isTouched()) {
if(BaseScreen.getTouchX()<=192&&BaseScreen.getTouchY()<=192) {
setRotation(270);
yspeed-=0.2; //ta zmienna
}
}
else setRotation(0);
if(getY()+yspeed<128) {
setPosition(getX(),128);
yspeed=0; //ta zmienna
}
else {
for(Sprite i:gs.manager.objects) {
if(i.getX()+i.getWidth()>=0&&i.getX()<=960) {
if(i.getTexture()==gs.manager.crate&&
getX()+getWidth()>=i.getX()&&
getX()<=i.getX()+i.getWidth()&& //mniej istotna część
getY()>=i.getY()+i.getHeight()&&
getY()+yspeed
setPosition(getX(),i.getY()+i.getHeight());
yspeed=0;
}
}
}
}
if(Gdx.input.justTouched()&&BaseScreen.getTouchX()>=768&&BaseScreen.getTouchY()<=192&&yspeed==0) yspeed=10; //ta zmienna
setPosition(getX(),getY()+yspeed); //o, to też chyba ważne
Mój delta-timing to zmienna, powiedzmy “delta”. Poruszanie czegoś z jego pomocą wygląda mnw. tak:
setX(getX()+300*delta,0);
Próbowałem samemu coś kombinować i mnożyć w różnych miejscach zmienną yspeed przez deltę ale efekty były dalekie od oczekiwanych.
Potrzebuje pomocy nie tyle od strony programistycznej, tylko od kogokolwiek kto umie myśleć
Pozdrawiam.