Untitled
unknown
plain_text
a year ago
1.9 kB
10
Indexable
local player = game.Players.LocalPlayer
local button = script.Parent -- Przyjmuję, że przycisk jest dzieckiem ScreenGui
button.MouseButton1Click:Connect(function()
local position = Vector3.new(-626, 76.226, -771) -- Współrzędne miejsca, w którym chcesz stworzyć kulę
local ball = Instance.new("Part")
ball.Name = "Ball" -- Dodaj nazwę kulki
ball.Shape = Enum.PartType.Ball -- Ustaw kształt na kulę
ball.Size = Vector3.new(2.3, 2.3, 2.3) -- Rozmiar kuli
ball.Position = position
ball.Anchored = false -- Ustawienie na false, aby kulka mogła się poruszać
ball.BrickColor = BrickColor.new("Bright blue") -- Kolor kuli
ball.Parent = workspace
local isFirstBounce = true -- Zmienna, która śledzi, czy to jest pierwsze odbicie
-- Utwórz nową funkcję, która obsługuje zdarzenie kolizji
local function handleCollision(part)
-- Sprawdź, czy kolizją jest kulka
if part.Name == "Ball" then
-- Pobierz normalną powierzchni kolizji
local normal = (part.Position - part.Velocity).Unit
-- Sprawdź, czy to jest pierwsze odbicie
if isFirstBounce then
-- Wygeneruj losowy kierunek w lewo lub prawo
local randomDirection = math.random() > 0.5 and Vector3.new(0, 0, 1) or Vector3.new(0, 0, -1)
part.Velocity = (part.Velocity - 2.1 * (part.Velocity:Dot(normal)) * normal + randomDirection) * 0.9
isFirstBounce = false -- Ustaw, że to nie jest już pierwsze odbicie
else
-- Odbij kulę, zmieniając jej kierunek
part.Velocity = (part.Velocity - 2.1 * (part.Velocity:Dot(normal)) * normal) * 0.9
end
end
end
-- Dodaj funkcję obsługującą zdarzenie kolizji do wszystkich elementów w workspace
for _, obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") and obj ~= ball then
obj.Touched:Connect(handleCollision)
end
end
end)Editor is loading...
Leave a Comment