Tuesday, 15 April 2014

java - Rectangles are not colliding? -



java - Rectangles are not colliding? -

player class

public class player extends sprite implements inputprocessor { public vector2 velocity = new vector2(); private float speed = 500; public rectangle rectangle; public player(sprite sprite){ super(sprite); this.rectangle = sprite.getboundingrectangle(); } public void draw(spritebatch spritebatch){ update(gdx.graphics.getdeltatime()); super.draw(spritebatch); } public void update(float delta) { rectangle = new rectangle(getx() + velocity.x * delta,0,rectangle.getwidth(),rectangle.getwidth()); setx(getx() + velocity.x * delta); } }

playscreen class

public class playscreen implements screen { private player player; private orthographiccamera camera; private orthogonaltiledmaprenderer renderer; private tiledmap map; private rectangle rightrectangle, leftrectangle, playerrectangle; //private shaperenderer shaperenderer; @override public void render(float delta) { gdx.gl.glclearcolor(0, 0, 0, 1); gdx.gl.glclear(gl20.gl_color_buffer_bit); renderer.render(); renderer.getspritebatch().begin(); player.draw(renderer.getspritebatch()); renderer.getspritebatch().end(); //shaperenderer.begin(shapetype.filled); //shaperenderer.setcolor(0, 1, 0, 1); //shaperenderer.rect( // player.getx() + player.velocity.x * delta, 0, // player.rectangle.getwidth(), player.rectangle.getheight()); //shaperenderer.end(); } @override public void resize(int width, int height) { camera.viewportwidth = width; camera.viewportheight = height; camera.update(); } @override public void show() { photographic camera = new orthographiccamera(); map = new tiledmap(); renderer = new orthogonaltiledmaprenderer(map); //shaperenderer = new shaperenderer(); player = new player(new sprite(new texture("img/player.png"))); rightrectangle = new rectangle(1280,0,0,720); leftrectangle = new rectangle(0,0,0,720); boolean wallleft = leftrectangle.overlaps(player.rectangle); boolean wallright = rightrectangle.overlaps(player.rectangle); if(wallleft){ system.out.println("wallleft overlap"); player.velocity.x = 0; } else if(wallright){ system.out.println("wallright overlap"); player.velocity.x = 0; } player.setposition( gdx.graphics.getwidth()/2f - player.getwidth()/2f, gdx.graphics.getheight()/2f - player.getheight()/2f - gdx.graphics.getheight()/5f); } }

doesn't seem colliding correctly. rightrectangle , leftrectangle screen side bounds. when utilize shaperenderer, produces shaperendered rectangle , follow player around. however, believe player.rectangle not moving @ reason, resulting in not colliding side bounds. help appreciated!

rightrectangle = new rectangle(1280,0,0,720); leftrectangle = new rectangle(0,0,0,720);

a rectangle defined rectangle(x, y, width, height). looks trying define incorrectly rectangle(x1, y1, x2, y2). in above, have created 2 rectangles of 0 width.

java libgdx collision rectangles

No comments:

Post a Comment