Przeszukaj forum
Pokazuję wyniki dla tagów 'kolizji'.
Znaleziono 1 wynik
-
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ą.