Camera recognition in player object and fix pixel flickering for camera-followed objects

Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com>
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2 3 years ago
parent 7ad3bef8ca
commit f35a5a6c88
  1. 3
      src/sig/objects/LevelRenderer.java
  2. 29
      src/sig/objects/Player.java

@ -13,7 +13,6 @@ public class LevelRenderer extends Object{
public LevelRenderer(Panel panel) {
super(panel);
this.setSprite(Sprite.TILE_SHEET);
setY(Tile.TILE_HEIGHT*0);
}
@Override
@ -47,7 +46,7 @@ public class LevelRenderer extends Object{
* @param object
*/
protected void Draw_Object(Object object) {
super.Draw_Sprite(object.getX()-this.getX()-object.getSprite().getWidth()/2, object.getY()-this.getY()-object.getSprite().getHeight()/2, object.getSprite());
super.Draw_Sprite(Math.round(object.getX()-this.getX()-object.getSprite().getWidth()/2), Math.round(object.getY()-this.getY()-object.getSprite().getHeight()/2), object.getSprite());
}
private void DrawTile(double x, double y, Tile tile) {

@ -6,6 +6,7 @@ import sig.engine.Panel;
import sig.engine.Sprite;
import sig.map.CollisionType;
import sig.map.Tile;
import sig.map.View;
import java.awt.event.KeyEvent;
@ -42,10 +43,36 @@ public class Player extends Object{
@Override
public void update(double updateMult) {
handleMovementPhysics(updateMult);
int tileX = (int)(getX())/Tile.TILE_WIDTH;
int tileY = (int)(getY())/Tile.TILE_HEIGHT;
View currentView = RabiClone.CURRENT_MAP.getView(tileX, tileY);
switch (currentView) {
case DIRECT_FOLLOW:
RabiClone.level_renderer.setX(getX()-RabiClone.BASE_WIDTH/2);
RabiClone.level_renderer.setY(getY()-RabiClone.BASE_HEIGHT/2);
break;
case FIXED:
break;
case LIGHT_FOLLOW:
break;
case LIGHT_HORIZONTAL_FOLLOW:
break;
case LIGHT_VERTICAL_FOLLOW:
break;
default:
break;
}
}
private void handleMovementPhysics(double updateMult) {
int right = KeyHeld(KeyEvent.VK_RIGHT)?1:0;
int left = KeyHeld(KeyEvent.VK_LEFT)?1:0;
x_velocity =
Math.abs(x_velocity+x_acceleration*updateMult)>x_velocity_limit
?Math.signum(x_velocity+x_acceleration*updateMult)*x_velocity_limit

Loading…
Cancel
Save