ich mache fortschritte mit meinem ersten sidescroller für android, die bewegung nach rechts und links, das springen, die kollisionserkennung und die gravitation funktionieren, aber ich komme nicht wirklich weiter beim klettern-feature.
ich habe ein block objekt erstellt, mit dem der spieler kollidiert, und als abgeleitete klasse einen anderen block, mit dem der spieler nicht kollidiert, aber dran hochklettern kann. wenn er kollidieren würde dann könnte er nicht hochklettern, aber ich will dass der spieler oben auch auf diesem block stehen kann.
für die kollisionserkennung benutze ich für jede richtung je eine methode, die die bounds immer um 1 pixel verschiebt und im falle einer kollision den abstand zurückgibt.
es gibt abstand-1 zurück weil es vorher irgendwelche faxen gemacht hat die ich nicht nachvollziehen konnte.
um zu überprüfen ob der spieler klettern kann hab ich diese methode:
also der spieler sollte durch die climbable blocks durchlaufen können, wenn unter ihm normale blocks sind, und auf befehl hochklettern. er sollte auch oben darauf stehen können und auf befehl runterklettern können.
hat jemand irgendwelche tipps oder verbesserungsvorschläge oder gedankenanstöße?
ich habe ein block objekt erstellt, mit dem der spieler kollidiert, und als abgeleitete klasse einen anderen block, mit dem der spieler nicht kollidiert, aber dran hochklettern kann. wenn er kollidieren würde dann könnte er nicht hochklettern, aber ich will dass der spieler oben auch auf diesem block stehen kann.
für die kollisionserkennung benutze ich für jede richtung je eine methode, die die bounds immer um 1 pixel verschiebt und im falle einer kollision den abstand zurückgibt.
Java:
public int abstandRechts() {
int abstand = 0;
int limit;
if (xSpeed < 0) {
limit = -xSpeed;
} else {
limit = xSpeed;
}
for (int i = 0; i < limit; i++) {
Rect bounds = new Rect(x + i, y, x + i + width, y + height);
if (collision(gameView.sprites, bounds)) {
break;
}
abstand++;
}
return abstand - 1;
}
es gibt abstand-1 zurück weil es vorher irgendwelche faxen gemacht hat die ich nicht nachvollziehen konnte.
um zu überprüfen ob der spieler klettern kann hab ich diese methode:
Java:
public boolean canClimb()
{
for(Sprite s:gameView.sprites)
{
Rect r=s.bounds;
if(r!=null)
{
if(r.intersect(bounds))
{
if(s.climbable)
{
return true;
}
}
}
}
return false;
}
hat jemand irgendwelche tipps oder verbesserungsvorschläge oder gedankenanstöße?