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_id
hash
).other_position
vector3
).other_group
hash
).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:
position
vector3
)normal
vector3
).relative_velocity
vector3
).distance
number
).applied_impulse
number
).life_time
number
).mass
number
).other_mass
number
).other_id
hash
).other_position
vector3
).group
hash
).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_id
hash
).enter
true
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