This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Kiedy dwa obiekty kolizji kolidują ze sobą, silnik wysyła wiadomości do wszystkich komponentów w obu tych obiektach:
Odpowiedź na kolizję "collision_response" to wiadomość wysyłana do wszystkich obiektów w przypadku ich kolizji. Zawiera ona następujące pola:
other_idhash).other_positionvector3).other_grouphash).Wiadomość "collision_response" jest odpowiednia do rozwiązywania kolizji, gdzie nie potrzebujesz szczegółów dotyczących rzeczywistego przecięcia (intersection) obiektów, na przykład, jeśli chcesz wykryć tylko czy pocisk trafia wroga. W ciągu jednej klatki jest wysyłana tylko jedna z tych wiadomości dla każdej pary obiektów kolidujących ze sobą.
function on_message(self, message_id, message, sender)
-- check for the message
if message_id == hash("collision_response") then
-- take action
print("I collided with", message.other_id)
end
end
Odpowiedź punktu kontaktu "contact_point_response" to wiadomość wysyłana, gdy jeden z kolidujących obiektów jest dynamiczny lub kinematyczny. Zawiera ona następujące pola:
positionvector3)normalvector3).relative_velocityvector3).distancenumber).applied_impulsenumber).life_timenumber).massnumber).other_massnumber).other_idhash).other_positionvector3).grouphash).Dla gry lub aplikacji, w których potrzebujesz idealnie rozdzielać obiekty, wiadomość "contact_point_response" dostarcza wszystkie informacje, których potrzebujesz. Należy jednak zauważyć, że w przypadku danej pary kolizji, w zależności od charakteru kolizji, można otrzymać wiele wiadomości "contact_point_response" w jednej klatce. Zobacz szczegóły w instrukcji do rozwiązywania kolizji.
function on_message(self, message_id, message, sender)
-- check for the message
if message_id == hash("contact_point_response") then
-- take action
if message.other_mass > 10 then
print("I collided with something weighing more than 10 kilos!")
end
end
end
Odpowiedź na wyzwalacz "trigger_response" to wiadomość wysyłana, gdy obiekt kolidujący ma typ "trigger" (wyzwalacz).
W kolizji typu “trigger” są wysyłane wiadomości "collision_response". Dodatkowo, wyzwalacze wysyłają również specjalną wiadomość "trigger_response" na początku i na końcu kolizji. Wiadomość ta zawiera następujące pola:
other_idhash).entertrue jeśli interakcja była wejściem do wyzwalacza, false, jeśli była wyjściem (typ boolean).function on_message(self, message_id, message, sender)
-- check for the message
if message_id == hash("trigger_response") then
if message.enter then
-- take action for entry
print("I am now inside", message.other_id)
else
-- take action for exit
print("I am now outside", message.other_id)
end
end
end
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB