Skocz do zawartości

Reveres

Członkowie
  • Postów

    1
  • Dołączył

  • Ostatnio

Posty napisane przez Reveres

  1. Witam.

    Mam taki kod: 

    public boolean isCollised(){
    		for(Collision c1:MyGdxGame.collisionManager.getCollisionList()){
    			if(!c1.equals(this)){
    				if(c1.overlaps(this)){
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    	
    	public boolean isCollOnRight(){
    		for(Collision c1:MyGdxGame.collisionManager.getCollisionList()){
    			if(!c1.equals(this)){
    				return (this.isCollised() && (this.x < c1.x) && (c1.x < this.x + this.width));
    			}
    		}
    		return false;
    	}
    	public boolean isCollOnLeft(){
    		for(Collision c1:MyGdxGame.collisionManager.getCollisionList()){
    			if(!c1.equals(this)){
    				return (this.isCollised() && (c1.x < this.x) && (this.x < c1.x + c1.width));
    			}
    		}
    		return false;
    	}
    	public boolean isCollOnTop(){
    		for(Collision c1:MyGdxGame.collisionManager.getCollisionList()){
    			if(!c1.equals(this)){
    				return (this.isCollised() && (c1.y < this.y + this.height) && (this.y + this.height < c1.y));
    			}
    		}
    		return false;
    	}
    	public boolean isCollOnBottom(){
    		for(Collision c1:MyGdxGame.collisionManager.getCollisionList()){
    			if(!c1.equals(this)){
    				return (this.isCollised() && (this.y < c1.y + c1.height) && (c1.y + c1.height < this.y + this.height));
    			}
    		}
    		return false;
    	}

    I mam  problem otóż taki:

    Piszę grę 2D RPG("style") i chcę wykryć kolizje tylko z jednej strony, aby zablokować ruch w danym kierunku.

    Napisałem taki kod, wzorowany na tutorialu z kolizji ale w C++, i kolizja dział w następujący sposób:

    -Po uderzeniu gracza w obiekt z prawej storny, powyżej niż połowa tego obiektu, wykrywa że zderzenie gracza nastąpiło z góry i prawej strony, gdy jest gracz poniżej połowy obiektu to wykrywa jako zderzenie gracza od dołu i prawej strony.

    -Po uderzeniu gracza w obiekt z lewej storny, powyżej niż połowa tego obiektu, wykrywa że zderzenie gracza nastąpiło z lewej i prawej strony, gdy jest gracz poniżej połowy obiektu to wykrywa jako zderzenie gracza od dołu i lewej strony.

    -Po uderzeniu gracza w obiekt od dołu, powyżej niż połowa szerokości tego obiektu, wykrywa że zderzenie gracza nastąpiło z góry i prawej strony, gdy jest gracz poniżej połowy szerokości obiektu to wykrywa jako zderzenie gracza od dołu i prawej strony.

    -Po uderzeniu gracza w obiekt od góry, powyżej niż połowa szerokości tego obiektu, wykrywa że zderzenie gracza nastąpiło z dołu i prawej strony, gdy jest gracz poniżej połowy szerokości obiektu to wykrywa jako zderzenie gracza od dołu i prawej strony.

     

    Jak wyeliminować, aby zwracało tylko jedną kolizje w danym momencie, a dokładniej jak uderzę graczem o obiekt z lewej strony to wykrywa kolizje z prawej strony względem gracza jak napisałem to powyżej.

    PS.: Dodam że w libGDX kordy 0,0 zaczynają się w lewym dolnym rogu, a nie jak standardowo lewy górny róg.

    Proszę o pomoc i dziękuję za nią.

×
×
  • Utwórz nowe...