java - Issues moving objects with a trail with slight change -
so i've been trying modify code bit, , i'm confused why code going working 1 way doing different such minor change. i've been debugging , changing minor things, yet when make change, trail clumps instead of keeping distance.
objective: i'm trying figure out why minor change clumping trail instead of keeping distance.
here player moving before minor code change , works perfectly.
public void move(int delta){ float movespeed = playerspeed * delta; if(ismoving() && (player.get(0).getx() == playerdest.get(0).getx()) && (player.get(0).gety() == playerdest.get(0).gety())){ for(int = 1; < getsize(); i++){ if(playerdest.get(i).getx() != player.get(i-1).getx()){ playerdest.get(i).setx(player.get(i - 1).getx()); } else if(playerdest.get(i).gety() != player.get(i-1).gety()){ playerdest.get(i).sety(player.get(i - 1).gety()); } } if(left){ playerdest.get(0).setx(player.get(0).getx() - blocksize); } else if(right){ playerdest.get(0).setx(player.get(0).getx() + blocksize); } else if(up){ playerdest.get(0).sety(player.get(0).gety() - blocksize); } else if(down){ playerdest.get(0).sety(player.get(0).gety() + blocksize); } } else{ for(int = 0; < getsize(); i++){ if(up || down){ if(player.get(i).getx() != playerdest.get(i).getx()){ player.get(i).setx(player.get(i).getx() + movedirection(playerdest.get(i).getx(), player.get(i).getx(), movespeed)); } else if(player.get(i).gety() != playerdest.get(i).gety()){ player.get(i).sety(player.get(i).gety() + movedirection(playerdest.get(i).gety(), player.get(i).gety(), movespeed)); } } else if(right || left){ if(player.get(i).gety() != playerdest.get(i).gety()){ player.get(i).sety(player.get(i).gety() + movedirection(playerdest.get(i).gety(), player.get(i).gety(), movespeed)); } else if(player.get(i).getx() != playerdest.get(i).getx()){ player.get(i).setx(player.get(i).getx() + movedirection(playerdest.get(i).getx(), player.get(i).getx(), movespeed)); } } private float movedirection(float to, float from, float movespeed){ if(to - > 0){ return 1; } else if(to - < 0){ return -1; } else{ return 0; } } now minor change within movedirection() method , readjusting distance. add in variable of movement speeds.
if(left){ playerdest.get(0).setx(player.get(0).getx() - movespeed); } else if(right){ playerdest.get(0).setx(player.get(0).getx() + movespeed); } else if(up){ playerdest.get(0).sety(player.get(0).gety() - movespeed); } else if(down){ playerdest.get(0).sety(player.get(0).gety() + movespeed); } private float movedirection(float to, float from, float movespeed){ return integer.signum((int)to - (int) from) * movespeed; } why making minor change way player moves? depending on how fast game refreshing, need use value. hence variable delta , float movespeed;
i don't understand why minor change making trail clump , not following directions... i've been trying different ways hours now. appreciated!
thank you!
the cast int ((int)to - (int) from) big change. rounds to , from down integral numbers, calculates difference , calls signum. different previous code calculated differences floating point numbers , checked > 0 or < 0, without cast integral numbers.
example:
to = 0.9 = 0.2 this result in
integer.signum(0 - 0) * movespeed , evaluates 0.
try java.lang.math.signum(to - from) * movespeed instead. works floats.
Comments
Post a Comment