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) {
|
public LevelRenderer(Panel panel) {
|
||||||
super(panel);
|
super(panel);
|
||||||
this.setSprite(Sprite.TILE_SHEET);
|
this.setSprite(Sprite.TILE_SHEET);
|
||||||
setY(Tile.TILE_HEIGHT*0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -47,7 +46,7 @@ public class LevelRenderer extends Object{
|
|||||||
* @param object
|
* @param object
|
||||||
*/
|
*/
|
||||||
protected void Draw_Object(Object 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) {
|
private void DrawTile(double x, double y, Tile tile) {
|
||||||
|
@ -6,6 +6,7 @@ import sig.engine.Panel;
|
|||||||
import sig.engine.Sprite;
|
import sig.engine.Sprite;
|
||||||
import sig.map.CollisionType;
|
import sig.map.CollisionType;
|
||||||
import sig.map.Tile;
|
import sig.map.Tile;
|
||||||
|
import sig.map.View;
|
||||||
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
@ -42,10 +43,36 @@ public class Player extends Object{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(double updateMult) {
|
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 right = KeyHeld(KeyEvent.VK_RIGHT)?1:0;
|
||||||
int left = KeyHeld(KeyEvent.VK_LEFT)?1:0;
|
int left = KeyHeld(KeyEvent.VK_LEFT)?1:0;
|
||||||
|
|
||||||
|
|
||||||
x_velocity =
|
x_velocity =
|
||||||
Math.abs(x_velocity+x_acceleration*updateMult)>x_velocity_limit
|
Math.abs(x_velocity+x_acceleration*updateMult)>x_velocity_limit
|
||||||
?Math.signum(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