Roblox Wiki
Advertisement

Teleportem w tym artykule nazwiemy dwa klocki. Jeżeli dotkniemy jednego, przenosi nas do drugiego i odwrotnie. Jest to bardzo prosta konstrukcja, jednak jeżeli komuś zależy, to może wzbogacić swój teleport np. o wybór miejsca w menu lub coś innego. My jednak zajmiemy się podstawą tego sprzętu.

Model[]

Model jest banalnie prosty. Tworzymy dwa klocki. Jeden nazywamy t0, a drugi t1. Łączymy je w model i to tyle. Jeżeli chcesz możesz jakoś wzbogacić te modele, ale to już nie mój interes.

Skrypt[]

Skrypt także nie należy do wielce zaawansowanych. Po prostu stwórzmy skrypt w naszym modelu i zacznijmy kodzić.

Na początku stwórzmy zmienną typu logicznego i nadajmy jej wartość prawdziwą. Zmienna ta będzie mówiła czy teleport będzie mógł działać, czy nie po odczekaniu pewnego czasu od ostatniego użycia(później dowiesz się więcej):

w=true

Na początku stórzmy funkcję, którą ja nazwę tport() i dajmy jej dwa argumenty - brick1 i brick2:

function tport(brick1, brick2)
    
end

Teraz musimy sprawdzić, czy dotyka naszego klocka brick1 jakiś inny klocek. W tym celu użyjemy event'u który wywoła funkcję, gdy wejdzie z jakimś obiektem w kolizję i zwróci do funkcji obiekt dotkniętego klocka - Touched. Umieśćmy ją wewnątrz funkcji:

brick1.Touched:connect(function(part)

end)

Teraz musimy sprawdzić, czy klocek należy do postaci, czy w jest prawdziwe i czy rodzić klocka jest Modelem, ponieważ funkcja której użyjemy działa wyłącznie na Modelach:

if part.Parent:FindFirstChild("Humanoid") ~= nil and w and part.Parent.ClassName == "Model" then
            
end

Już wiemy, kiedy trzeba teleportować, ale w jaki sposób teleport ma działać? Po prostu przeniesiemy model postaci do pozycji drugiego klocka za pomocą funkcji MoveTo():

part.Parent:MoveTo(brick2.Position);

Aby nasza postać nie wpadła w pętlę nadajmy fałszywą wartość zmiennej w i po dwóch sekundach ją przywróćmy. Aby było widać, że teleport jest nieaktywny, nadamy mu półprzezroczystość:

w=false;
brick1.Transparency = 0.4;
brick2.Transparency = 0.4;
wait(2);
w=true;
brick1.Transparency = 0;
brick2.Transparency = 0;

Teraz uzyskajmy dostęp do naszych dwóch klocków w modelu(po za funkcją):

T0 = script.Parent:FindFirstChild("t0");
T1 = script.Parent:FindFirstChild("t1");

I wykonajmy funkcję dwukrotnie z odwrotnymi argumentami:

tport(T0, T1);
tport(T1, T0);

Cały skrypt[]

w=true;
T0 = script.Parent:FindFirstChild("t0");
T1 = script.Parent:FindFirstChild("t1");

function tport(brick1, brick2)
    brick1.Touched:connect(function(part)
        if part.Parent:FindFirstChild("Humanoid") ~= nil and w and part.Parent.ClassName == "Model" then
            part.Parent:MoveTo(brick2.Position);
            w=false;
            brick1.Transparency = 0.4;
            brick2.Transparency = 0.4;
            wait(2);
            w=true;
            brick1.Transparency = 0;
            brick2.Transparency = 0;
        end
    end)
end

tport(T0, T1);
tport(T1, T0);
Advertisement