Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

obracanie obiektów oraz funkcja intersect

Ostatnio zmodyfikowano 2017-12-25 15:45
Autor Wiadomość
Corvette653
Temat założony przez niniejszego użytkownika
obracanie obiektów oraz funkcja intersect
» 2017-12-21 19:57:10
mam pewien problem z moją grą stworzoną w SFML.
Gra polega na przejściu przez "labirynt"(tor przeszkód) tak aby nie dotknąć linii.
dotknięcie sprawdzam tak:
C/C++
sprite.getGlobalBounds().intersects( sciana1.getGlobalBounds() )
niestety gdy użyje np:
C/C++
sciana1.rotate( 90 )
to nadal program sprawdza pierwsze współrzędne mimo tego że ściana rysuje się w innym miejscu(co potwierdza że współrzędne się zmieniły)

obrazując

--------------------------
rotate(90)
           |
      ---  |
___| |_|__________ - .intersects zwraca prawdę ponieważ użytkownik "wszedł" ścianę, a dokładniej w jej stare współrzędne
      ---  |
           |
           |

           |
______|_________
           |
           |
          ---
          | | - .intersects zwraca fałsz ponieważ użytkownik nie dotknął starych współrzędnych ściany
          ---
           |


---
| | - obiekt którym porusza się użytkownik
---

_____ - stare współrzędne tak naprawdę tam nic nie ma

||| oraz ---- - "ściana"

EDIT:
problem dotyczy sytuacji w której po każdym przejściu programu ściana obraca się o 0.01 stopnia
czyli
rotate 0.01
intersects
rotate 0.01
intersects
rotate 0.01
intersects
rotate 0.01
intersects
rotate 0.01
intersects
itd..
nie chciałem już kombinować z ctime a tak to działa dodatkowo bardzo płynnie a nie skoki o kilka stopni co 0.5s

P-168045
pekfos
» 2017-12-21 22:49:34
Takie sprawdzanie kolizji nie będzie działać poprawnie dla obiektów innych niż prostokąty z bokami równoległymi do osi układu.
P-168046
Corvette653
Temat założony przez niniejszego użytkownika
» 2017-12-22 07:46:51
Każdy intersects dziala tylko dla prostokątów poniewaz on sprawdza najdalej wysunięte punkty (4) i tworzy z nich jakby prostokąt

------------------
|      /\      |
|     /  \     |  
|    /    \    | 
|   /      \   |  
|  /        \  |
| /          \ |
|/            \|
/              \
________________

_ wspolny bok trójkąta i intersects
/\ trójkąt
|- intersects
Tak to u mnie dziala gdy dam intersects na trójkąt.
A co do boków równoległych do osi układu współrzędnych to czm i jak sprawdzac aby działało? Bo tego nie rozumiem
P-168054
Corvette653
Temat założony przez niniejszego użytkownika
» 2017-12-25 11:56:19
naprawdę nie ma żadnego prostego sposobu na sprawdzanie kolizji kwadratu z np.: trójkątem, ponieważ myślę że chodzi właśnie o boki równoległe do układu współrzędnych a w trójkącie takie są max 2 boki (trójkąt prostokątny)
P-168101
pekfos
» 2017-12-25 15:45:30
Zdefiniuj "prosty sposób". Gotowiec z SFMLa? Wtedy nie ma.
P-168108
« 1 »
  Strona 1 z 1