감정 표현 바

감정 표현은 모든 소셜 체험의 핵심 구성 요소입니다. EmoteBar 개발자 모듈의 목표는 플레이어에게 의미 있는 소셜 인터랙션을 활발히 수행할 수 있도록 액세스 가능하고 사용자 정의할 수 있는 방법을 제공하는 것입니다.

모듈 사용

설치

체험에서 EmoteBar 모듈을 사용하는 방법

  1. 보기 탭에서 도구 상자를 열고 마켓플레이스 탭을 선택합니다.

    Studio의 도구상자 토글 버튼
  2. 모델 정렬이 선택되었는지 확인한 다음 카테고리에서 모두 보기 버튼을 클릭합니다.

  3. 개발자 모듈 타일을 찾아 클릭합니다.

  4. 감정 표현 표시줄 모듈을 찾아 클릭하거나 3D 보기로 끌어다 놓습니다.

  5. 탐색기 창에서 전체 EmoteBar 모델을 ServerScriptService로 이동합니다. 체험을 실행하면 모듈이 다양한 서비스에 배포되고 실행되기 시작합니다.

구성

모듈은 7개 감정 표현으로 사전 구성되어 있으며 크리에이터가 보유하고 있는 감정 표현과 표시 옵션으로 쉽게 사용자 정의할 수 있습니다. 또한 플레이어가 Lil Nas X, Royal Blood, Twenty One Pilots 등과 같은 이전 Roblox 이벤트의 감정 표현을 보유하고 있는 경우, 이러한 감정 표현은 사용 가능한 감정 표현 목록에 자동으로 추가됩니다.

  1. ServerScriptService에서 새로운 Script를 만들고 이름을 ConfigureEmotes로 변경합니다.

  2. 다음의 코드를 이 새로운 ConfigureEmotes 스크립트에 붙여 넣습니다. falseuseDefaultEmotes 설정이 기본 감정 표현을 재정의하고 setEmotes 함수를 통해 사용자 지정 감정 표현을 정의할 수 있게 해줍니다.

    Script - ConfigureEmotes

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
    EmoteBar.configureServer({
    useDefaultEmotes = false,
    })
    EmoteBar.setEmotes({
    {
    name = "Hello",
    animation = "rbxassetid://3344650532",
    image = "rbxassetid://7719817462",
    defaultTempo = 1,
    },
    {
    name = "Applaud",
    animation = "rbxassetid://5915693819",
    image = "rbxassetid://7720292217",
    defaultTempo = 2,
    },
    })

메가 감정 표현

동일한 영역의 여러 플레이어가 동일한 시간에 동일한 감정 표현을 실행할 때 메가 감정 표현이 형성됩니다. 플레이어가 더 많이 참여할수록 메가 감정 표현은 점점 더 커집니다. 플레이어들이 이 감정 표현의 실행을 중지하면 메가 감정 표현이 점점 작아져 결국 사라집니다.

템포

감정 표현의 템포는 버튼을 한 번 누를 때 플레이하는 속도입니다. 감정 표현의 기본 속도는 defaultTempo에 의해 결정됩니다. 감정 표현의 버튼을 더 빠르게 또는 더 느리게 눌러 속도를 높이거나 낮출 수 있습니다.

API 참조

유형

감정 표현

각 감정 표현은 다음과 같은 키-값 쌍이 들어 있는 사전의 구조로 표현됩니다.

유형설명
name문자열감정 표현 이름입니다(예: "Shrug").
animation문자열감정 표현의 애니메이션에 대한 애셋 ID입니다.
image문자열GUI의 감정 표현 이미지에 대한 애셋 ID입니다.
defaultTempo숫자감정 표현 애니메이션을 플레이하는 기본 속도 인수입니다. 예를 들어, 템포가 2이면 애니메이션이 보통 속도의 두 배로 플레이됩니다. 0보다 커야 합니다.
isLockedvoid감정 표현의 활성화가 '잠겼는지' 여부입니다.

열거형

EmoteBar.GuiType

이름요약
EmoteBar감정 표현이 개별 '페이지'로 구분되어 화면 하단을 따라 표시줄에 나타나는 기본 형태입니다.
EmoteWheel플레이어가 해당 플레이어 캐릭터를 클릭하거나 누를 때 감정 표현이 링에 표시되는 변형입니다.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureClient({
guiType = EmoteBar.GuiType.EmoteWheel,
})

함수

configureServer

configureServer(config:table):nil

config 테이블의 다음 키/값을 통해 기본 서버측 구성 옵션을 무효화합니다. 이 함수는 Script에서만 호출되며 변경 사항은 자동으로 모든 클라이언트에 복제됩니다.

설명기본
useDefaultEmotes제공된 기본 감정 표현이 포함되는지 여부입니다.true
useMegaEmotes메가 감정 표현 기능을 활성화 또는 비활성화합니다.true
emoteMinPlayers메가 감정 표현에 기여하기 위해 동일한 감정 표현을 실행하는 최소 플레이어 수입니다.3
emoteMaxPlayers메가 감정 표현에 기여하기 위해 동일한 감정 표현을 실행하는 최대 플레이어 수입니다.50
playParticles플레이어가 머리 위에 떠다니는 입자로 플레이하는 감정 표현을 활성화 또는 비활성화합니다.true
sendContributingEmotes메가 감정 표현에 기여하기 위해 작은 감정 표현 아이콘을 보내는 것을 활성화 또는 비활성화합니다.true
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureServer({
emoteMinPlayers = 2,
playParticles = false,
})

configureClient

configureClient(config:table):nil

config 테이블의 다음 키/값을 통해 기본 클라이언트 측 구성 옵션을 무효화합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다. guiType의 값에 따라 표시된 탭의 옵션도 적용됩니다.

일반

설명기본
guiTypeGUI가 감정 표현을 표시하는 데 어떤 형태를 사용할 것인지 제어합니다(EmoteBar.GuiType).EmoteBar
useTempo사용자가 동일한 감정 표현을 리드미컬하게 반복적으로 활성화하여 감정 표현을 얼마나 빠르게 또는 느리게 플레이할지 제어할 수 있는 템포 기능을 활성화 또는 비활성화합니다.true
tempoActivationWindow템포의 일부로 간주되기 위해 연속적으로 활성화되는 감정 표현 사이의 시간입니다(단위: 초).3
lockedImage표시할 이미지가 잠긴 감정 표현 위에 표시됩니다."rbxassetid://6905802778"

EmoteBar

설명기본
maxEmotesPerPage한 번에 표시되는 감정 표현의 최대 개수입니다. 화면이 작으면 자동으로 감정 표현이 더 적게 표시됩니다.4
emoteBarPosLandscape가로 모드에서 감정 표현 표시줄의 위치입니다(UDim2).(0.5, 0, 1, -16)
emoteBarPosPortrait세로 모드에서 감정 표현 표시줄의 위치입니다(UDim2).(0.5, 0, 1, -100)
useEmoteHotkeys감정 표현 핫키를 사용할지 여부입니다. true인 경우, 감정 표현 표시줄의 핫키로 1, 2, 3, 4 등을 바인딩합니다. 1~9의 숫자키만 지원됩니다.true
usePageHotkeys페이지 핫키를 사용할지 여부입니다. true인 경우, 페이지 간에 순환하는 데 nextPageKeyprevPageKey가 사용됩니다.true
prevPageKey이전 페이지의 감정 표현으로 돌아가는 데 사용되는 키입니다(Enum.KeyCode).Q
nextPageKey다음 페이지의 감정 표현으로 넘어가는 데 사용되는 키입니다(Enum.KeyCode).E
leftArrowImage왼쪽 화살표에 대한 이미지입니다(이전 페이지)."rbxassetid://6998633654"
rightArrowImage오른쪽 화살표에 대한 이미지입니다(다음 페이지)."rbxassetid://6998635824"

EmoteWheel

설명기본
closeImage감정 표현 휠의 닫기 버튼에 대한 이미지로, closeBackgroundImage 이미지 위에 놓입니다."rbxassetid://7027440823"
closeBackgroundImage감정 표현 휠의 닫기 버튼에 대한 배경 이미지입니다."rbxassetid://7027440823"
emoteHoverImage휠에서 선택된 감정 표현 위로 마우스를 가져갔을 때 나타나는 내용을 위한 이미지입니다."rbxassetid://7344843157"
LocalScript - Emote Bar

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureClient({
guiType = EmoteBar.GuiType.EmoteBar,
maxEmotesPerPage = 6,
nextPageKey = Enum.KeyCode.Z,
prevPageKey = Enum.KeyCode.C,
})
LocalScript - Emote Wheel

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureClient({
guiType = EmoteBar.GuiType.EmoteWheel,
})

setEmotes

setEmotes(emotes:table):nil

사용하려는 사용자 지정 감정 표현을 설정합니다. useDefaultEmotestrue이면 이러한 감정 표현이 기본값에 추가되고, useDefaultEmotesfalse이면 기본값을 대체합니다. 이 함수는 Script에서만 호출되며 변경 사항은 자동으로 모든 클라이언트에 복제됩니다.

이 함수에 전달되는 각 감정 표현의 구조를 보려면 감정 표현을 참조해 주세요.

Script - ConfigureEmotes

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureServer({
useDefaultEmotes = false,
})
EmoteBar.setEmotes({
{
name = "Hello",
animation = "rbxassetid://3344650532",
image = "rbxassetid://7719817462",
defaultTempo = 1,
},
{
name = "Applaud",
animation = "rbxassetid://5915693819",
image = "rbxassetid://7720292217",
defaultTempo = 2,
},
})

setGuiVisibility

setGuiVisibility(visible:boolean):nil

감정 표현 GUI를 표시하거나 숨깁니다. 이 함수는 특정 클라이언트의 LocalScript에서만 호출될 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.setGuiVisibility(false)

getEmote

getEmote(emoteName:string):table

이름으로 감정 표현을 가져옵니다. 감정 표현이 검색되지 않으면 nil을 반환합니다. 이 함수는 특정 클라이언트의 LocalScript에서만 호출될 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
local shrug = EmoteBar.getEmote("Shrug")

playEmote

playEmote(emote:Emote):nil

제공된 감정 표현을 플레이하고 연결된 경우 서버에서 emotePlayed 이벤트를 발생시킵니다. 이 함수는 특정 클라이언트의 LocalScript에서만 호출될 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
local shrug = EmoteBar.getEmote("Shrug")
EmoteBar.playEmote(shrug)

lockEmote

lockEmote(emoteName:string):nil

제공된 이름으로 감정 표현을 잠급니다. 이 함수는 클라이언트의 LocalScript에서만 호출될 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.lockEmote("Applaud")

unlockEmote

unlockEmote(emoteName:string):nil

제공된 이름으로 감정 표현 잠금을 해제합니다. 이 함수는 클라이언트의 LocalScript에서만 호출될 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.unlockEmote("Applaud")

이벤트

emotePlayed

emotePlayed(player:Player, emote:Emote): RBXScriptSignal

어떤 클라이언트든 감정 표현을 플레이하면 발생합니다. 해당 이벤트는 LocalScript에서만 연결할 수 있습니다.

매개변수
player: Player감정 표현을 실행한 플레이어입니다.
emote: Emote플레이된 감정 표현입니다.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.emotePlayed:Connect(function(player, emote)
print(player.Name, "played", emote.name)
end)

lockedEmoteActivated

lockedEmoteActivated(emote:Emote): RBXScriptSignal

클라이언트가 잠긴 감정 표현을 클릭하면 발생합니다. 해당 이벤트는 LocalScript에서만 연결할 수 있습니다.

매개변수
emote: Emote활성화된 잠긴 감정 표현입니다.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.lockedEmoteActivated:Connect(function(emote)
print(Players.LocalPlayer, "clicked", emote.name)
end)