🍯 Text 위젯에서 🔢숫자의 변화를 서서히 연출할 수 있는 Rolling 기능이 추가되었어요.
-- 클라 스크립트에서local InPrevValue =1local InTargetValue =100local InDuration =2local InTweenType = Enum.UIEasingType.Lineartext:StartRolling(InPrevValue, InTargetValue, InDuration, InTweenType) -- 텍스트 롤링을 표현해요text:StopRolling() -- 텍스트 롤링을 멈춰요 (마지막 값으로 즉시 변화해요)
캐릭터의 🏃♀️물리 속도를 가져오는 기능과 초기화하는 기능이 추가되었어요.
-- 서버 스크립트에서local velocity = character.Velocity -- 물리 속도를 가져와요 (Vector3)if velocity .Y >=1000then character:ZeroVelocity() -- 캐릭터의 물리 속도를 0으로 만들어요.end
🍯 일부 토이에서 힘을 가할 때 사용하고 있던 AddForce 함수를,
AddImpulse 혹은 LaunchCharacter 로 변경했어요.
툴박스 혹은 ObstacleRun / VS_ObstacleRun 템플릿에서, 다음 토이들의 Server 스크립트를 참고해주세요.
ClockWeight
HitRoad
LaunchBall
RotClock
RotHammer / RotHammer_Type2
RotWindmil
AddImpulse, LaunchCharacter 의 사용 방법은, 1.5.0 패치노트를 참고해주세요.
🕊️🐟🐿️스켈레탈 메쉬를 제어하는 기능이 추가되었어요! 현재는 🔒 유관 기업만 사용할 수 있어요. 🙏 (🚩 이번 패치에서 트랙 기능까지는 제공되지만 콜리전 기능은 제공하지 않아요.)
-- 클라 스크립트에서local SkeletalMesh = Script.Parent-- 스켈레탈 메쉬의 모든 애니메이션 이름들을 가져와요local aniNameList = SkeletalMesh:GetAnimAssetNameList()for i =1, #aniNameList doprint(SkeletalMesh, "GetAnimAssetNameList", i, aniNameList[i])endprint("GetAnimAssetNameCount", SkeletalMesh:GetAnimAssetNameCount()) -- 스켈레탈 메쉬의 애니메이션 갯수를 가져와요print("GetCurrentAnimName", SkeletalMesh:GetCurrentAnimName()) -- 재생중인 현재 애니메이션의 이름을 가져와요print("GetCurrentAnimIndex", SkeletalMesh:GetCurrentAnimIndex()) -- 재생중인 현재 애니메이션의 인덱스를 가져와요local isSuccess = SkeletalMesh:SetAnimName("Attack") -- 이름에 해당하는 애니메이션을 변경해요 (재생 실패시 false가 반환돼요)local isLoop =trueSkeletalMesh:PlayAnim(isLoop) -- 애니메이션을 재생해요local isSuccess = SkeletalMesh:SetAnimIndex(2) -- 인덱스에 해당하는 애니메이션을 변경해요 (재생 실패시 false가 반환돼요)local isLoop =trueSkeletalMesh:PlayAnim(isLoop) -- 애니메이션을 재생해요print(SkeletalMesh:IsPlayingAnim()) -- 애니메이션의 재생 여부를 반환해요SkeletalMesh:PauseAnim() -- 애니메이션의 일시정지해요 (PlayAnim 함수를 호출해서 다시 재생할 수 있어요)SkeletalMesh:StopAnim() -- 애니메이션을 정지해요----------------------------------------------------------------------------- 서버 / 클라 스크립트에서local SkeletalMesh = Script.Parent-- 객체가 스켈레탈 메쉬인지 확인하는 기능이 추가되었어요.print(SkeletalMesh:IsSkeletalMesh())-- 기본 속성, 함수들을 사용할 수 있어요.print(SkeletalMesh.Name)print(SkeletalMesh.Parent)print(SkeletalMesh:GetKey())print(SkeletalMesh:IsValid())print(SkeletalMesh:IsValidValue("SomeValue"))-- 스켈레탈 메쉬도 위치나 회전, 크기를 변경할 수 있어요.SkeletalMesh.Location = SkeletalMesh.Location + Vector.new(200, 0, 0) SkeletalMesh.Rotation = SkeletalMesh.Rotation + Vector.new(0, 0, 60)SkeletalMesh.Scale = SkeletalMesh.Scale + Vector.new(0.8, 0.8, 0.8)-- 스켈레탈 메쉬에도 트랙을 사용할 수 있어요SkeletalMesh.Track:AddLocalMove("Move", Vector.new(300, 0, 0), 2, false)SkeletalMesh.Track:AddEmpty("Move", 1)SkeletalMesh.Track:PlayTransformTrack("Move", Enum.TransformPlayType.Repeat, InfinityPlay)-- OnCollisionEvent, OnBeginOverlapEvent 등 콜리전 기능은 아직 사용할 수 없어요!
🍯 ClientScript 에서 사용할 수 있는, 🏃애니메이션 속도 및 시간 길이 관련 함수가 추가되었어요.
-- GetAnimLength-- 현재 캐릭터 애니메이션 상태 머신에 추가한 애니메이션의 길이를 얻어올 수 있어요. (얻어올 애니메이션 이름)-- AddBlendAnimState 함수로 추가한 블렌드 애니메이션에는 해당 함수를 사용할 수 없어요.local aniName ="Sit"local curAniLength = character:GetAnimLength(aniName)print("curAniLength = ".. curAniLength)
-- SetAnimSpeedRate-- 현재 캐릭터 애니메이션 상태 머신에 추가한 애니메이션의 속도 비율을 설정할 수 있어요.-- 애니메이션 속도 비율 변경 시, 다른 애니메이션 상태 머신에는 반영되지 않아요.-- 속도 비율을 변경했던 애니메이션 상태 머신이 다시 캐릭터에 적용된 경우, 이전에 설정한 속도 비율이 그대로 반영돼요. local aniName ="Sit" local speedRate =0.3character:SetAnimSpeedRate(aniName, speedRate)
-- GetAnimSpeedRate-- 현재 캐릭터 애니메이션 상태 머신에 추가한 애니메이션의 속도 비율을 얻어올 수 있어요.local aniName ="Sit"local curSpeed = character:GetAnimSpeedRate(aniName)print("curSpeed = "..curSpeed)
애니메이션의 StateSetting⚙️에 연결되는 OnEnter / OnUpdate / OnExit 이벤트의 동작이
❗모든 플레이어를 대상으로 호출되도록 변경되었어요.
아래 샘플 코드를 참고해주세요.
--[ OnEnter ]--JumpLoopAnimState = AnimStateMachineSetting:AddAnimState("JumpLoop", Object.Fall, InfinityPlay)--직전에 AnimState에 정의한 애니(JumpLoop)에 이벤트 할당localfunctionEnterJumpLoop(animStateMachine)local character = animStateMachine:GetOwnerCharacter()ifnot character:IsMyCharacter() thenreturnendendAnimState.OnEnter:Connect(EnterJumpLoop)--------------------------------------------------------------------------------------------------------[ OnUpdate ]--JumpLoopAnimState = AnimStateMachineSetting:AddAnimState("JumpLoop", Object.Fall, InfinityPlay)--직전에 AnimState에 정의한 애니(JumpLoop)에 이벤트 할당localfunctionUpdateJumpLoop(animStateMachine,updateTime)local character = animStateMachine:GetOwnerCharacter()ifnot character:IsMyCharacter() thenreturnendendAnimState.OnUpdate:Connect(UpdateJumpLoop)--------------------------------------------------------------------------------------------------------[ OnExit ]--JumpLoopAnimState = AnimStateMachineSetting:AddAnimState("JumpLoop", Object.Fall, InfinityPlay)--직전에 AnimState에 정의한 애니(JumpLoop)에 이벤트 할당localfunctionExitJumpLoop(animStateMachine)local character = animStateMachine:GetOwnerCharacter()ifnot character:IsMyCharacter() thenreturnendendAnimState.OnExit:Connect(ExitJumpLoop)
월드 관리 페이지에 📫월드 이벤트가 추가되었어요!
월드 이벤트를 이용해서 원하는 시간에 설정한 숫자, 문자열, 불리언 같은 ⚙️데이터나
공지사항 같은 📢메시지를 월드로 보낼 수 있어요.
👉 해당 메뉴얼을 참고해주세요.
월드 이벤트에 추가한 데이터에 일정을 등록하면, 해당 일정의 날짜, 시간, 요일이 됐을 때 값이 전송돼요.
월드 이벤트는 스크립트에서 아래와 같이 처리할 수 있어요.
-- 월드 이벤트 정보를 요청하는 함수예요.-- 이 함수를 호출해서 OnGetWorldEventListEvent를 받아야 월드 이벤트를 사용할 수 있어요.Game:RequestWorldEventList() -------------------------------------------------------------------------- 월드 이벤트 정보가 갱신될 때 호출되는 이벤트예요.-- 이 이벤트를 사용하려면 RequestWorldEventList를 호출해야 하며, 월드 이벤트에 대한 내부 설정이 모두 끝나면 이벤트가 호출돼요.-- (월드 이벤트의 데이터를 추가하거나, 수정하면 다시 호출될 수 있어요.)localfunctionGetWorldEventListEvent()print("OnGetWorldEventListEvent - 월드이벤트 세팅 완료됨!!")endGame.OnGetWorldEventListEvent:Connect(GetWorldEventListEvent)-------------------------------------------------------------------------- 현재 시간이 월드 이벤트에 등록한 문자열 데이터의 일정이 되면 호출되는 이벤트에요.-- keyName으로 어떤 월드 이벤트인지 구분할 수 있어요.localfunctionOnWorldEventString(keyName,keyValue)print(keyName, ":", keyValue) endGame.OnGetWorldEventString:Connect(OnWorldEventString)-- 현재 시간이 월드 이벤트에 등록한 숫자 데이터의 일정이 되면 호출되는 이벤트에요.-- keyName으로 어떤 월드 이벤트인지 구분할 수 있어요.localfunctionOnWorldEventNumber(keyName,keyValue)print(keyName, ":", keyValue) endGame.OnGetWorldEventNumber:Connect(OnWorldEventNumber)-- 현재 시간이 월드 이벤트에 등록한 불리언 데이터의 일정이 되면 호출되는 이벤트에요.-- keyName으로 어떤 월드 이벤트인지 구분할 수 있어요.localfunctionOnWorldEventBool(keyName,keyValue)print(keyName, ":", keyValue) endGame.OnGetWorldEventBool:Connect(OnWorldEventBool)------------------------------------------------------------------------localfunctionRequestGetValue(player)-- 공지사항 타입이 아닌 데이터 타입은 일정이 되지 않았더라도 현재 값을 가져올 수 있어요.local expRate = Game:RequestWorldEventNumber("ExpRate")local findNPCName = Game:RequestWorldEventString("FindNPCName")local isOpenRaidDungeon = Game:RequestWorldEventBool("IsOpenRaidDungeon")-- 월드 이벤트에 대한 내부 설정이 끝나지 않았으면 nil이 반환될 수 있어요.if expRate ~=niland expRate ~="nil" thenprint("ExpRate : ", expRate)endif findNPCName ~=niland findNPCName ~="nil" thenprint("FindNPCName : ", findNPCName)endif isOpenRaidDungeon ~=niland isOpenRaidDungeon ~="nil" thenprint("IsOpenRaidDungeon : ", isOpenRaidDungeon)endend
같은 월드 안에서 다른 데디서버에 있는 유저들을 모아 연결랜드로 이동시킬 수 있는
🧑🤝🧑매치메이킹 기능이 추가되었어요.
레이팅 점수 같은 특정 데이터를 기준으로 범위🔍에 해당 유저들을 따로 처리하는것도 가능해요!
👉 해당 메뉴얼을 참고해주세요.
-- 매칭 대기열에 유저를 등록하는 함수예요.-- 유저는 FilterType, RangeMin, RangeMax, MaxPlayer, WaitTime가 같은 매칭 대기열에 등록돼요. (데디서버가 다르더라도 같은 대기열에 등록돼요.)-- 유저의 필터 값(FilterValue)이 필터 범위(RangeMin~RangeMax) 이내여야 대기열에 등록돼요.-- 매칭 대기열에 등록된 유저 수가 MaxPlayer가 되거나, WaitTime가 경과하면 매칭 이동을 시작해요.-- MaxPlayer는 이동할 랜드의 인원 수보다 크지 않아야 해요.localfunctionRequestAddMatch(player)local landOrder =1-- 이동할 랜드local filterType ="Raiting" -- 필터타입 (ex : 레이팅, 점수, 클래스 종류 등)local filterValue = player.MMR -- 필터범위에서 사용할 플레이어별 값 (ex : 레이팅, 점수, 클래스 종류 등)local minMMR =5-- 필터범위 (최소값)local maxMMR =20-- 필터범위 (최대값)local maxPlayer =2-- 이동에 필요한 인원local waitTime =20-- 기다릴 시간 -- 매칭으로 이동할 랜드의 연결 순서를 할당해요. player.MatchLandOrder = landOrder Game:AddMatchQueue(player, landOrder, filterType, filterValue, minMMR, maxMMR, maxPlayer, waitTime)end-------------------------------------------------------------------------------------------------------- 매칭 대기열에 유저 등록이 완료되면 호출되는 이벤트에요.-- 대기열 등록에 실패하면 matchID가 반환되지 않습니다.localfunctionMatchCallback(player,matchID,playerCount)-- playerCount는 등록한 시점 기준으로 반환돼요.print(player.Name, "MatchCallback", matchID, "에 등록된 유저 수 : ", playerCount)if matchID ==nilor matchID =="" thenreturnend-- 등록된 매칭 대기열 서버의 ID를 할당해요. player.MatchID = matchIDendGame.OnAddMatchQueueEvent:Connect(MatchCallback)-------------------------------------------------------------------------------------------------------- 대기열 인원/시간 충족하여 이동 가능 상황이 되면 이동 처리해요.localfunctionMatchTeleportCallback(player)local playerID = player:GetPlayerID()-- 매칭 서버로 이동 처리 Game:TeleportToMatchServer(playerID, player.MatchLandOrder, player.MatchID)endGame.OnMatchTeleportEvent:Connect(MatchTeleportCallback)-------------------------------------------------------------------------------------------------------- 매칭 대기열에 등록된 유저를 제거하는 함수예요.functionRequestRemoveMatch(player) ifnot player:IsValidValue("MatchID") or player.MatchID ==nilthenprint(player, "에게 MatchID가 없습니다.")else-- 매칭 대기열에서 유저 제거 Game:RemoveMatchQueue(player.MatchID, player)end player.MatchID =nil player.MatchLandOrder =nilprint("------------------------------------")end
월드 내 ✳️환경 설정에서 화면을 💻[FullScreen]으로 변경 시 🖱️마우스 포인터가
정확한 위치 🎯에 위치하도록 수정되었어요.
📲아이폰으로 월드 진입시 디토랜드 로고 및 로딩화면이 정상적으로 노출되도록 변경 되었어요.
아이템 샵 🏬무료 아이템 하단에 “FREE” 표시가 잘 보이도록 수정되었어요.
컨텐츠 리워드 팝업이 출력된 상태에서 채팅을 입력하고 종료하면 키보드🔠가 등장하지 않는 이슈가
수정되었어요.
디토그룹 소통하기 답글 등록 시간(년/월/일) 📆이 반복 출력되지 않도록 수정 되었어요.
클라이언트 스크립트에서 character:IsDie() 호출시 반환값이 사망 여부에 맞게 반환되도록 수정되었어요.
네이버 & 카카오톡 ID를 통한 로그인 방식이 추가되었어요!
이제 일반 계정으로도 채널을 만들 수 있어요!
채널 기능을 사용해서 친구들과 함께 월드를 즐겨보세요. 👨🏼🤝👨🏻
이제 디토룸의 체형 커스텀에서 슬라이더를 아래⬇️로 내리면 🥰귀여운 SD 체형으로 설정할 수 있어요.
내 얼굴이나 AI가 생성한 이미지로 생성할 수 있는 외부 아바타🧑💼 기능이 추가되었어요.
친구들과 함께 자신의 얼굴로 생성한 외부아바타를 등록해서 월드를 더 재미있게 플레이해보세요!
아직 초기 단계이지만 차차 개선할 예정이니 기대해주세요! 👏
외부 아바타 등록 방법은 아래 메뉴얼을 참고해주세요.
local Text = Workspace.ScreenUI.Text Text.IsEnableOutline =true-- 윤곽선 사용 여부를 설정해요.Text.OutlineColor = Color.new(255, 255, 255, 255) -- 윤곽선 색상을 변경해요.Text.OutlineThickness =10-- 윤곽선 두께를 설정해요.Text.OutlineFillAlpha =false-- 윤곽선 안쪽을 색상으로 채울지 여부를 설정해요.--------------------------------------------------------- Text.IsEnableShadow =true-- 그림자 사용 여부를 설정해요.Text.ShadowOffset = Vector.new(30, 30, 0) -- 그림자 Offset 을 설정해요.Text.ShadowColor = Color.new(255, 255, 255, 255) -- 그림자 색상을 변경해요.
🍯 오브젝트를 스튜디오 카메라 앞으로 이동 시키는 기능이 추가되었어요. (단축키 : P)
🍯 메쉬의 모양대로 콜리전을 생성하는 기능이 추가되었어요.
🍯 테마 애니메이션 번들도 개별 애니메이션으로 사용할 수 있게 추가되었어요.
새로운 액션 애니메이션이 추가되었어요!
CharacterSetting에 Cull Distance 설정 기능이 추가되었어요. (기본값은 false 입니다.)
🍯 Environment에 하늘, 구름, 별의 텍스쳐를 바꿀 수 있는 기능이 추가되었어요!
일정 거리 밖에서 생성된 이펙트가 가까이 접근했을 때 보이지 않던 현상이 수정되었어요
🍯 이펙트 타입 5종 추가되었어요. (폭발(카툰), 버블, 라이트닝, 구체, 홀로그램)
🍯 신규 재질(반투명 물, 커스텀, 반투명 커스텀)이 추가되었어요.
부하가 많이 걸리는 재질의 경우 (고부하) 표시가 생겼어요.
선택한 오브젝트의 이름이 프로퍼티 창에 출력되도록 사용성이 개선되었어요.
상품 구매 시 보유 재화가 부족하면, 바로 충전될 수 있도록 개선되었어요.
부족한 재화가 골드와 마이크일 때는 크레딧으로 바로 충전할 수 있어요.
부족한 재화가 크레딧일 때는 현금 결제 팝업이 표시됩니다.
🍯 캐릭터의 점프, 이동 관련 프로퍼티가 변경 및 추가되었어요
이와 관련된 기본값들이 CharacgerSetting > BaseSetting에 파라미터로 추가되었어요.
점프의 횟수와 관련된 세부 수치를 조절할 수 있어요
-- Server ScriptlocalfunctionInitJumpCount(character)local player = character:GetPlayer()-- 총 점프 단계 설정 character.JumpMaxCount =3--3단 점프 설정-- 점프 단계별 속도 설정local jumpSpeed = character:GetMaxJumpByStep(2) -- 2단계 속도 가져오기 character:SetMaxJumpByStep(2, 1000) -- 2단계 속도 설정-- 점프 단계별 공중 제어 정도 설정local flyControl = character:GetFlyControlByStep(2) -- 2단계 공중 제어값 가져오기 character:SetFlyControlByStep(2, 0.5) -- 2단계 공중 제어값 설정endGame.OnSpawnCharacter:Connect(InitJumpCount)-------------------------------------------------------------------------------------- Client ScriptlocalfunctionInitJumpCondition(character)local jumpStep =2 character:AddJumpStepCondition(jumpStep, function()local isCanJump =true-- 2단계(jumpStep) 점프 사용 가능 조건 (ex : 점프 후 0.5초 이후라면)-- if someCondition then-- isCanJump = true-- endreturn isCanJump end)endGame.OnSpawnCharacter:Connect(InitJumpCondition)
이동 관련해서 세부적인 수치를 설정할 수 있어요.
-- Server ScriptlocalfunctionInitMove(character)local player = character:GetPlayer()-- 출발 가속도 character.Acceleration =400-- 출발 가속도 값 설정local acceleration = character.Acceleration -- 출발 가속도 값 반환print("Acceleration", acceleration)-- 정지 가속도 character.BrakingDecelerationWalking =200-- 정지 가속도값 설정 local brakingDecelerationWalking = character.BrakingDecelerationWalking -- 정지 가속도값 반환print("BrakingDecelerationWalking", brakingDecelerationWalking)-- 마찰력 character.GroundFriction =4-- 마찰력 설정값 설정local groundFriction = character.GroundFriction -- 마찰력 설정값 반환print("GroundFriction", groundFriction)-- 회전 속도 character.RotationSpeed = Vector.new(0, 0, 180) -- 회전 속도값 설정local rotationSpeed = character.RotationSpeed -- 회전 속도값 반환print("RotationSpeed", rotationSpeed)-- 중력 크기 character.GravityScale =0.3-- 캐릭터 중력 크기 설정local gravityScale = character.GravityScale -- 캐릭터 중력 크기 반환print("gravityScale", gravityScale)endGame.OnSpawnCharacter:Connect(InitMove)
캐릭터가 받을 중력 크기를 설정할 수 있어요.
-- Server ScriptlocalfunctionChange_GravityScale(self,character)if character ==nilornot character:IsCharacter() thenreturnend character.GravityScale =0.3-- 캐릭터 중력 크기 설정local gravityScale = character.GravityScale -- 캐릭터 중력 크기 반환print("gravityScale", gravityScale)endTrigger.Collision.OnBeginOverlapEvent:Connect(Change_GravityScale)
이동, 점프 관련된 함수들 중 변경되거나 추가된 함수들이 있어요.
-- Server ScriptlocalfunctionInitJump(character)local player = character:GetPlayer()local isEnableJump =true-- 점프 활성화 여부local jumpStep =3-- 점프 단계local jumpSpeed =600-- 점프력local jumpFlyControl =0.5-- 공중 제어력--점프 여부 제어--character:JumpEnable(isEnableJump) -- 변경 전 : 점프 기능 정지 character:JumpEnable(isEnableJump) -- 변경 후 : 모든 단계 점프 기능 정지 --점프력 설정--character:SetMaxJump(jumpSpeed) -- 변경 전 : 점프력 설정 character:SetMaxJump(jumpSpeed) -- 변경 후 : 모든 단계 점프력 설정 character:SetMaxJumpByStep(jumpStep, jumpSpeed) -- 추가 : 특정 단계 점프력 설정--점프력 가져오기--local maxJump = character:GetMaxJump() -- 변경 전 : 점프력 반환local maxJump = character:GetMaxJump() -- 변경 후 : 1단계 점프력 반환print("maxJump", maxJump)local maxJump = character:GetMaxJump(jumpStep) -- 추가 : 특정 단계 점프력 반환print(jumpStep, "maxJump", maxJump)--공중 제어력 설정--character:SetFlyControl(jumpFlyControl) -- 변경 전 : 공중 제어력 설정 character:SetFlyControl(jumpFlyControl) -- 변경 후 : 모든 단계 공중 제어력 설정 character:SetFlyControlByStep(jumpStep, jumpFlyControl) -- 추가 : 특정 단계 공중 제어력 설정 --공중 제어력 가져오기--local flyControl = character:GetFlyControl() -- 변경 전 : 공중 제어력 반환 local flyControl = character:GetFlyControl() -- 변경 후 : 1단계 공중 제어력 반환print("flyControl", flyControl)local flyControl = character:GetFlyControl(jumpStep) -- 추가 : 특정 단계 공중 제어력 반환print(jumpStep, "flyControl", flyControl) endGame.OnSpawnCharacter:Connect(InitJump)
🍯 Swim ControlMode 가 추가되었어요. 🏊♀️
카메라가 바라보는 방향으로 캐릭터가 이동하는 모드에요.
--Server ScriptlocalfunctionSpawnCharacter(character)-- 캐릭터의 ControlMode 를 Swim 으로 변경해요. character:SetControlMode(Enum.ControlMode.Swim)endGame.OnSpawnCharacter:Connect(SpawnCharacter)
BaseSetting 에 추가된 수영 관련 프로퍼티를 참고해주세요.
바다 혹은 우주 월드 제작에 이용해보세요.
NPC의 ControlMode를 수정할 수 있게 기능이 추가되었어요.
--서버 스크립트NPC:SetControlMode(Enum.ControlMode.Climb)print(NPC, "Current Control Mode : ", NPC:GetControlMode())
NPC의 캐릭터세팅, Base 세팅, 외형 세팅, 애니메이션 세팅을 변경하는 함수가 추가되었어요.
--모두 서버 스크립트에서 사용해야 합니다.-- NPC 캐릭터 세팅 변경local settingObj = Workspace.CharacterSettingnpc:ChangeCharacterSetting(settingObj) --해당 NPC의 캐릭터가 바로 변경돼요local settingObj = Workspace.CharacterSettinglocal useMyBody =truelocal isResetWhenRespawn =truenpc:ChangeCharacterSetting(settingObj, useMyBody, isResetWhenRespawn) --해당 NPC의 캐릭터가 바로 변경돼요-------------------------------------------------------------------------------------------------------------------------- NPC 캐릭터 Base 세팅 변경local settingObj = Workspace.CharacterSetting.BaseSettingnpc:ChangeCharacterBaseSetting(settingObj) --해당 NPC의 캐릭터가 바로 변경돼요local settingObj = Workspace.CharacterSetting.BaseSettinglocal isResetWhenRespawn =truenpc:ChangeCharacterBaseSetting(settingObj, isResetWhenRespawn) --해당 NPC의 캐릭터가 바로 변경돼요-------------------------------------------------------------------------------------------------------------------------- NPC 캐릭터 외형 세팅 변경local settingObj = Workspace.CharacterSetting.AppearanceSettingnpc:ChangeCharacterAppearanceSetting(settingObj) --해당 NPC의 캐릭터가 바로 변경돼요local settingObj = Workspace.CharacterSetting.AppearanceSettinglocal useMyBody =truelocal overwriteParts =truelocal isResetWhenRespawn =truenpc:ChangeCharacterAppearanceSetting(settingObj, useMyBody, overwriteParts, isResetWhenRespawn) --해당 NPC의 캐릭터가 바로 변경돼요-------------------------------------------------------------------------------------------------------------------------- NPC 캐릭터 애니메이션 세팅 변경local settingObj = Workspace.CharacterSetting.AnimationSettingnpc:ChangeCharacterAnimationSetting(settingObj) --해당 NPC의 캐릭터가 바로 변경돼요 local settingObj = Workspace.CharacterSetting.AnimationSettinglocal isResetWhenRespawn =truenpc:ChangeCharacterAnimationSetting(settingObj, isResetWhenRespawn) --해당 NPC의 캐릭터가 바로 변경돼요
NPC를 제어하는 함수가 추가되었어요.
--모두 서버 스크립트에서 사용해야 해-------------------------------------------------------------------------------------------------------------------------- 킬 & 리스폰npc:KillCharacter() -- NPC 킬npc:RespawnCharacter() -- NPC 리스폰-------------------------------------------------------------------------------------------------------------------------- 체크포인트npc:SetCheckPoint(checkPoint) -- NPC 체크포인트 설정local checkPoint = npc:GetCheckPoint() -- 설정된 NPC 체크포인트 가져오기npc:RemoveCheckPoint() -- NPC 체크포인트 삭제-------------------------------------------------------------------------------------------------------------------------- 특정 방향으로 value만큼 이동local dir = Vector.new(1, 1, 0)local value =100npc:MoveDir(dir, value)-------------------------------------------------------------------------------------------------------------------------- 이동 제어npc:SetEnableMovementControl(false) -- NPC 이동 가능 여부 제어local state = npc:GetEnableMovementControl() -- NPC 이동 가능 여부 가져오기print(state)-------------------------------------------------------------------------------------------------------------------------- NPC 기준으로 LineTracelocal npc = Workspace.NPClocal startPos = npc.Locationlocal dir = npc.Transform:GetForward()local distance =10000local hitList = npc:LineTraceList(startPos, dir, distance)for i =1, #hitList doprint("name", hitList[i].HitObject.Name, "hit location", hitList[i].HitLocation) end-------------------------------------------------------------------------------------------------------------------------- NPC 기준으로 LineTrace (특정 충돌타입 대상)local ColTag ="CollisionTag1"Game:AddUserCollisionType(ColTag)Workspace.Cube.Collision:SetCollisionType(ColTag)local startPos = npc.Locationlocal dir = npc.Transform:GetForward()local distance =10000local hitList = npc:LineTraceList(startPos, dir, distance, ColTag)for i =1, #hitList doprint("name", hitList[i].HitObject.Name, "hit location", hitList[i].HitLocation) end
캐릭터 신체 부위 별로 물리 적용 여부를 설정할 수 있는, 랙돌 함수가 추가되었어요
--Server ScriptlocalfunctionSpawnCharacter(character)if character ==nilthenreturnend-- 캐릭터 특정 Bone 의 Ragdoll 을 On 할 수 있어요.-- Bone 중 Pelvis, Root 부위를 설정하면, 캐릭터 이동 조작을 할 수 없어요. character:SetCharacterRagdoll(Enum.Bone.Body)wait(3)-- Bone 인자 없이 사용하는 경우, 캐릭터 전체의 Ragdoll 을 On 할 수 있어요. character:SetCharacterRagdoll()wait(3)-- Ragdoll 이 된 캐릭터를 원래대로 되돌릴 수 있어요. character:ResetCharacterRagdoll()endGame.OnSpawnCharacter:Connect(SpawnCharacter)
🍯 오브젝트에 순간적인 물리 충격을 가하는 AddImpulse 함수가 추가되었어요. (기존 함수 AddForce는 지속적인 물리 충격을 가할때 사용하세요.)
local force = Vector.new(50000, 0, 0)toy.Physics:AddImpulse(force)
캐릭터 진행 방향에 상관없이 힘을 가할 수 있는, LaunchCharacter 함수가 추가되었어요.
아래 내용을 참고해서, 상황에 맞게 사용해주세요.
Character 객체에 사용된 AddForce 함수는, 캐릭터의 진행 방향에 따라 계산된 힘이 적용돼요.
local force = Vector.new(0, 0, 10000)Character:AddForce(force)
LaunchCharacter 함수는, 캐릭터 진행 방향에 상관 없이 정해진 힘만큼 캐릭터에 적용돼요.
local force = Vector.new(0, 0, 10000)Character:LaunchCharacter(force)
캐릭터의 표정을 바꾸는 함수가 추가되었어요.
local player = LocalPlayer:GetRemotePlayer()local character = player:GetCharacter()local faceDuration =5--표정 출력 시간character:PlayFaceExpression("Wink", faceDuration) --표정을 실행해요.wait(2)character:StopFaceExpression() --실행한 표정을 취소해요.wait(2)local faceDuration =20--표정 출력 시간local inFaceLoop =false--표정 무한 실행 여부character:ChangeAnimStateWithFace("Sit", "Wink", faceDuration, inFaceLoop) --캐릭터 애니메이션(Sit)과 표정을 동시에 변경해요.-- 사용할 수 있는 표정 목록 --[[ SimplyCloseBothEyes 눈 감기 Wink 윙크 StickOutTongue 메롱 Curious 의심 Fearless 겁없는 Kiss 키스 Interested 관심있는 BigSmile 큰 웃음 Laugh 눈물 나게 웃긴 Excited 신이 난 JoyfulSmile 즐거운 SimpleSmile 옅은 미소 Confident 당당한 Relief 안도 Melancholy 우울한 Cry 울음 Angry 화난 Discomfort 불편한 Rage 분노 Scared 두려운 Panic 패닉 SimplySurprised 약간 놀란 Amazed 놀라운 Frightened 겁먹은 Pain 고통 Ache 아픈 Distress 슬픈]]--
🍯 로그를 기록할 수 있는 함수가 추가되었어요.
월드에 접속한 플레이어들의 행동 데이터를 수집해서, 지표 및 밸런싱에 활용할 수 있어요.
ex) 플레이어가 재화를 어디에 얼만큼 소비했는지 기록
ServerScript 에서는 SaveLog 함수를, ClientScript 에서는 SaveMyLog 함수를 사용해요.
-- ServerScriptlocalfunctionSaveLogData(player,value) local playerID = player:GetPlayerID() local dataKey ="Gold" -- 기록할 로그의 데이터 키에요.local index_1 =1-- 기록할 로그의 1번 인덱스에요. 데이터 키의 하위 정보를 기록하고 싶다면 사용하고, 생략할 수도 있어요.local index_2 =1000-- 기록할 로그의 2번 인덱스에요. 데이터 키의 하위 정보를 기록하고 싶다면 사용하고, 생략할 수도 있어요. Game:SaveLog(dataKey, playerID, value) Game:SaveLog(dataKey, index_1, playerID, value) Game:SaveLog(dataKey, index_1, index_2, playerID, value)endGame:ConnectEventFunction("SaveLogData", SaveLogData)
-- ClientScriptlocalfunctionSaveLogData(value)local dataKey ="Gold" -- 기록할 로그의 데이터 키에요.local index_1 =1-- 기록할 로그의 1번 인덱스에요. 데이터 키의 하위 정보를 기록하고 싶다면 사용하고, 생략할 수도 있어요.local index_2 =1000-- 기록할 로그의 2번 인덱스에요. 데이터 키의 하위 정보를 기록하고 싶다면 사용하고, 생략할 수도 있어요. Game:SaveMyLog(dataKey, value) Game:SaveMyLog(dataKey, index_1, value) Game:SaveMyLog(dataKey, index_1, index_2, value)end
기록된 로그 데이터는, 월드 관리 > 월드 설정 > 로그 데이터 관리 페이지에서 CSV 로 다운로드 📥 할 수 있어요.
Auto Distance를 체크 해제 후, Manual Disatance에서 거리를 조절할 수 있어요.
🍯 위젯 드래그 & 드랍 이벤트가 추가되었어요.
local ScreenUI = Workspace.ScreenUIlocal DragWidget = ScreenUI.Slotlocal DropArea = ScreenUI.ScrollBox-- 드래그 시작시localfunctionBeginDrag(self,position)print(self.Name, " BeginDragEvent!")print(self.Name, " BeginPosition : ", position)endDragWidget.OnBeginDragEvent:Connect(BeginDrag) -- 드래그 시작시 호출 이벤트 연결-- 드래그 취소시localfunctionCancelDrag(self,position)print(self.Name, " CancelDragEvent!")print(self.Name, " CancelPosition : ", position)endDragWidget.OnCancelDragEvent:Connect(CancelDrag) -- 드래그 취소시 호출 이벤트 연결-- 드래그 상태에서 표시할 위젯 설정DragWidget:SetDragWidget(DragWidget) -- 드래그 이벤트 발생시 복제해서 표시할 위젯을 설정 (미사용시 생략 가능)DragWidget:SetDragOffset(Enum.WidgetAnchorType.LeftTop) -- 복제 위젯에 앵커 적용 (미사용시 생략 가능)-- 드랍시localfunctionEndDrag(self,position,dragWidget)print(self.Name, " DropEvent : ", dragWidget.Name)print(self.Name, " DropPosition : ", position) dragWidget:SetParentUIWidget(self) -- 부모 위젯 변경endDropArea.OnEndDragEvent:Connect(EndDrag) -- 드랍 이벤트 연결 -- (이벤트가 연결된 객체의 자식은 모두 Interaction이 꺼져있어야 합니다.)
남은 쿠폰에 대한 기능이 추가되었어요.
localfunctionDoGetRemainCouponCount(player,count)print("Remain Coupon Count : ", count) endplayer:GetRemainCouponCount(couponName, DoGetRemainCouponCount) -- 남은 쿠폰의 수량 반환 요청localfunctionDoUseRemainCoupon(player,couponReturnData)print("Use Callback")local state = couponReturnData.State --쿠폰의 상태local couponType = couponReturnData.CouponType --쿠폰의 보상 종류local result = couponReturnData.Result --쿠폰 사용 결과--쿠폰 상태 및 보상if state == Enum.CouponState.Wait thenprint("쿠폰 상태 : 대기")elseif state == Enum.CouponState.Doing thenprint("쿠폰 상태 : 진행")elseif state == Enum.CouponState.Stop thenprint("쿠폰 상태 : 중지")elseif state == Enum.CouponState.End thenprint("쿠폰 상태 : 종료")endprint("쿠폰 보상 타입 : ", couponType)--쿠폰 사용 결과가 Success이면 if result == Enum.CouponResult.Success thenprint("쿠폰을 사용했습니다!") if couponType =="Gold" thenprint("Get Gold!!!!")end--쿠폰 사용 결과가 Exist이면elseif result == Enum.CouponResult.Exist thenprint("이미 사용한 쿠폰입니다!") --이외에는elseprint("유효하지 않은 쿠폰입니다!")endendplayer:UseRemainCoupon(couponName, DoUseRemainCoupon) -- 남은 쿠폰 사용 요청
🍯 특정 타입의 위젯을 모두 반환하는 FindWidgets 클라이언트 함수가 추가되었어요.
local widgetList = Game:FindWidgets(Workspace, Enum.UIWidgetType.Text)for i =1, #widgetList do--리스트앞에 #을 붙여 리스트의 길이를 가져올 수 있어요.print("Text : ", widgetList[i].Name)endprint("----------------------------")local widgetList = Workspace.ScreenUI:FindWidgets(Enum.UIWidgetType.Button)for i =1, #widgetList do--리스트앞에 #을 붙여 리스트의 길이를 가져올 수 있어요.print("Button ", widgetList[i].Name)end
ScrollBox:SetScrollBarValue(1) -- 0이면 가장 위, 1이면 가장 아래로 이동해요.print(ScrollBox_v:GetScrollBarValue())
텍스트 채팅 채널도 구분할 수 있게 되면서 함수가 추가되고, 음성 채팅 채널을 구분하는 함수가 변경되었어요.
-- 텍스트 채팅 채널-- 추가 함수 LocalPlayer:JoinTextChannel("ChannelName") -- 텍스트 채팅 채널 입장 LocalPlayer:LeaveTextChannel("ChannelName") -- 텍스트 채팅 채널 퇴장-- 음성 채팅 채널-- 삭제되는 기존 함수 LocalPlayer:JoinChattingChannel("ChannelName") -- 음성 채팅 채널 입장 LocalPlayer:JoinChattingChannel2D("ChannelName") -- 음성 채팅 채널 입장 LocalPlayer:LeaveChattingChannel("ChannelName") -- 음성 채팅 채널 퇴장-- 변경 함수 LocalPlayer:LeaveTextChannel("ChannelName") -- 음성 채팅 채널 퇴장-- Mute 관련 함수-- 삭제되는 기존 함수 LocalPlayer:MuteVoiceChat("ChannelName") -- 음성 채팅 Mic 활성화 LocalPlayer:UnmuteVoiceChat("ChannelName") -- 음성 채팅 Mic 비활성화-- 변경 함수 LocalPlayer:ActiveVoiceMic(true) -- 음성 채팅 Mic 활성화 LocalPlayer:ActiveVoiceMic(false) -- 음성 채팅 Mic 비활성화
방향 벡터를 반환하는 함수가 추가되었어요.
local Zero = Vector.zero()local One = Vector.one()local Forward = Vector.forward()local Right = Vector.right()local Up = Vector.up()print("Vector Zero : ", Zero)print("Vector One : ", One)print("Vector Forward : ", Forward)print("Vector Right : ", Right)print("Vector Up : ", Up)
🍯 스튜디오에서 테스트 플레이를 할 때 스크립트 에디터✏️가 꺼지지 않게 수정되었어요.
(읽기 전용으로 표시돼요.)
스튜디오에서 트랜스폼(위치/회전/크기) 값을 공간 타입별로 🕶️확인할 수 있도록 기능이
추가되었어요.
객체📦를 선택 후, 프로퍼티 창의 각 트랜스폼 프로퍼티에서 오른쪽 마우스🖱️ 클릭하면,
관련 팝업을 확인할 수 있어요.
파일의 ⚒️’공간타입 초기화’ 메뉴를 이용해, 월드 내 모든 객체에 설정된 공간 타입을
초기화⚙️할 수 있어요.
🍯 스크립트 에디터에서 오브젝트 타입에 따른 📚자동 완성 기능이 추가되었어요.
🍯 스크립트 에디터에서 함수가 정의된 부분은 다른 색상🎀으로 표시돼요.
스크립트 에디터에서 선택한 🚩탭 구분이 명확하도록 표시 색상이 개선되었어요.
🍯 위젯을 추가할 때, UI위치 및 UIAlignment 의 🏗️초기 값이 변경되었어요.
🍯 네온 재질에서 알파 텍스쳐🖼️를 사용할 수 있게 개선되었어요.
💡SpotLight와 🔦PointLight의 AttenuationRadius 단위가 cm 단위로 통일✨되었어요.
🍯 월드 트리 🔍검색 필터에서 논리 연산자를 간편하게 사용할 수 있도록
🧩논리 연산자 항목이 추가되었어요.
테마 템플릿에 🌃Town이 추가되었어요.
SpreadSheet 에서 Shift + Enter 를 이용해 줄바꿈🧾이 가능하도록 개선되었어요.
🍯 ScreenUI의 프로퍼티에 📐UI 해상도 대응 기능이 추가되었어요.
기준 해상도(ReferenceResolution)와 게임의 화면 방향(가로/세로)에 맞춰
ScreenMatchType을 설정하면, 📱실행 기기의 해상도에 맞춰 UI가 보정돼요.
(💻기준 해상도는 1920x1080을 권장해요.)
UI 에디터에 UI 개별 적용 옵션🔩이 추가되었어요.
UI 개별 적용을 해제하면 UI 에디터에서 📺선택한 해상도가 모든 UI에 적용이 돼요.
(UI 개별 적용을 ✔️활성화하면 각 UI 별로 해상도를 따로 사용해요.)
🍯 최근 파일 열기 기능이 추가되었어요.
이제 최근 열었던 파일을 확인하고 바로 열 수 있어요.
로컬 파일과 내 랜드 하위 탭으로 구분돼요.
최근 열었던 파일의 정보 표시를 누를 경우, 파일의 정보(마지막 열었던 날짜, 파일 경로 등)을
알 수 있어요.
🍯 벡터 값을 부정으로 만드는 단항 - 연산자🎲가 추가되었어요.
local vector = Vector.new(200, 0, 150)print(-vector)
🍯 Color🎨를 문자열로 변환하는 ToString 함수가 추가되었어요.
local color = Color.new(255, 0, 0, 255)print("Color : " .. color:ToString())
🍯 Vector⛳를 문자열로 변환하는 ToString 함수가 추가되었어요.
local vector = Vector.new(300, 0, 300)print("Vector : " .. vector:ToString())
⛳Vector의 내적값, 외적값, 거리값, 거리 제곱값, 사이각, 반사각을 구하는 🛒함수가 추가되었어요.
Client 에서 디바이스의 해상도 💻📱 를 가져오는 GetScreenResolution 함수가 추가되었어요.
local deviceResolution = Game:GetScreenResolution()print("width : " .. deviceResolution.X) --화면 가로 크기print("height : " .. deviceResolution.Y) --화면 세로 크기
Client 에서 💬 채팅창의 표시 여부를 제어하는 TextChatVisible 함수가 추가되었어요.
Game.TextChatVisible =false
Media / PDF에 에러 발생 시 에러 index를 출력해주는 함수가 추가되었어요.
local Media = Workspace.Medialocal PDF = Workspace.ScreenUI.PDF--OnErrorMessage로 이벤트를 반환 받아요.--0. 알 수 없는 에러--1. 잘못된 파일 업로드--2. 업로드 불가 파일 이름 (특수문자)---------------------------------Media 에러메시지 출력---------------------------------------------localfunctionOnErrorMessage_Media(errorIndex) --errorIndex를 반환 받아요print(errorIndex)endMedia.OnErrorMessage:Connect(OnErrorMessage_Media)---------------------------------PDF 에러메시지 출력---------------------------------------------localfunctionOnErrorMessage_PDF(errorIndex) --errorIndex를 반환 받아요print(errorIndex)endPDF.OnErrorMessage:Connect(OnErrorMessage_PDF)
(기업계정) 비주얼 스크립트 기능이 추가되었어요!
시범적 도입 단계로 앞으로 더 많은 기능이 추가될 예정이니 기대해주세요 🤭
비주얼 스크립트는 Enterprise 계정에서만 이용할 수 있어요.
(기업계정) 비주얼 스크립트 🎁 템플릿 3종이 추가되었어요.
Enterprise 계정으로만 확인할 수 있는 '기업계정 탭'에서 확인할 수 있어요! 👀
Updates - Script
변수에 할당된 객체의 종류에 맞게 자동 완성이 되도록 개선되었어요!
조작 처리 구조가 변경되었어요. (Tip. 기존 방식도 아직은 사용할 수 있지만 곧 없어질 예정이에요!)
자세한 내용은 해당 링크를 참고하세요!
리더보드 처리 구조가 변경되었어요. (Tip. 기존 방식도 아직은 사용할 수 있지만 곧 없어질 예정이에요!)
자세한 내용은 해당 링크를 참고하세요!
프로퍼티 이름 중 b로 시작하는 프로퍼티의 이름이 변경되었어요.
bCullDistance => CullDistancebCollisionWithCam => CollisionWithCambEnableCameraLag => EnableCameraLagbInheritPitch => InheritPitchbInheritYaw => InheritYawbInheritRoll => InheritRollbUsePreviousRotWhenNotUsingInheritRot => UsePreviousRotWhenNotUsingInheritRot--Tip. 기존 방식도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
🍯 서버/클라에서 퍼블리시 여부를 확인할 수 있는 함수가 추가되었어요.
반환값이 true면 퍼블리시 환경, false면 스튜디오 환경이에요.
if Game:IsPublished() then--퍼블리시 했을 경우print("Is Published")else--퍼블리시 하지 않았을 경우print("Is not Published (In Studio)")end
--기존 함수player:DeleteItem(TargetItem) --전부 삭제player:DeleteItem(InventoryIndex) --전부 삭제--DeleteCount 인자가 추가된 함수player:DeleteItem(InventoryIndex, 5) --인자 기입시 해당 수(5) 만큼 삭제player:DeleteItem(TargetItem, 5) --인자 기입시 해당 수(5) 만큼 삭제
텔레포트 함수에서 사용하지 않는 인자가 제거되었어요.
--기존Game:TeleportToPublicServer(LandOrder, movePlayerIDList, "")Game:TeleportToPrivateServer(LandOrder, movePlayerIDList, "")--변경Game:TeleportToPublicServer(LandOrder, movePlayerIDList)Game:TeleportToPrivateServer(LandOrder, movePlayerIDList)--Tip. 기존 방식도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
--기존WebBrowser:SetWebURL("<https://ditoland.net/main>")--권장WebBrowser.WebURL ="<https://ditoland.net/main>"--Tip. 기존 방식도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
TextBox 위젯의 내용이 변경될 때 호출되는 EndTextBoxEditEvent 이벤트가 추가되었어요.
--입력 변경 시점에서 호출되는 이벤트에요.--내용 입력 후 Enter키를 누르거나, 입력 포커스가 TextBox 밖으로 바뀔 때 호출돼요.localfunctionChangedText(editText)print("텍스트 박스의 내용이 " .. editText .."로 변경되었어요.")endTextBox.EndTextBoxEditEvent:Connect(ChangedText)
TextBox 위젯에서 HintText의 내용을 얻거나, 변경할 수 있는 함수가 추가되었어요.
local someText = Workspace.ScreenUI.someText--HintText를 얻어오는 함수someText:GetHintText()--HintText를 변경하는 함수someText:SetHintText("Hello World!")
Bug Fixes
일부 PC 환경에서 스크립트 에디터의 레이아웃을 변경한 뒤, 테스트 플레이 또는 종료시 변경한 레이아웃이 적용되지 않고 초기화되는 현상이 수정되었어요. (#2961)
모바일 스튜디오에서 임의로 설정한 👗커스텀을 저장하지 않고 메인화면 이동 시 저장하지 않은 커스텀이 적용되는 현상이 수정되었어요. (#2524)
Main Camera의 회전 상속 무시가 켜져있으면 셀프카메라에서 카메라 조작이 동작하지 않는 현상이 수정되었어요.
Enum.AttachPoint.Center --대상의 중심점에 AttachEnum.AttachPoint.Top --대상의 상단 중앙에 AttachEnum.AttachPoint.Right --대상의 오른쪽 중앙에 AttachEnum.AttachPoint.Left --대상의 왼쪽 중앙에 Attach
🏏Item의 Attach 처리가 프로퍼티에서 설정하는 방식으로 변경되었어요.
(이제 스크립트에서 Attach/Detach 처리를 하지 않아도 된답니다 🤗)
AddUIScale의 이름이 AddUISize 함수 이름 변경되었어요. (Scale이 아니라 Size로 동작해요🧐)
local ScreenUI = Script.ParentScreenUI:AddUISize("Frame", "ScaleTrack", Vector.new(20, 20, 0) 3) --X, Y 값만 적용됨
AddUIRot↪️의 인자가 변경되었어요
local ScreenUI = Script.ParentScreenUI:AddUIRot("Frame", "RotTrack", 45, 3) --한 축으로만 회전--기존 : AddUIRot(string WidgetName, string TrackName, Vector Rot, number Time) --변경 : AddUIRot(string WidgetName, string TrackName, float Rot, number Time)
🍯 오브젝트 Enable 상태 변경에 따라 호출되는 이벤트 함수가 추가되었어요.
---------------------------------------------------localfunctionInitObj(self) --self 인자엔 이벤트가 연결된 객체가 전달됨print("Enable")endWorkspace.Cube.OnEnableEvent:Connect(InitObj)---------------------------------------------------localfunctionBackupToPoolList(self) --self 인자엔 이벤트가 연결된 객체가 전달됨print("Disable")endWorkspace.Cube.OnDisableEvent:Connect(BackupToPoolList)---------------------------------------------------wait(1)Workspace.Cube.Enable =false--false로 바뀔때 OnDisableEvent에 연결된 함수 호출됨wait(1)Workspace.Cube.Enable =true--true로 바뀔때 OnEnableEvent에 연결된 함수 호출됨
🍯 캐릭터의 Visible을 Client에서도 변경할 수 있어요.✏️
Character.Visible =false
Environment의 시간 속성🕒이 아래와 같이 정리되었어요.
local Environment = Workspace.Environmentprint("DefaultTime ", Environment.DefaultTime) --초기 시간의 분 단위에요.print("DefaultHour ", Environment.DefaultHour) --초기 시간의 시간 단위에요.print("CurrentTime ", Environment.CurrentTime) --현재 시간의 분 단위에요.print("CurrentHour ", Environment.CurrentHour) --현재 시간의 시간 단위에요.
🍯 날짜 및 시간 처리 관련 함수와 TimeUtil 모듈이 추가되었어요.
날짜📅 및 시간 처리⏰는 ServerScript에서 사용하면 서버 시간으로 가져올 수 있어요.
캐릭터 타입이 🧸'토이 캐릭터'가 죽은 후, 리스폰 시 외형이 보이지 않던 현상이 수정 되었어요
툴박스의 토이/매쉬를 배치하면, 해당 🎣🧸토이/매쉬가 월드에서 드래그되거나 선택되지 않고 월드 트리에서만 선택 가능한 현상이 수정되었어요
상단 메뉴의🖍 컬러픽커에서 색상 변경을 하지 않은 상태에서 '확인'을 선택하면 변경되는 것이 아니라 '취소' 선택 시에 변경되는 현상이 수정되었어요.
Gizmo를 이용한 이동 중 화면 전환 하면 원하지 않는 축으로 오브젝트가 이동하는 현상이
수정되었어요. 😄
TweenObject 모듈에서 Rotation 관련 함수를 사용했을 때 Y값에 따라 지정 회전 값이 아닌
다른 회전 값을 가지는 이슈가 수정되었어요.
🖥스튜디오에서 UI Widget 트랙 객체가 동작하지 않는 현상이 수정되었어요.
🖥스튜디오에서 클라이언트 스크립트 ✏ OnChatNPCMessage 함수 사용 시 비정상 종료 되던 이슈가 수정💡되었어요
📱모바일에서 특정 행동 시 😉눈썹 상세 커스텀 선택 / 선택 해제가 되지 않던 문제가 수정되었어요.
📱모바일에서 웹 메인 화면 내 추천 월드 롤링 시 동일 월드가 등장하는 현상이 수정되었어요.
📱모바일에서 웹 내 월드 더보기 페이지에서 ◀ 버튼이 동작하지 않는 현상이 수정되었어요.
📱모바일에서 대시보드에서 🧙♂️아바타 의상 교체 직후 월드로 입장하면
💷캐릭터 닉네임이 보이지 않는 문제가 수정되었어요.
특수문자 닉네임으로 월드 입장 시 🔁 무한로딩 되는 문제가 수정되었어요.
안드로이드 모바일에서 ◀ 버튼 터치 시 페이지 로딩과 동시에 스크립트 에러 메시지 팝업이 보이던
현상이 수정되었어요.
안드로이드 모바일에서 특정 🔊사운드 리소스가 안드로이드에서만 보이지 않던 현상이
수정되었어요. 😄
PC에서 월드 설정 내 선택된 👨👩👧👧그룹을 모두 제거하면 선택했던 그룹이 해제 되지 않는 문제가
수정💡되었어요.
메인 페이지 하단 🙋♂️고객센터 이메일 주소 링크가 동작하지 않는 현상이 수정되었어요.
스크립트로 하위 위젯을 움직일 때, 설정한 앵커 기준으로 움직이지 않는 현상이 수정되었어요.
DefaultInput 스크립트의 파라미터에서 설정한 조작 모드가, 카메라 📷 모드로 플레이 테스트 시에도 적용되는 현상이 수정되었어요.
기업 계정 신청📝 시 띄어쓰기로 인해 가입 오류 현상이 수정되었어요.
회원 가입 시 부모 동의 🙆♂️🙆♀️ 버튼 중복 클릭 되던 현상이 수정되었어요.
공간 타입이 World인 SurfaceUI의 Button은 클릭🖱️해도 버튼 이벤트가 발생하지 않는 현상이
수정되었어요.
Manual
샘플 맵🗺️ 중 일부 맵의 이름이 변경되었어요.
Scripting 에서 GetName&SetName -> NameScripting 에서 Visibility -> VisibleTrasnform 에서 SetTransform -> TrasnformUI 에서 SetOpacity -> OpacityUI 에서 Visible -> WidgetVisible
local SpotLight = Script.Parentprint(SpotLight:GetColor())
5. 🍯 캐릭터의 📷카메라 방향을 구하는 함수의 이름이 변경되었어요.
LocalPlayer:GetForwardVector() -> LocalPlayer:GetCameraForward()LocalPlayer:GetRightVector() -> LocalPlayer:GetCameraRight()--Tip. 기존의 GetForwardVector와 GetRightVector도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
6. 🍯 LocalPlayer의 이동 및 📷카메라의 활성화 여부를 반환하는 함수가 추가되었어요.
print(LocalPlayer:GetEnableMovementeControl())print(LocalPlayer:GetEnableCameraControl())--Tip. 기존의 LocalPlayer.bEnableCameraControl도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
7. 🍯 LineTrace 함수가 LineTraceList로 변경되었어요.
-- 서버에서local hitResult =**player**:LineTraceList(character:GetLocation(), character:GetTransform():GetForward(), 1000)for i =1, #hitList doprint(hitList[i].HitObject)end-- 클라에서local hitResult =**remotePlayer**:LineTraceList(character:GetLocation(), character:GetTransform():GetForward(), 1000)for i =1, #hitList doprint(hitList[i].HitObject)end--Tip. 기존의 player:LineTrace도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
8. 🍯 SetFriction 함수가 삭제되고, Friction, Restitution, Density 프로퍼티가 추가되었어요.
local Cube = Script.Parentprint("Friction ", Cube.Friction)print("Restitution ", Cube.Restitution)print("Density ", Cube.Density)
9. 🍯 Detach 함수 사용 시 초기 위치가 아닌 현재 위치로 Detach되도록 개선되고,
Detach 함수에 offset 인자가 추가되었어요.
character:Detach() --offset은 생략할 수 있어요.character:Detach(Vector.new(0, 0, 300))
10. 🍯 템플릿에 LibString, LibTable 모듈이 추가되었어요.
자세한 내용은 샘플 맵에서 해당 모듈을 참고하세요.
11. 🍯 로그 함수가 추가되었어요.
Log("Log")LogWarning("Warning")LogError("Error")
12. 🍯 Toybox에 있는 객체의 Parent를 변경하려 할 때, 워닝 로그가 출력되게 개선되었어요.
player:ChangeCharacterSetting(CharacterSetting)--Tip. 기존 함수인 SetUsingCharacterSetting도 아직은 사용할 수 있지만 곧 없어질 예정이에요!
14. 🍯 환경 설정 사운드 볼륨 조절 스크립트가 추가되었습니다.
사운드의 SoundType 프로퍼티에 따라 조절됩니다.
--클라 스크립트에서Game.MasterVolume =1-- 마스터 볼륨 조절Game.MusicVolume =1-- 배경음악 볼륨 조절Game.EffectVolume =1-- 효과음 볼륨 조절Game.EtcVolume =1-- 기타 볼륨 조절-- 스크립트로 볼륨을 조절해도, 플레이어 설정에 오디오 설정 UI 게이지가 변경되지 않지만 곧 추가될 예정이예요!
💻 Manual
스튜디오 메뉴얼에서 그룹 해제 단축키가 [컨트롤+U]에서 [컨트롤+시프트+G]로 변경되었어요.
→ 메뉴얼 바로가기👉
10. 📱 App 마케팅 수신 동의 기능이 개선되었습니다.
이젠 야간에 알림을 받지 않게 설정하실 수 있어요.📴
Bug Fixes
📱모바일에서 컨트롤이 먹통💣이 되던 현상이 수정되었어요. 🙏
📱모바일에서 OnPressEvent 동작 시 카메라가 의도치 않게 회전하는 현상이 수정되었어요.
스튜디오에서 📁파일을 오픈 할 때 “잘못된 경로의 맵 파일 입니다 “팝업이 출력 되는 현상이
수정되었어요.
환경 객체의 ⏰CurrentTime 속성으로 현재 시간 출력 시, 값이 드문드문 변경되는 현상이
수정되었어요.
📱 모바일 기기에서 마이디토 아바타 프로필 이미지가 🙃뒤집혀 보이는 문제가 수정되었어요.
📱 모바일 기기에서 마이디토 아바타 프로필 이미지가 낮은 화질로 보여지는 문제가 해결되었어요.
간헐적으로 🎙️음성 채팅의 [마이크 볼륨 / 음성 채팅 볼륨 값]이 0으로 출력 되는 문제가
수정되었어요.
기업 계정으로 스튜디오에 접속했을 때, 🎥유튜브 객체를 추가하고 플레이 테스트 하면 스튜디오가 간헐적으로 종료💣되는 문제가 수정되었어요.
SendEvent로 🎨Color 인자를 전달할 수 없는 버그가 수정되었어요.
QuickSlot에 등록된 🗡️Item이 사라지는 경우 OnChangedQuickSlot 이벤트가 호출되지 않는
현상이 수정되었어요.
🗡️Item장착 처리 시 ClearItem을 하지 않고 UnequipItem하는 경우, 재 장착 시 비정상적인 에러가 출력 되는 현상이 수정되었어요.
🌟이펙트 재생 시 Play when created를 false로 설정할 경우, OnBeginOverlapEvent함수로
🌟이펙트 Play가 안되던 현상이 수정되었어요.
🥣스튜디오에서 팔레트를 2개 이상 생성한 뒤에 팔레트 1개를 삭제하면, 나머지 팔레트가
🖱️우 클릭 되지 않던 현상이 수정되었어요.
객체에 Vector나 🎨Color변수를 할당한 뒤 값을 바꾸면, Get할 때 초기 값이 얻어지는 현상이
수정되었어요.
AddWorldRot함수가 기대한 값과 다르게 조금씩 ✨오차가 나던 현상이 수정되었어요.
🌟 빔 FX가 생성 즉시 가시성이 올바르게 동작하도록 수정되었어요.
SetText로 소수를 찍을 때 math.floor를 쓰지 않아도 ✨소수가 제대로 출력 되지 않는 문제가
수정되었어요.
🧍Character의 부모를 변경하려고 하면 💥Crash가 발생하는 현상이 수정되었어요.
이제 콘솔에 Error를 출력해요.
스크립트 파라미터로 받는 String이 이제 🔠대소문자 구별을 하도록 수정되었어요.
🌟 이펙트 일부가 📱모바일 환경에서 제대로 보이지 않던 문제가 수정되었어요.
🎥Youtube객체에서 Pause, IsPause, Close등 함수가 특정 상태에서 제대로 동작하지 않던 문제가 수정되었어요.
💊Capsule Collider의 Diameter가 Height보다 크지 않도록 수정되었어요.
SphereCollider의 반지름이 ✨지름처럼 적용되던 문제가 수정되었어요.
웹페이지가 열릴 때 ⬜하얗거나 ⬛검은 화면이 나오는 경우가 수정되었어요.
Release Note 0.5.4 - Notice
Release Date : 2022.3.31
DitoLand Platform
Updates
🏅제1회 디토랜드 크리에이터 경진대회🏅가 시작됩니다. 메타버스 크리에이터에 도전해보세요.
자세한 내용은 [디토랜드 크리에이터 경진대회 안내]를 참고하세요 .🎉
다운로드 안내 페이지 내용이 수정되었어요. 💻
Known Issues
스튜디오에서 파일을 오픈할 때 “잘못된 경로의 맵 파일 입니다 “팝업이 출력되고 있습니다. 📃
이후에 맵 파일은 정상적으로 로딩 동작 하고 있어요. 😅
현재 가이드 페이지의 🔍 검색이 원활하지 않은 이슈가 있어요. 😥
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 낮은 화질로 보여지는 문제가 있어요.
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 뒤집혀 보이는 문제가 있어요.
간헐적으로 🎙️보이스 셋팅의 [마이크 볼륨 / 음성 채팅 볼륨값]이 0으로 출력 되는 문제가 발생해요.
기업 계정으로 스튜디오에 접속했을 때, 🎥유튜브 객체를 추가하고 플레이 테스트 하면 스튜디오가 간헐적으로 종료💣되는 이슈가 있어요. 다만 월드로 등록하고 홈페이지에서 접속하면 정상으로 동작합니다. 🙏
웹페이지가 열릴 때 하얗거나 검은 화면이 나오는 경우가 있습니다. 😣
🗑 Net(그물) 재질의 twoside옵션을 문제 해결 시 까지 제거합니다.
💥 이펙트 - LineTrail의 TargetLocation으로 설정한 물체가 움직일 때 이펙트가 보이지 않는 현상이 있습니다.
Release Note 0.5.3 - Notice
Release Date : 2022.3.23
Updates
Bug Fixes
🕹 앱 아이콘이 언리얼 아이콘으로 나오던 현상이 수정되었어요.
스튜디오에서 메모리 ⚙가 과도하게 점유되는 현상이 🛠 수정되었어요.
🖼 PDF를 공유한 방에서 재접속시 앱이 🎇 종료되던 문제가 🔧 해결되었어요.
DitoLand Platform
Bug Fixes
비공개 월드의 👨👨👧👧 그룹원 테스트 기능이 동작하지 않는 오류가 🔨 수정되었어요.
이제 비공개로 👨👨👧👧 그룹원들끼리 테스트 하는기능이 정상 동작해요. 🥰
Known Issues
스튜디오에서 파일을 오픈할 때 “잘못된 경로의 맵 파일 입니다 “팝업이 출력되고 있습니다. 📃
이후에 맵 파일은 정상적으로 로딩 동작 하고 있어요. 😅
음성 채팅이 없는 월드를 방문한 뒤 플레이스에 들어가면 음성 채팅과 마이크 뷸륨이 1로 줄어드는 현상이 있어요🔇 이때는 환경설정>Voice 항목으로 들어가 볼륨을 올리면 정상적인 이용이 가능합니다.
현재 가이드 페이지의 🔍 검색이 원활하지 않은 이슈가 있어요. 😥
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 낮은 화질로 보여지는 문제가 있어요.
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 뒤집혀 보이는 문제가 있어요.
간헐적으로 🎙️보이스 셋팅의 [마이크 볼륨 / 음성 채팅 볼륨값]이 0으로 출력 되는 문제가 발생해요.
기업 계정으로 스튜디오에 접속했을 때, 🎥유튜브 객체를 추가하고 플레이 테스트 하면 스튜디오가 간헐적으로 종료💣되는 이슈가 있어요. 다만 월드로 등록하고 홈페이지에서 접속하면 정상으로 동작합니다. 🙏
웹페이지가 열릴 때 하얗거나 검은 화면이 나오는 경우가 있습니다. 😣
🗑 Net(그물) 재질의 twoside옵션을 문제 해결 시 까지 제거합니다.
💥 이펙트 - LineTrail의 TargetLocation으로 설정한 물체가 움직일 때 이펙트가 보이지 않는 현상이 있습니다.
Release Note 0.5.2 - Notice
Release Date : 2022.3.16
Updates
각 월드의 로딩 속도가 대폭 상승 🎉 되었습니다. 더욱 빨라진 디토랜드를 만나보세요. ✨
기업계정용 PDF강의 기능 🖼이 추가되었습니다. 여러명에게 문서를 화면으로 공유 및 페이지 동기화가 가능합니다. 사용 후 많은 피드백 부탁드립니다.
대한민국 💂♂️ 육군 전투복 및 정복 복장이 추가되었습니다 (추후 사전 고지 없이 삭제될 수 있습니다)
🔊 보이스 채팅이용시에 통신망의 변경이나 접속 오류로 인해 끊김 발생시에 재연결을 시도하도록
개선되었습니다.
스튜디오와 대시보드에 🏃♂️ 고통 애니메이션이 추가되었어요.
(스튜디오에서는 애니메이션 추가 팝업의 감정표현탭에서 설정할 수 있어요.)
스튜디오에 🏃♂️ 좀비_공격_0 애니메이션이 추가되었어요.
(스튜디오에서는 애니메이션 추가 팝업의 감정표현탭에서 설정할 수 있어요.)
스튜디오와 대시보드에 교복 및 운동복 🙎♂️🙎♀️ 의상이 추가되었어요. (상의3종, 하의3종)
배경음 15종이 추가되었어요. BGM_ 으로 검색해보세요.
효과음 20종이 추가되었어요. SFX_ 으로 검색해보세요.
Ditoland - Script
Bug Fixes
🔧 월드트리에서 Toybox의 CharacterSetting의 Child로 StaticObject 생성 후,
SurfaceUI 생성하면 스튜디오 실행 시 강제종료 되는 버그 수정되었습니다.
Known Issues
현재 가이드 페이지의 🔍 검색이 원활하지 않은 이슈가 있어요. 😥
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 낮은 화질로 보여지는 문제
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 뒤집혀 보이는 문제
간헐적으로 🎙️보이스 셋팅의 [마이크 볼륨 / 음성 채팅 볼륨값]이 0으로 출력 되는 문제가 발생해요
기업계정 스튜디오로 🎥유튜브객체를 넣고 플레이테스트시 스튜디오가 간헐적으로 종료💣되는 이슈가 있습니다. 🙏 등록 후 플레이어에서는 정상 동작합니다.
웹페이지가 열릴대 하얗거나 검은 화면이 나오는 경우가 있습니다. 😣
🗑 Net(그물) 재질의 twoside옵션을 문제 해결시까지 제거합니다.
💥 이펙트 - LineTrail의 TargetLocation으로 설정한 물체가 움직일 때 이펙트가 보이지 않는 현상이 있습니다.
Release Note 0.5.1 - Notice
Release Date : 2022.2.25
안녕하세요. 디토랜드 개발팀입니다.
개발팀은 현재 모바일 버전 정식 출시와 사용자 에셋 업로드 기능을 중점적으로 개발하고 있으며
곧 여러분에게 선뵐 날이 다가오고 있음을 알려드립니다.
디토랜드 많은 사랑과 관심 부탁드립니다.
질문이나 오류 보고 등은 언제든지 디스코드 채널로 문의 부탁드립니다.
Updates
놓치면 아쉬운 내용들에 달콤한 꿀 표시(🍯)를 했으니 한번 찾아보세요! 🤗
📑 스크립트 에디터의 기능이 추가되고 UX가 개선되었어요. 🎊
🍯📑 스크립트 에디터에서 코드영역을 지정 후, Ctrl + Shift + C 키를 입력하면
주석으로 설정되는 기능이 추가되었어요. 😍
🍯📑 스크립트 에디터에서 찾기/바꾸기 기능을 이제 단축키로 사용할 수 있어요. 🤗
현재 스크립트에서 찾기 : Ctrl + F / 현재 스크립트에서 바꾸기 : Ctrl + H
전체 스크립트에서 찾기 : Ctrl + Shift + F / 전체 스크립트에서 바꾸기 : Ctrl + Shift + H
🍯📑 스크립트 에디터에서 전체 찾기의 입력창이
화면 하단에서 화면 상단으로 위치가 변경되었어요. 🎈
🍯📑 스크립트 에디터에서 Explorer에 있는 객체를 드래그한 뒤,
스크립트 입력창의 라인 번호로 드랍하면 해당 객체의 주소가 🎁 자동 완성되는 기능이 추가되었어요.
(스크립트를 드랍시에는 새로운 탭으로 열리게 됩니다.)
🍯📑 스크립트 에디터에서 스크립트 탭을 우클릭후, Explorer View를 클릭하면
해당 스크립트의 🔍 위치를 찾을 수 있어요.
🍯2옥타브 분량의 🎹 피아노 키음 리소스 🎶가 추가되었어요.
툴박스에서 오디오 카테고리를 선택한 뒤, Piano를 검색해보세요. 🤩
Ditoland - Script
Bug Fixes
캐릭터와 NPC의 🚶♀️ 길찾기 이동이 동작하지 않는 현상이 🔧수정되었어요.
SetButtonHoverColor/SetButtonPressColor 함수로 버튼 🎨 색상을 변경하면
설정한 색상보다 어둡게 나타나는 현상이 수정되었어요.
🏀 Crevase 토이 위에 올라타면 Fall 애니가 출력되는 현상이 수정되었어요.
특정맵의 💡 워닝로그에서 표시되는 라인이 실제 코드상의 라인과 다른 현상이 수정되었어요.
Known Issues
현재 스튜디오의 월드트리에서 HUD 루트에 TouchUI를 생성하고 자식을 추가할 때
프로그램이 종료되는 이슈가 있어요
DitoLand Platform
Bug Fixes
새로 가입한 계정의 🙍♂️ 아바타 이미지가 출력되지 않던 문제가 수정되었어요. ✨
Known Issues
현재 가이드 페이지의 🔍 검색이 원활하지 않은 이슈가 있어요. 😥
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 낮은 화질로 보여지는 문제
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 뒤집혀 보이는 문제
아바타 이미지 저장 방식이 개선되면서 웹에 출력되던 이미지가 초기화 되었습니다. 😥
대시보드에서 🙍♂️ 아바타 설정 변경 후 다시 저장 시 정상출력 됩니다. 🙏
간헐적으로 🎙️보이스 셋팅의 [마이크 볼륨 / 음성 채팅 볼륨값]이 0으로 출력 되는 문제가 발생해요.
Release Note 0.5.0 - Notice
Release Data : 22.02.16
기본 템플릿의 구조의 변경으로 기존 맵이 동작하려면 일부 내용이 수정되어야 합니다. 🙏
수정 방법은 ⏬ 아래와 같습니다.
🕳 텔레포트 함수의 LandID(랜드 번호) 인자가 LandOrder(랜드 연결 순서)로 변경되었어요.
--시작랜드 0, 연결랜드 순서대로 1~local LandOrder =1Game:TeleportToPublicServer(LandOrder, movePlayerNameList, "")Game:TeleportToPrivateServer(LandOrder, movePlayerNameList, "")--------------------------------------------------------------------------------localfunctionPortalA_TeleportStart(player)endGame:AddTeleportStartEvent(LandOrder, PortalA_TeleportStart)--------------------------------------------------------------------------------localfunctionTeleportFailed(TeleportErrorType,player,LandOrder)endGame.OnTeleportFailedEvent:Connect(TeleportFailed)--현재 랜드의 순서를 반환해요local GetCurrentLandOrder = Game:GetCurrentLandOrder()
💼🍖 인벤토리/아이템 관련 함수의 인덱스가 1부터 시작되도록 통일되었어요.
--해당 함수 목록player:GetInventoryItem(id)LocalPlayer:UseInventoryItem(id)player:EquipInventoryItem(id)LocalPlayer:UnEquipInventoryItem(id)LocalPlayer:WorldDropInventoryItem(id)player:DeleteItem(id)
⛏ 콜라이더에 닿은 상태에서 테스트 플레이 종료시 잘못된 에러가 출력 되는 현상이 수정되었어요.
📱 모바일 기기에서 다른 앱 실행 후 돌아오면 꺼지던 문제가 수정되었어요
Known Issue
현재 🧍♀️캐릭터와 🧍♂️NPC의 길찾기가 동작하지 않는 현상이 있어요. 😢
현재 가이드 페이지의 🔍 검색이 원활하지 않은 이슈가 있어요. 😥
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 낮은 화질로 보여지는 문제
📱 모바일 기기에서 캡쳐된 마이디토 이미지가 뒤집혀 보이는 문제
일부 개발중 기능이 포함되어 있으며 동작을 보장하지 않아요.
DitoLand Platform
Updates
월드 상세페이지가 개선되었어요~ 😘
월드 리뷰 기능✒이 추가되었어요~ 이젠 월드 후기를 다른 👩🦰🧒친구들과 공유해보세요.
월드 상세 이미지🖼를 추가로 등록하지 않으면 캡쳐 이미지로 노출되도록 변경되었어요.
📱 App에서 비공개 플레이스 공유 시 입장코드도 함께 발송되도록 🔧개선되었어요.
📱 App 플레이스 태그 선택 검색 기능이 복수 선택 가능하도록 🔧개선되었어요.
📱 App에 오픈소스🧾가 고지되었습니다.
📱 App 친구 프로필 화면에 친구의 🙍♂️아바타를 확인할 수 있도록 전신 이미지🕺가 추가되었어요.
Release Note 0.4.0 - Notice
Release Data : 2021.12.14
안녕하세요 디토랜드 개발팀입니다. ✨
오랜만에 인사드립니다. 🎈 즐거움전 이후로 많은 사항이 개선/추가 되었습니다. 🎉
또한 📱모바일 버전을 드디어 선보일 수 있게 되었습니다. 🥰
다소 부족하지만 정식 출시 될때까지 많은 부분을 개선할 예정이니
정식출시까지 조금만 더 기다려주세요. 😙
기본 템플릿의 구조의 변경으로 기존 맵이 동작하려면 일부 내용이 수정되어야 합니다. 🙏
수정 방법은 ⏬ 아래와 같습니다.
할당된 값이 있는지 ❓확인할 때 사용할 수 있는 IsValidValue 함수가 추가되었어요.
--객체에 할당된 값이나 오브젝트를 이름으로 찾아서 있는지 여부를 bool로 반환해요if Workspace.SpawnPoint:IsValidValue("SurfaceUI") ==truethenprint(Workspace.SpawnPoint.SurfaceUI:GetName())endif Workspace.SpawnPoint:IsValidValue("ScreenUI") ==falsethenprint("ScreenUI가 없어요!")end
🚫 할당되지 않은 값에 접근할때 에러가 출력되도록 개선되었어요.
변경 사항
일부 함수/속성의 사용 방식이 아래와 같이 변경되었어요. 🔧
아직 기존 방식과 변경된 방식 둘다 사용할 수 있지만, 기존 방식의 함수를 사용하면 수정을 권장하는 로그가 표시된답니다!
🎲 컨텐츠 백여개가 추가 되었습니다 (3D모델, 이미지, 효과음, 음악 ) 계속적으로 추가될 예정이니 더욱더 다양한 디토랜드 세상을 만들어보세요. (최근순으로 정렬해서 보시면 더 편하게 확인하실 수 있습니다.)
🕹 이제 플레이 버튼을 플레이어가 즉시 실행되는 방식으로 개선되었습니다.
🗡 한손검.격투애니메이션이 추가되었습니다. 스튜디오의 CharacterSetting-속성에서 확인하실 수 있습니다.
🧾 속성등 더 많은 부분이 한글화 되었습니다. 🇰🇷
⚙ 스튜디오 설정 메뉴에 다양한 기능이 추가되었습니다. 🙌🏼🙌🏾
→ ✔ 카메라 속도, 자동저장 주기, 색상 조절, UI DPI조절 기능이 추가되었습니다.
👄 자동번역과 보이스채팅을 지원하는 새로운 채팅 서버가 적용되었습니다. (일부 구현중인 기능이 포함되었습니다) - 일반사용자는 사용할 수 없습니다.
💬 이제 채팅창 활성화, 채팅 보내기가 "/"에서 "Enter"키로 변경되었습니다.
🗺 스튜디오에서 길찾기 기능이 추가 되었습니다. (곧 NPC가 찾아뵐 예정입니다 :D)
🎨 이제 스튜디오 UI 에디터에서 다중 선택이 가능합니다.
🖼 랜드 연결상태를 더 잘 볼 수 있도록 스튜디오의 퍼블리시 화면을 개선하였습니다.
👁🗨 스튜디오에서 투명도가 적용되지 않는 부분은 속성에서 투명도를 조절할 수 없도록 수정되었습니다.
🖨 이제 스크립트 에디터에서 로그를 더 상세히 출력합니다. 🤟
🎮 토이/샘플맵 수정사항
1. 🎪 툴박스에 토이가 추가되었어요!
→ ⌨ 글자를 입력할 수 있는 TextToy가 추가되었어요. (ToyRoom에서 확인해보세요!)
→ 🔄 오브젝트의 회전에 활용할 수 있는 RotPart가 추가되었어요. (ToyRoom에서 확인해보세요!)
→ 🕑 콜라이더 타입의 스톱워치 토이인 Stopwatch_Collider가 추가되었어요.
**2. 💌 **토이에 주석이 추가되었어요!
3. 🔫 총기류 토이 개선 - 패치 이후 순차적으로 업로드 될 예정입니다.
→ ✔ 내부 기능 개선 및 예외처리, 상태제어 함수가 추가되었어요.
📑 ModuleScript 기능 추
→ ✔ Utility 모듈에 ScanObjectList 함수가 추가되었어요.
Bug Fixes
⛑ 스튜디오와 플레이어의 안정성이 개선되었습니다.
(😥그럼에도 불구하고 혹시 크래시가 나실 경우. 간단히 상황 기재후 "Send & Close" 버튼을 꼭 눌러주세요.🙏🏼)
🤼♂️ 특정 게임을 여러 플레이어가 동시에 플레이할때 우상단에 나오는 유저명 목록 표시가 오동작하는 현상이 수정되었습니다.
💥 이펙트 - LineTrail의 TargetLocation을 설정하면 이펙트가 보이지 않던 현상이 수정되었습니다.
⌨ 스튜디오 멀티 플레이테스트에서 별도 실행된 플레이테스트 창을 esc메뉴를 통해서 닫을 수 없는 문제가 해결되었습니다.
🎼 컨텐츠 업로드시 캡쳐되는 썸네일에서 오디오 개체등에서 일부 디버그 랜더가 포함되던 현상을 수정하였습니다.
🔧 윈도우 사용자 명에 공백이 있는 경우 정상적으로 실행되지 않던 문제가 수정되었습니다.:bl
Known Issues
🗑 Net(그물) 재질의 twoside옵션을 문제 해결시까지 제거합니다.
💥 이펙트 - LineTrail의 TargetLocation으로 설정한 물체가 움직일 때 이펙트가 보이지 않는 현상이 있습니다.
DitoLand Platform
Updates
👨👩👧👧 비공개 게임 그룹 테스트 기능이 추가 되었습니다. 이제 같은 그룹에 속한 디토랜드 유저분들끼리는 일반사용자에게 노출되지 않은 상태에서 테스트 하실 수 있습니다. (설정방법 : 게임 비공개 설정 > 테스트할 그룹 선택 > 그룹 소통하기에 게임 URL 공유 > 공유된 게임화면으로 이동 > 테스트 플레이)
📬 그룹 소통하기에서 답글을 읽기 편하도록 작성 순서로 노출순서를 변경하였습니다.
📬 그룹 소통하기에서 답글을 작성하기 편하게 입력 영역을 상단으로 변경하였습니다.
🔐 회원가입 시 규칙 확인 할 수 있고, 규칙 충족 시 확인 버튼 활성화 되도록 개선 되었습니다.
👉 일부 페이지 이동 동작이 개선되었습니다.
🖱 내 게임관리에서 오클릭 방지를 위해 클릭 영역을 개선하였습니다.
🔔 받은 알림 클릭 시 해당 화면으로 이동할 수 있도록 개선되었습니다.
👥 게임 리스트에 표기되는 동접자가 누적 방문자로 변경되었습니다.
💰 대시보드 아이템 샵에서 목록 불러오기 실패 시 리로드 버튼이 노출 되고, 버튼 클릭 시 안내문구는 사라지고 로딩중 이미지가 출력됩니다.
Bug Fixes
🛠 아바타 변경후 웹페이지를 2번 리프레쉬해야 반영되는 문제 수정.
🛠 계정찾기시 유효성 체크 및 정보 입력 관련 버그 수정.
🛠 친구 추가 알림시 친구 페이지로 안가던 버그 수정.
🛠 비공개 랜드에서 공개↔비공개 전환시 메뉴 노출되지 않던 문제 수정.
0.1.7
Release Date : 2021.06.10 19:15
DitoLand
Update
🎮 스토리 템플릿 추가 - 텍스트와 카메라를 이용한 예제가 추가 되었습니다.
🎁 아이템 구매 시 바로 작용 후 저장될 수 있도록 개선되었습니다.
🏃♂️ 스튜디오에서 사용할 수 있는 애니메이션이 추가되었습니다.
💥 컨텐츠가 40여개 추가 되었습니다 (3D모델, 이미지, 효과음, 음악 )
Bug fix
😆 감정표현 애니메이션 장착 시 크래시 되던 문제가 수정되었습니다.
🍬 아이템 구매 버튼이 중복 클릭 되던 버그가 수정되었습니다.
DitoLand Platform
Update
📑 이메일 인증 및 계정 찾기 기능이 업데이트 되었습니다.
0.1.6
Release Date : 2021.05.28 19:15
DitoLand Platform
Update
✨ 메인 페이지의 디토랜드 티저 영상이 변경되었어요.
📑 도움말 페이지의 내용이 추가되었어요.
Bug fix
🔧 회원가입을 할때 버튼을 빠르게 누르면 잘못된 경고가 출력되는 현상이 수정되었어요.
⚒ 그룹 생성시 가입 리스트가 갱신되지 않는 현상이 수정되었어요.
0.1.5
Release Date : 2021.05.14 18:21
DitoLand Platform
Update
🎠 디토랜드와 함께하는 인디크래프트 온라인 가상게임쇼에 참여할 수 있는 배너가 추가되었어요.
🎮 인기 게임 정렬 방식이 변경되었어요.
🏷 사용자 이름을 사용자 아이디로 명칭을 변경했어요.
📑 로블록스 사용자를 위한 가이드 문서가 추가되었습니다.
Bug fix
⛏ 회원가입 버튼 중복클릭 되는 버그가 수정되었어요.
🛠 검색창에 검색어 입력시 검색 서브메뉴가 잘리는 현상이 개선되었어요.
🔨 그룹 생성 시 가입리스트에 출력 안되던 현상이 수정되었어요.
0.1.4
Release Date : 2021.04.26 19:00
DitoLand
Update
🎮 키보드의 우측 화살표로 캐릭터 전/후진 및 카메라 좌우회전이 가능하도록 수정되었습니다. (Blank맵에서 확인할 수 있어요.)
🎁 스튜디오 템플릿 페이지에 튜토리얼 1~3번 맵이 추가되었습니다. (이 맵들을 이용하면 좀더 간편하게 장애물 달리기 게임을 만들어 볼 수 있습니다.)
Bug fix
🔨 런처 중복 실행시 나오던 오류 수정되었습니다.
⛏ 제어판에서 설치된 Ditoland의 버전이 잘못 표시되던 현상 수정되었습니다.
⚒ 디토랜드 대시보드의 작업표시줄 아이콘이 언리얼아이콘으로 나오던 현상 수정되었습니다.
🔧 캐릭터가 떨어져 죽을 때 OnDeathCharacter 이벤트 호출 되게 수정되었습니다.
DitoLand Platform
Update
📑 유니티 사용자를 위한 가이드 문서에 public 변수/함수 사용법이 추가되었습니다.
0.1.3
Release Date : 2021.04.16 19:10
DitoLand
Update
⏳ 다운로드 받는 파일의 크기가 대폭 감소하였습니다. ⏰ 빠른 다운로드후 설치가 가능합니다.
🕑 게임 실행시 로딩 상황을 알 수 있는 텍스트가 추가되었습니다. 🎉
🔊 사운드의 듣기 대상이 캐릭터에서 카메라 기준으로 변경되었습니다.
Bug fix
🛠 스튜디오 안정화. ( 🚧 크래시 리포트 화면에서 꼭 ㅜㅜ Send and Close 버튼 부탁드립니다. 🙏)
👌 일부 다운로드 받는 양이 많은 게임들이 바로 실행되지 않던 문제가 수정되었습니다.
📌 스튜디오에서 여러개 선택시에 포커스가 리셋되는 문제가 수정되었습니다.
😂 스튜디오의 아이디 표시가 제대로 표시되지 않던 문제가 수정되었습니다.
🎂 스튜디오,대시보드,플레이어의 바탕화면 아이콘이 제대로 표시되지 않던 문제가 수정되었습니다.
👀 특정 PC에서 파일 탐색기의 폰트가 제대로 보이지 않던 문제가 수정되었습니다.
🔫 Collison을 끈 StaticMesh, Collider 모두 총알이 정상적으로 통과하여 피해를 주도록 수정되었습니다. (Collider 너머에 있는 캐릭터에게 총을 발사할 때 이제 정상적으로 피해가 적용됩니다. 💣 )
DitoLand Platform
Update
🎨 메인 배너 이미지 교체되었습니다.
✨ 일부 모바일 화면에서 뭉개지던 아이콘이 개선되었습니다.
🌎 랜드 업데이트 할 때 게임 버전도 업데이트 되도록 수정되었습니다. 👏
🛠 설치 안내 팝업 내용이 개선되었습니다.
Bug fix
📴 모바일에서 실행파일이 다운로드 되지 않도록 수정되었습니다.
0.1.2
Release Date : 2021.04.09 22:22
DitoLand
런처 개선
🧰 실행을 위한 필수 프로그램들이 자동설치 됩니다.
⚙ 다운로드 속도가 표시됩니다.
Bug fix
🛠 스튜디오 안정화. (계속 하는 중입니다. 😅 여러분의 ✨소중한✨ 리포트 감사드립니다. ❤️😘)