Skocz do zawartości

Wojzax

Filar Społeczności
  • Postów

    2 749
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    114

Odpowiedzi społeczności

  1. Wojzax odpowiedź w ai Wroga został oznaczony jako odpowiedź   
    https://www.yoyogames.com/blog/64/using-motion-planning
    http://docs.yoyogames.com/source/dadiospice/002_reference/movement and collisions/motion planning/index.html
     
    Najprościej użyć do ruchu wroga wbudowanej funkcji 
    mp_potential_step(xgoal, ygoal, stepsize, checkall)
     
    gdzie:
    xgoal, ygoal - współrzędne gracza
    stepsize - szybkość ruchu w pixelach na klatkę
    checkall - tutaj true (jeśli wróg ma omijać wszystkie obiekty po drodze) lub false (jeśli wróg ma omijać obiekty solid po drodze)
     
    Oczywiście nie jest to idealne rozwiązanie, funkcja polega na tym że program sprawdza przeszkody w najbliższym otoczeniu i zmienia kąt wroga tak aby je omijał, ale nie ma tutaj ogólnego planu więc wróg będzie się często zacinał lub chodził w kółko. Plusem jest mało obliczeń na klatkę.
     

    użycie mp_potential_step daje niezłe wyniki przy prostych przeszkodach
     
    Lepsze jest użycie funkcji z serii mp_grid, za pomocą funkcji takich jak mp grid_add_cell,  add_rectangle, czy add_instance tworzysz mapę kwadracików i dodajesz informację które kwadraciki omijać. Potem dzięki mp_grid_path ustalasz dla obiektu optymalną trasę omijającą przeszkody (oczywiście wróg będzie się poruszał wzdłuż kratek czyli w ośmiu kierunkach).
     
    To podejście jest trudne do zoptymalizowania, jak masz dużą mapę, dużo przeciwników i każdy z nich na poczekaniu aktualizuje sobie pozycję gracza i ciągle oblicza nową trasę może być to mocno niewydajne, ale z drugiej strony będziesz miał pewność że przeciwnik się nie zatnie (ew. uzna że np. nie ma możliwości dojścia do gracza)
     
  2. Wojzax odpowiedź w Problem z obiektem we view został oznaczony jako odpowiedź   
    Tak to wygląda zawsze jak nadasz obiektowi współrzędne viewa, trzęsie się przy poruszaniu.
    Dużo lepiej jest rysować interfejs, masz np. obiekt control czy jakiś inny który służy wyłącznie rysowaniu interfejsu. Sam nie ma żadnego sprite'a i znajduje się w losowym miejscu w roomie, za to w draw dajesz mu np.
    draw_sprite(interfejs_sprite,0,view_xview,view_yview) i problem rozwiązany - przy poruszaniu viewem rysowany interfejs się nie trzęsie.
×
×
  • Dodaj nową pozycję...