Delta-timing a... skakanie


(Marcinch7) #1

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ć :wink:

Pozdrawiam.