DistanceFade – Um efeito de redução de transparência para seus jogos.

Roblox Studio, Programação com Roblox, Criar games com Roblox, Programação para crianças, Curso grátis de programação, Curso de Roblox grátis

 

O que é DistanceFade?


DistanceFade é um módulo que visa recriar shaders de redução de transparência comumente encontrados em jogos fora do Roblox.

O módulo funciona essencialmente “projetando” o efeito em uma tabela de partes alvo. As partes podem ser organizadas com tamanhos e rotações variados para criar diferentes formas para o efeito (a miniatura é de 3 partes organizadas em uma curva, por exemplo). 21 configurações de personalização diferentes permitem efeitos mais complicados, como texturas animadas, deslocamentos de textura, cores e muito mais.

Nota:
O módulo como está agora é mais uma base do que uma solução perfeita… não está perfeitamente otimizado e ainda tem algumas falhas. Eu o fiz para um caso de uso específico no meu jogo (barreiras de mapa que desaparecem quando fechadas), mas projetei o módulo para ser bastante flexível no que pode ser usado. Provavelmente não o atualizarei, então sinta-se à vontade para modificá-lo e redistribuí-lo como achar melhor.

Exemplos


 

Downloads


DistânciaFade.rbxm (15,6 KB) Modelos de template

Download Modelo para ROBLOX STUDIO (caixa de ferramentas)

Uso básico


 

Etapa 1 – Inicialização

Requer o módulo e inicializa-o usando o construtor .new(). Você pode ter vários objetos forcefield em execução no mesmo script

local DistanceFade = require(game.ReplicatedStorage.DistanceFade) -- or wherever the module is located
local distanceFadeObj = DistanceFade.new() --initialize the object

Etapa 2 – Adicionar faces alvo

DistanceFade funciona aplicando o efeito a faces individuais BasePart. Para cada face na qual você deseja ter o efeito, você precisa usar :AddFace() com 2 parâmetros, a parte alvo e o Enum.NormalId da face

local partToAdd -- can be any BasePart
distanceFadeObj:AddFace(partToAdd, Enum.NormalId.Front) -- can add to any face, in this case the front and back of the part
distanceFadeObj:AddFace(partToAdd, Enum.NormalId.Back)

Etapa 3 – Executando o efeito

Use :Step() para atualizar a simulação a qualquer momento. Use Heartbeat para um efeito visualmente suave. O parâmetro TargetPos é um Vector3

game:GetService("RunService").Heartbeat:Connect(function()
	local targetPos -- the position the effect is centered around
	distanceFadeObj:Step(targetPos) -- if parameter is nil, automatically targets local character's root part
end)

Etapa 4 – Aplicar configurações

Use :UpdateSettings() para atualizar o efeito a qualquer momento (aplica as configurações a todas as faces desse objeto). Se você quiser atualizar o efeito em faces individuais, use :UpdateFaceSettings() (substitui as configurações do objeto)

game:GetService("RunService").Heartbeat:Connect(function()
	local newSettings = {} --table of settings to modify. Full list below
	distanceFadeObj:UpdateSettings(newSettings)

	local targetPos -- the position the effect is centered around
	distanceFadeObj:Step(targetPos) -- if parameter is nil, automatically targets local character's root part
end)

Lista completa de configurações:

local DEFAULT_SETTINGS = {
	["DistanceOuter"] = 16, -- Distance at which the effect starts to appear
	["DistanceInner"] = 4, -- Distance at which the effect is fully visible
	["EffectRadius"] = 16, -- Size of the effect when in range
	["EffectRadiusMin"] = 0, -- Size of the effect when out of range
	["EdgeDistanceCalculations"] = false, -- When set to true, distance to target is calculated from the face edges rather than the face itself. Can be more accurate in certain cases
	["Texture"] = "rbxassetid://18838056070", -- TextureId
	["TextureTransparency"] = 0, -- Transparency of the texture when in range
	["TextureTransparencyMin"] = 1, -- Transparency of the texture when out of range
	["BackgroundTransparency"] = 1, -- Transparency of the texture background when in range
	["BackgroundTransparencyMin"] = 1, -- Transparency of the texture background when out of range
	["TextureColor"] = Color3.fromRGB(255, 255, 255), -- Color of the texture
	["BackgroundColor"] = Color3.fromRGB(255, 255, 255), -- Color of the texture background
	["TextureSize"] = Vector2.new(8, 8), -- Size of the texture in studs per tile. Can potentially cause clipping issues if greater than EffectRadius * 2
	["TextureOffset"] = Vector2.new(0, 0), -- Texture offset in studs
	-- SurfaceGui settings
	["ZOffset"] = 0,
	["AlwaysOnTop"] = false,
	["Brightness"] = 1,
	["LightInfluence"] = 0,
	["MaxDistance"] = 1000,
	["PixelsPerStud"] = 100,
	["SizingMode"] = Enum.SurfaceGuiSizingMode.PixelsPerStud
}

Exemplos mais avançados podem ser encontrados no menu suspenso de modelos de template acima. Certifique-se também de ler o código do módulo se quiser explicações mais aprofundadas de cada função. Por favor, deixe qualquer dúvida ou feedback e farei o meu melhor para ajudar

 

Comente algo legal

Your email address will not be published. Required fields are marked *