Niestandardowe kształty obiektów w grach
Oprócz prostokątnego oraz kolistego możemy przypisać obrazkowi bardziej złożony kształt stosując parametr shape. Oczywiście wcześniej musimy uruchomić zmienną z wymiarami obrazku.
Załadujmy do naszego przykładu dodatkowy obiekt - trójkąt. Bezpośrednie dodanie do silnika tego obiektu następuje nieprawidłowe interpretowanie trójkąta jako prostokąt. By temu zaradzić wystarczy przypisać zmiennej shape punkty obrazku. Zobaczmy jak tego dokonać.
Dodajemy rysunek do projektu a następnie przeciągamy obiekt do kodu, ustalamy pozycję y na 650 pikseli i następnie uruchommy naszą aplikację.
Warto zauważyć, że w ten sposób tworzymy obiekt o prostokątnych kształtach, co nie odzwierciedla taktycznego kształtu przedmiotu. |
Aby uzyskać prawdziwy trójkąt trzeba uwzględnić faktyczne wymiary naszego trójkąta a dokonać tego możemy z pomocą współrzędnych, które musimy sami wyznaczyć.
Aby to zadziałało musimy do kodu dodać:
local trojkat = display.newImage("trojkat.png")
trojkat.y=650
local ksztalt_trojkata={0, 300, 150, 0, 300, 300}
physics.addBody(trojkat, {density=0, friction=1, bounce=0.3, shape=ksztalt_trojkata})
Czyli wstawiamy obrazek "trojkat.png" (polecam ściągnąć na dysk, dodać do projektu i przetestować u siebie) i przesuwamy go na sam dół w punkt y=650.
Następnie tworzymy nową zmienną, tablicę o nazwie ksztalt_trojkata z kolejno punktami x,y, x1,y1, x2,y2 wyznaczającymi kolejne wierzchołki naszego trójkąta.
W klejnym kroku dodajemy objekt do silnika fizyki za pomocą polecenia addBody z dodatkowym parametrem shape=ksztalt_trojkata czyli z naszą tablicą wyznaczającą współrzędne tegoż obiektu.
Problem jednak jest w tym, że ciało fizyczne nie pokrywa się z faktycznym obiektem, zatem piłki będą reagowały na niewidoczny (jeśli włączymy tryb normalny a nie uruchomieniowy) obiekt a nie na ten właściwy. Co należy zatem zrobić, by te figury się pokrywały? Oczywiście wyznaczyć właściwe punkty dla x,y, x1,y1, x2,y2.
Ale przecież nie jest to łatwe, bo z edytora będzie ciężko, gdyby to był prostokąt to może nie byłoby to takie trudne ale przy trójkącie nie mówiąc już o nieregularnych kształtach to probem staje się poważny. Co zatem zrobić?
Jedno z rozwiązań przedstawiam w kolejnym artykule zapraszam do lektury.
Jakie są parametry ciał w Corona
Grawitacja, gęstość, tarcie, sprężystość w grach
Zderzenia obiektów w grach
Zmiana kształtu ciała fizycznego
Niestandardowe kształty obiektów w grach
Gumbo - Jak wyznaczyć kształt w Corona SDK
Prędkość obrotowa w grze
Gęstość przedmiotów - manipulacja
Tarcie w Corona SDK - Przykłady
Zmiana grawitacji dla poszczególnych obiektów
Jak nadać obiektom prędkość w grze?
Tworzenie czujników w grze



