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>
This commit is contained in:
parent
7ad3bef8ca
commit
f35a5a6c88
@ -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…
x
Reference in New Issue
Block a user