Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 16.01.2023 uwzględniając wszystkie działy

  1. SimianVirus7

    collision_circle

    Oszem, według mojej wiedzy jest zasobożerne. Ja znalazłem na to dwa rozwiązania w swoim projekcie. a) zmiana collision_circle na collision_rectangle - Wiem, że nie zawsze jest to możliwe, ale np. jeśli robisz pole widzenia przeciwnika, to czy circle czy rectangle, efekt jest bardzo do siebie podobny. ( u mnie przy 100 obiektach to uzyskanie 1000fps więcej... dużo.) b) To co najbardziej zwiększa wydajność, to przerzucenie tej funkcji na ten "konkretny typ obiektu" który ma Ci znaleźć. Przykład: - masz 100 przeciwników którzy patrolują teren i sprawdzają czy widzą obiekt gracza np. oPlayer, a więc masz 100 razy collision_circle. Możesz odwrócić sytuacje i to graczowi dać collision_circle czy widzi przeciwników, jeśli tak, zrób np. oEnemy.widze_gracza = true; Wtedy collision_circle występuje tylko 1 raz; Pamiętaj, że zawsze możesz zrobić rodzica obiektów, np. nie musisz pisać collision_circle_list(x, y, 100, oEnemy1); collision_circle_list(x, y, 100, oEnemy2); collision_circle_list(x, y, 100, oEnemy3); collision_circle_list(x, y, 100, oEnemy4); tylko wrzucić jako child do pustego obiektu, np. oEnemies i wtedy collision_circle_list(x, y, 100, oEnemies); PS: Listę tworzymy w create, jeśli damy to w innym miejscu, step czy draw, będzie się ona tworzyć bez końca aż zapełni całą pamięć RAM. Tworzenie jej w step i od razu niszczenie jej przy pomocy ds_list_destroy(), kiedy już zrobi swoje, też negatywnie wpływa na fps;
    1 punkt
Ten Ranking jest ustawiony na Warszawa/GMT+02:00
×
×
  • Dodaj nową pozycję...