ROBLOX — #9 Круглый Аватар на экране — Circle Avatar

Автор: | 12 января, 2020
Поделиться...

Долго и нудно лазил по всяким документациям и форумам, пока не наткнулся на:

https://devforum.roblox.com/t/open-source-image-clipping-module/293014

И даже после этого понадобилось ещё куча времени, чтобы заставить это заработать!

Итак. Начнём по порядку.

Сперва «приобретаем» модуль из магазина из ссылки выше. После чего загружаем находим его в Toolbox и добавляем в Workspace

Полдела сделано! Шутка.

После этого добавляем/открываем GUI

И добавляем его общее (если его ещё нет):

После чего можно заняться подготовкой визуализации Аватара игрока. Покажу сразу два варианта. Стандартный (без модуля) и красивый.

Для стандартного, просто добавляем Image Label в нужное место и нужного размера.

И сразу рядом поместим ViewportFrame (в этом формате возвращает значения модуль). Но с панели его не добавить, поэтому добавляем через Explorer

И располагаем его рядом с Image с теми же размерами.

А ещё, устанавливаем в нём BorderPixelSize=0 и ImageTransparency=1, чтобы убрать фон и рамку вокруг.

И тут всплывает очередной нюанс! Скрипты должны быть локальными!!! Поэтому в оба добавляем LocalScript.

А теперь содержимое скриптов. Для Image

local Players = game:GetService("Players")
local player = Players.LocalPlayer

-- Fetch the thumbnail
local userId = player.UserId
local thumbType = Enum.ThumbnailType.HeadShot
local thumbSize = Enum.ThumbnailSize.Size100x100
local content, isReady = Players:GetUserThumbnailAsync(userId, thumbType, thumbSize)

-- Set the ImageLabel's content to the user thumbnail
local imageLabel = script.Parent
imageLabel.Image = content
imageLabel.Size = UDim2.new(0, 100, 0, 100)

ThumbnailSize может быть 48, 60, 100, 150, 180, 352 и 420. Соответствующие размеры нужно и в imageLabel.Size указывать.

Теперь скрипт для Mask (немного поправленный для текущего расположения модуля в Workspace)

local ImageMask = require(workspace.ImageMask)
local ImageID   = "https://www.roblox.com/headshot-thumbnail/image?userId=".. game.Players.LocalPlayer.UserId .."&width=420&height=420&format=png"
local ClippedImage = ImageMask.new(ImageID, "Circle")
    ClippedImage.Size = UDim2.new(0.3,50,0.3,50)
    ClippedImage.SizeConstraint = Enum.SizeConstraint.RelativeYY
    ClippedImage.Parent = script.Parent

Запускаем и видим красоту:

Вуаля! И делай с ними — что хочешь!

Посмотреть на работу данного примера можно тут:

https://www.roblox.com/games/4587789852/NecroWorld


Поделиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *