Kim Bo Posted January 17, 2011 Posted January 17, 2011 Witam mam pytanko jak to jest z rysowaniem wycinka koła w AS3. Ogólnie to troszkę szukałem po necie ale interesuje mnie jak można "uaktualniać" rysowanie za pomocą skryptu w momencie natrafienia na jakąś przeszkodę. Np jeśli wycinek koła (około 45stopni) natrafi na przeszkodę na koordynatach od X do Y, to jego koordynaty dostosują się do przeszkody. nędznej jakości przykład robiony na touchpadzie na lapciaku:
Guest ant-3d Posted January 18, 2011 Posted January 18, 2011 Nie pomoge Ci z programowania bo mam o tym male pojecie ale moze podsune rozwiazanie jakiego ja bym szukal. Moze daloby sie to zrobic co chcesz uzywajac mask. AS3 wiec wnioskuje ze chodzi o flasha. Jesli sie myle to sorry, to taka mala sugestia grafika. Jesli chodzi o flasha to sproboj to uzyskac za pomoca mask.
olaf Posted January 18, 2011 Posted January 18, 2011 IMO najlepiej generować wielokąt maskujący i generowanie się koła zostawić tak jak jest. tak byłoby dość prosto.
danilo2 Posted January 18, 2011 Posted January 18, 2011 Kim Bo jakie masz dane wejsciowe? co wiesz ofigurach, jakei sa zalozenia. Bez wiedzy o nich kazde rozwiazanie moze okazac sie glupie za chwile ;]
Kim Bo Posted January 20, 2011 Author Posted January 20, 2011 ok ogólnie muszę zrobić system AI który będzie wyznaczał konkretne "pole widzenia". Dałem w cudzysłowie bo to po prostu pole dwu wymiarowe. Założenie było takie, że: - ustalam sobie promień i kąt, a nasępnie skryptowo rysuję sobie ten wycinek koła (ma być jak najmniej ręcznie wykonanej grafiki); - tworzą się w ten sposób dwie proste pod tym właśnie kątem; - każde naruszenie założenia odległość jakiegoś obiektu - w funkcji sprawdzam czy obiekt wychodzi poza dolną/górną granicę wycinka * jeśli wychodzi od dołu wyznaczamy prostą między punktem 0,0 wycinka koła a najwyższym punktem obiektu i rysujemy "nowy wycinek koła" do, pola którego dodajemy trójkąt wyznaczony brzegiem tego obiektu.. * jeśli wychodzi z góry robimy podobnym sposobem * jeśli obiekt jest po środku rysujemy 2 proste przechodzące przez górny i dolny punkt obiektu dochodzące bezpośrednio do obwodu wycinka kola Tak to by w sumie w miarę działało, ale problem pojawi się gdy obiekt będzie miał nieregularne kształty, obiektów będzie więcej, lub będę próbował "manipulować polem widzenia"(np. obracać je)... jakoś średnio u mnie z matmą ale to jedyne rozwiązane jakie mi przychodzi do głowy. Jakieś sugestie??
danilo2 Posted January 21, 2011 Posted January 21, 2011 sorki za zwloke ale mialem kupe pracy. Mówiąc dane wejsciowe mialem na mysli opis wsyzstkich parametrow jakie znasz na wejsciu problemu, czyli przede wszstkim czym sa obiekty - sa to figury opisane krzywmi parametrycznymi, bimtapy, ... ?
Kim Bo Posted January 23, 2011 Author Posted January 23, 2011 obiekty są wszystkie wykonane we flashu, ale nie są to jakieś konkretne figury opisane geometrycznie. Większość tego co będzie na Stage'u to rzeczy rysowane przez artystów i odpowiednio dostosowane do flasha (przerobione na wektory). Elementy ziemi będą miały tekstury bitmapowe ale wypełnienie będzie chyba w stylu "maze" tzn odpowiednia tekstura przypisana do danej liczby binarnej np pusta przestrzeń 0,trawa 1, hard surface 2(np kostka brukowa) itd..
olaf Posted January 23, 2011 Posted January 23, 2011 Pi pierwsze nie dasz rady z wydajnoscią jak bitmapy beda na scenie zmienione w wektory - flash zamorduje procesor. Licz, ze wszystko musi być zmienione na bitmapData. W zwiazku z tym też bitmapData najszybciej wykona Tobie walidację przestrzeni - jest przeszkoda/nie ma przszkody. Poniewaz wszystko będzie na Stage'u najlepiej próbkować realne wartości np. 3600próbek na ekran rozchodzące się po promieniu i szukające koloru innego niż X (gdzie mozesz zrobic kolorowe maski obiektom jako ich odpowiedniki) po czym malujesz dynamicznie maskę dla takiej siatki. Nie wiem jednak czy wyrobi się w 30fps. Dla Stage potrzebujesz wartości całkowitych, więc moze obliczenie pójdzie zawsze szybko po int(). Po malej optymalizacji moze się okazać, że działa to naprawdę szybko, ale sam bym miał zagwostkę robiąc to i pewnie wolałbym machnąć to jako odpowiednio oskryptowany MC w 2-3 godzinki ;)
Kim Bo Posted July 19, 2011 Author Posted July 19, 2011 Trochę odgrzebuję ale znalazłem rozwiązanie (podstawę do niego), myślę że może się komuś przydać. ola-f szedł dorym tropem :) ale w poniższym przypadku wystarczyło 60 próbek i też działa dosyć dobrze :)))) tutaj step by step AS2: http://www.emanueleferonato.com/2007/09/26/create-a-survival-horror-game-in-flash-tutorial-part-1/ a tutaj gotowiec w AS3: http://www.emanueleferonato.com/2010/06/07/create-a-survival-horror-game-in-flash-as3-version/
olaf Posted July 19, 2011 Posted July 19, 2011 o fajnie bo wlasnie chce robić coś w podobnym stylu, ale założę się, ze da się napisać w 10 linijkach i bez hitTestObject, bo wiecej niż wspomniane 60 próbek obniża wydajność.
Kim Bo Posted July 19, 2011 Author Posted July 19, 2011 to jak dojdziesz do ciekawych rezultatów możesz się zawsze podzielić ;) by się przydały jakieś korepetycje z AS3 bo chyba ostatnio nie ogarniam :/
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now