Attaches the player to the target game object, keeping the avatar fixed in its current position/rotation relative to the target object (e.g. for use in Vehicles)
Space.Scene.PlayerAvatar.AttachTo(targetObject)
--the below scipt makes the player Attach/Detach to/from this object by clicking it--(Example: Seat/Vehicle/Experience etc.. )thisGameObject = Space.Host.ExecutingObjectisAttached =0OnClick=function()if isAttached ==0then Space.Scene.PlayerAvatar.AttachTo(thisGameObject) isAttached =1elseif isAttached ==1then Space.Scene.PlayerAvatar.Detach() isAttached =0endendthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click to Attach/Detach yourself to/from me"thisGameObject.Clickable.OnClick(OnClick)
Detach
void Detach ()
Detaches the avatar from whatever it may be attached to (only works for the player avatar), including chairs, vehicles and so forth.
Space.Scene.PlayerAvatar.Detach()
--the below scipt makes the player Attach/Detach to/from this object by clicking it--(Example: Seat/Vehicle/Experience etc.. )thisGameObject = Space.Host.ExecutingObjectisAttached =0OnClick=function()if isAttached ==0then Space.Scene.PlayerAvatar.AttachTo(thisGameObject) isAttached =1elseif isAttached ==1then Space.Scene.PlayerAvatar.Detach() isAttached =0endendthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click to Attach/Detach yourself to/from me"thisGameObject.Clickable.OnClick(OnClick)
OnAvatarAttached
void OnAvatarAttached ()
An event which fires whenever this avatar is attached to a game object in the current scene.
Only works on a white-label deployment due to abuse concerns. Restrictions: The outfit ID needs to be one of the grid template outfits, with all the restrictions that apply to those (i.e. must use either SW content, or content uploaded by a grid admin account).
local avatar=Space.Scene.PlayerAvataravatar.LoadOutfit(10001)
--the below script changes the player's outfit into --a pre-defined outfit if they click the object containing the script--(Example: Player clicks on a wardrobe and their outfit changes)--[Only works on white-label deployment]thisGameObject = Space.Host.ExecutingObjectOnClick=function()Space.Scene.PlayerAvatar.LoadOutfit(2662469)endthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Put on your favourite suit"thisGameObject.Clickable.OnClick(OnClick)
ResetOutfit
void ResetOutfit ()
Reset current outfit. (white-label only)
local Space.Scene.PlayerAvatar.ResetOutfit()
--Clicking this object will reset player avatar's outfitthisObject = Space.Host.ExecutingObjectthisPlayer = Space.Scene.PlayerAvatarOnClick=function()thisPlayer.ResetOutfit() endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
local avatar=Space.Scene.PlayerAvataravatar.Register("MyName","MyPassword","MyEmail",false,function () Space.Log("Success!")end,function () Space.Log("OnError!!")end)
ResetOutfitToTemplate
void ResetOutfitToTemplate (int outfitID)
Reset current outfit to a specific template. (white-label only)
local avatar=Space.Scene.PlayerAvataravatar.ResetOutfitToTemplate(10001)
--Clicking this object will reset player avatar's outfit to a specific template.thisObject = Space.Host.ExecutingObjectthisPlayer = Space.Scene.PlayerAvatarOnClick=function()thisPlayer.ResetOutfitToTemplate(10001)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
-- Best used with non humanoid modelslocal bone = Space.Scene.PlayerAvatar.FindBone("Hips/Spine/Chest/LeftShoulder"); -- Gets the bone by pathSpace.Log(bone.Name); -- Prints the retrieved bones name, which will match the last name in the path specified.or-- Best used with humanoid modelslocal bone = Space.Scene.PlayerAvatar.FindBone("LeftShoulder"); -- Gets bone by UnityEngine.HumanTrait.BoneName[]Space.Log(bone.Name); -- Prints the bone name of the corresponding search parameter, which when using a default avatar, it will print "LeftShoulder"
--[[UnityEngine.HumanTrait.BoneName[]Body: Hips, Spine, Chest, UpperChestHead: Neck, Jaw, Head, LeftEye, RightEyeLeft Arm: LeftShoulder, LeftUpperArm, LeftLowerArm, LeftHandLeft Leg: LeftUpperLeg, LeftLowerLeg, LeftFoot, LeftToesRight Arm: RightShoulder, RightUpperArm, RightLowerArm, RightHandRight Leg: RightUpperLeg, RightLowerLeg, RightFoot, RightToesLeft Hand (Thumb): LeftThumbProximal, LeftThumbIntermediate, LeftThumbDistalLeft Hand (Index): LeftIndexProximal, LeftIndexIntermediate, LeftIndexDistalLeft Hand (Middle): LeftMiddleProximal, LeftMiddleIntermediate, LeftMiddleDistalLeft Hand (Ring): LeftRingProximal, LeftRingIntermediate, LeftRingDistalLeft Hand (Little): LeftLittleProximal, LeftLittleIntermediate, LeftLittleDistalRight Hand (Thumb): RightThumbProximal, RightThumbIntermediate, RightThumbDistalRight Hand (Index): RightIndexProximal, RightIndexIntermediate, RightIndexDistalRight Hand (Middle): RightMiddleProximal, RightMiddleIntermediate, RightMiddleDistalRight Hand (Ring): RightRingProximal, RightRingIntermediate, RightRingDistalRight Hand (Little): RightLittleProximal, RightLittleIntermediate, RightLittleDistal]]
--this script will set your avatar's "right hand" as parent of this object--this way this object will be a child of your right hand and therefore move with it--(Example: clicking on a gun to equip it)thisGameObject = Space.Host.ExecutingObjectOnClick=function()RightHand = Space.Scene.PlayerAvatar.FindBone("RightHand")thisGameObject.SetParent(RightHand)thisGameObject.LocalPosition = Vector.New(0,0,0) -- resetting position to match handendthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip="Click to Equip "thisGameObject.Clickable.OnClick(OnClick)
--the below script teleports player to a specific landmark--if they click the object containing it--(Example: A region promotional/advertisement sign)--[You need a landmark in the scene with name "Fashion Section Landmark"thisGameObject = Space.Host.ExecutingObjectOnClick=function()Space.Scene.PlayerAvatar.Teleport("Fashion Section Landmark")endthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click me to go to the fashion section!"thisGameObject.Clickable.OnClick(OnClick)
--the below scipt makes the player Play/Stop a custom animation when clicking this object--(Example: Dance Machine )--[Required: Place an animation in the first "Resource" in the scripting runtime]thisGameObject = Space.Host.ExecutingObjectisDancing =0OnClick=function()if isDancing ==0then Space.Scene.PlayerAvatar.StartCustomAnimation(Space.Resources[1]) isDancing =1elseif isDancing ==1then Space.Scene.PlayerAvatar.StopCustomAnimation() isDancing =0endendthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click to Start/Stop dancing"thisGameObject.Clickable.OnClick(OnClick)
--the below scipt makes the player Play/Stop a custom animation when clicking this object--(Example: Dance Machine )--[Required: Place an animation in the first "Resource" in the scripting runtime]thisGameObject = Space.Host.ExecutingObjectisDancing =0OnClick=function()if isDancing ==0then Space.Scene.PlayerAvatar.StartCustomAnimation(Space.Resources[1]) isDancing =1elseif isDancing ==1then Space.Scene.PlayerAvatar.StopCustomAnimation() isDancing =0endendthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click to Start/Stop dancing"thisGameObject.Clickable.OnClick(OnClick)
OnAvatarReload
void OnAvatarReload (Closure o)
This event will be called when the avatar gets loaded.
local avatar=Space.Scene.PlayerAvataravatar.OnAvatarReload(function () Space.Log(avatar.OutfitID)end)
--this script ensures the avatar is still animating after their avatar gets reloadedthisPlayer = Space.Scene.PlayerAvatartheAnimation = Space.GetResource("The Animation") --add animation to resources in Scripting RuntimewasAnimated =true--you'll need to set this according to the situation, its true now for example's sakeResetDance=function()if wasAnimated then thisPlayer.PlayCustomAnimation(theAnimation)endendthisPlayer.OnAvatarReload(ResetDance)
SynchroniseState
void SynchroniseState ()
Synchronise avatar's state to network.
Space.Scene.PlayerAvatar.SynchroniseState()
StartFly
void StartFly ()
Puts the avatar into Fly Mode.
Space.Scene.PlayerAvatar.StartFly()
--the below script teleports the player to a sky location after he clicks--but then immediately puts the character in fly mode so they don't fall back down--(Example: Sky exhibit)thisGameObject = Space.Host.ExecutingObjectOnClick=function()Space.Scene.PlayerAvatar.Teleport(Vector.New(0,10,0))Space.Scene.PlayerAvatar.StartFly()endthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click me to view our sky exhibit!"thisGameObject.Clickable.OnClick(OnClick)
EndFly
void EndFly ()
Takes the avatar out of Fly Mode.
Space.Scene.PlayerAvatar.EndFly()
--the below script a player flying in the sky back to the ground --but then immediately end's the character fly mode so they are standing--(Example: Going back down to ground from Sky exhibit)thisGameObject = Space.Host.ExecutingObjectOnClick=function()Space.Scene.PlayerAvatar.Teleport(Vector.New(0,0,0))Space.Scene.PlayerAvatar.EndFly()endthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Click me to go back to the ground!"thisGameObject.Clickable.OnClick(OnClick)
OnAvatarSkeletonReload
void OnAvatarSkeletonReload (Closure o)
This event will be called when the avatar skeleton gets loaded.
--this script ensures the avatar is still animating after their avatar's skeleton gets reloadedthisPlayer = Space.Scene.PlayerAvatartheAnimation = Space.GetResource("The Animation") --add animation to resources in Scripting RuntimewasAnimated =true--you'll need to set this according to the situation, its true now for example's sakeResetDance=function()if wasAnimated then thisPlayer.PlayCustomAnimation(theAnimation)endendthisPlayer.OnAvatarSkeletonReload(ResetDance)
--this script, once clicked, will get all avatars in the scene--and print their Username(including self)--(Example: scoreboards/radars/scanners/game machines)thisGameObject = Space.Host.ExecutingObjectOnClick=function()allAvatars = Space.Scene.AllAvatarsfor var=1, #allAvatars dolocal Username = allAvatars[var].Username Space.Log("Username: " .. Username)endendthisGameObject.AddClickable() thisGameObject.Clickable.Tooltip ="Click to print all avatars' Username"thisGameObject.Clickable.OnClick(OnClick)
--this script, once clicked, will get all avatars in the scene--and print their Title and Username(including self)thisGameObject = Space.Host.ExecutingObjectOnClick=function()allAvatars = Space.Scene.AllAvatarsfor var=1, #allAvatars dolocal Username = allAvatars[var].Usernamelocal Title = allAvatars[var].Title Space.Log(Title .." " .. Username)endendthisGameObject.AddClickable() thisGameObject.Clickable.Tooltip ="Click to print all avatars' Titles and Username"thisGameObject.Clickable.OnClick(OnClick)
Returns the avatar's user ID, please note if you store these, this is a 'long' value not a 'int'.
playerID = Space.Scene.PlayerAvatar.ID
--this script, once clicked, will get all avatars in the scene--and print their ID(including self)--(Example: scoreboards/radars/scanners/game machines)thisGameObject = Space.Host.ExecutingObjectOnClick=function()allAvatars = Space.Scene.AllAvatarsfor var=1, #allAvatars dolocal ID = allAvatars[var].ID Space.Log("ID: " .. ID)endendthisGameObject.AddClickable() thisGameObject.Clickable.Tooltip ="Click to print all avatars' ID"thisGameObject.Clickable.OnClick(OnClick)
IsAttached
bool IsAttachedget
Returns True if avatar is Attached
isAttached = Space.Scene.PlayerAvatar.isAttached
MovementSpeed
float MovementSpeedgetset
How fast the avatar's movement is
Space.Scene.PlayerAvatar =20
--the below scipt makes the object give the player triple movement speed--once it's clicked, and then returns them to original speed after 10 seconds--(Example: Triple Speed Powerup (vatar running race))thisGameObject = Space.Host.ExecutingObjectTripleSpeedCoroutine=function()local originalSpeed = Space.Scene.PlayerAvatar.MovementSpeedSpace.Scene.PlayerAvatar.MovementSpeed = originalSpeed *3coroutine.yield(10)Space.Scene.PlayerAvatar.MovementSpeed = originalSpeedendOnClick=function()Space.Host.StartCoroutine(TripleSpeedCoroutine)endthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Triple Speed Powerup!"thisGameObject.Clickable.OnClick(OnClick)
JumpHeight
float JumpHeightgetset
How high the avatar's jump is
Space.Scene.PlayerAvatar.JumpHeight =20
--the below scipt makes the object give the player triple jump height--once it's clicked, and then returns them to original jump height after 10 seconds--(Example: Triple Jump Height Powerup )thisGameObject = Space.Host.ExecutingObjectoriginalJumpHeight = Space.Scene.PlayerAvatar.JumpHeightTripleJumpHeightCoroutine=function()Space.Scene.PlayerAvatar.JumpHeight = originalJumpHeight *3coroutine.yield(10)Space.Scene.PlayerAvatar.JumpHeight = originalJumpHeightendOnClick=function()Space.Host.StartCoroutine(TripleJumpHeightCoroutine)endthisGameObject.AddClickable()thisGameObject.Clickable.Tooltip ="Triple JumpHeight Powerup!"thisGameObject.Clickable.OnClick(OnClick)
Guest
bool Guestget
Is this Avatar a Guest?
isGuest = Space.Scene.PlayerAvatar.Guest
--this script will make this object non-clickable for guest playersthisObject = Space.Host.ExecutingObjectthisPlayer = Space.Scene.PlayerAvatarOnClick=function()Space.Log("Do Something")endifnot thisPlayer.Guest then--if player is not guestthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)end
OutfitID
long OutfitIDget
Returns the current outfit ID of the avatar
avOutfit = Space.Scene.PlayerAvatar.OutfitID
Loaded
bool Loadedget
Returns true if avatar is Loaded
isLoaded = Space.Scene.PlayerAvatar.Loaded
--this script will wait for a joining avatar to load first before making it play an animation
--(otherwise that animation may be reset if played before load is complete)
NewJoinAnimation = Space.GetResource("The Animation")
OnPlayerJoin = function(NewAvatar)
Space.Host.StartCoroutine(function()
while not NewAvatar.Loaded do coroutine.yield(0) end --makes it wait
Space.Log("yes")
NewAvatar.PlayCustomAnimation(NewJoinAnimation) --at this point Loaded is True
end)
end
Space.Scene.OnPlayerJoin(OnPlayerJoin)
Returns a reference to avatar's skeleton GameObject
avSkeleton = Space.Scene.PlayerAvatar.Skeleton
--clicking this object will replace your avatar's animator controller (found on the skeleton)
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
customController = Space.GetResource("animcont")
OnClick = function()
thisPlayer.Skeleton.Animator.Controller = customController
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
BlockMovement
bool BlockMovementgetset
If set to True, avatar's movement will be blocked
Space.Scene.PlayerAvatar.BlockMovement = true
--the below scipt makes this object a boundary area where any user entering it
--will be blocked from movement for 10 seconds, then the object will release controls and
--destry itself after that
--(Example: freezing trap)
--[This object's collider needs to be set as IsTrigger (Please read about OnTriggerStart for troubleshooting)]
thisGameObject = Space.Host.ExecutingObject
FrozenTime = 0.0
OnTriggerStart = function(TriggerStarter)
if TriggerStarter.Root.Avatar ~= nil then
if TriggerStarter.Root.Avatar.Username == Space.Scene.PlayerAvatar.Username then
Space.Scene.PlayerAvatar.BlockMovement = true
end
end
end
OnTriggerStay = function(TriggerStayer)
if TriggerStayer.Root.Avatar ~= nil then
if TriggerStayer.Root.Avatar.Username == Space.Scene.PlayerAvatar.Username then
FrozenTime = FrozenTime + Space.DeltaTime
if FrozenTime > 20 then
Space.Scene.PlayerAvatar.BlockMovement = false
thisGameObject.Destroy()
end
end
end
end
thisGameObject.SubscribeToEvents()
thisGameObject.OnTriggerStart(OnTriggerStart)
thisGameObject.OnTriggerStay(OnTriggerStay)
BlockRun
bool BlockRungetset
Is the Avatar blocked from running?
avatar=Space.Scene.PlayerAvatar.BlockRun = true
--this script will block a player's run ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
OTS = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockRun = true
end
end
OTE = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockRun = false
end
end
thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
BlockFly
bool BlockFlygetset
Is the Avatar blocked from flying?
Space.Scene.PlayerAvatar.BlockFly = true
--this script will block a player's fly ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
OTS = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockFly = true
end
end
OTE = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockFly = false
end
end
thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
BlockCrouch
bool BlockCrouchgetset
Is the Avatar blocked from crouching?
Space.Scene.PlayerAvatar.BlockCrouch = true
--this script will block a player's crouch ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
OTS = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockCrouch = true
end
end
OTE = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockCrouch = false
end
end
thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
BlockJump
bool BlockJumpgetset
Is the Avatar blocked from jumping?
Space.Scene.PlayerAvatar.BlockJump = true
--this script will block a player's jump ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
OTS = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockJump= true
end
end
OTE = function(gameObject)
if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
thisPlayer.BlockJump= false
end
end
thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
--Clicking this object will teleport you 2 units forward and make you face the opposite way
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
OnClick = function()
local targetPos = thisPlayer.GameObject.WorldPosition + (thisPlayer.GameObject.Forward * 2)
local targetRot = thisPlayer.GameObject.WorldRotation * Quaternion.AngleAxis(Vector.Up, 180)
thisPlayer.Teleport(targetPos, targetRot)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
Parameter
Type
Description
o
Closure (callback)
A function that will be called once the OnAvatarReload event is triggered.
o
Closure (callback)
A function that will be called once the OnAvatarSkeletonReload event is trigged.