Untitled

 avatar
unknown
plain_text
a year ago
1.9 kB
6
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