Line 102: | Line 102: | ||
Space.Log(inUse)<br> | Space.Log(inUse)<br> | ||
end | end | ||
− | }} | + | |6=<pre> --this script will play a looping sound only if someone is using the seat |
+ | --and will stop the sound if someone is not | ||
+ | --(Example: carnival game ) | ||
+ | --[Object must contain a Seat component and AudioSource component] | ||
+ | |||
+ | thisGameObject = Space.Host.ExecutingObject | ||
+ | |||
+ | |||
+ | OnUpdate = function() | ||
+ | if thisGameObject.Seat.InUse then | ||
+ | if not thisGameObject.Audio.IsPlaying then | ||
+ | thisGameObject.Audio.Play() | ||
+ | end | ||
+ | else | ||
+ | if thisGameObject.Audio.IsPlaying then | ||
+ | thisGameObject.Audio.Stop() | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | |||
+ | thisGameObject.Audio.Loop = true | ||
+ | thisGameObject.SubscribeToEvents() | ||
+ | thisGameObject.OnUpdate(OnUpdate) </pre>}} | ||
{{ScriptFunction|long|PlayerSeated|(get;);|Return the ID of the seating player.|5= | {{ScriptFunction|long|PlayerSeated|(get;);|Return the ID of the seating player.|5= |
Make a player sit.
local seat=thisObject.Children[0].Seat
function Seat()
seat.SitPlayer()
Make a player unseat.
local seat=thisObject.Children[0].Seat
function UnSeat()
seat.UnseatPlayer()
Binds a function to the Seat's On Stand Up event
e = function() Space.Log("On Stand Up event") end Space.Host.ExecutingObject.Seat.OnStandUp(e)
Binds a function to the Seat's On Sit event
e = function() Space.Log("On Sit event") end Space.Host.ExecutingObject.Seat.OnSit(e)
Binds a function to the Seat's On Player Stand Up event which is fired only on the Player's client
e = function() Space.Log("On Player Stand Up") end Space.Host.ExecutingObject.Seat.OnPlayerStandUp(e)
--the below script will teleport the player above the seat after standing up --so that they do not go back to original position, but rather be standing next to the seat --(Example: if the seat moves - such as in a vehicle- and we want to stand up next to it) --[Requires Seat Component in the GameObject running this script] thisGameObject = Space.Host.ExecutingObject OnPlayerStandUp = function() seatPosition = thisGameObject.WorldPosition teleportPosition = Vector.New(seatPosition.X, seatPosition.Y + 1, seatPosition.Z) Space.Scene.PlayerAvatar.Teleport(seatPosition) end thisGameObject.Seat.OnPlayerStandUp(OnPlayerStandUp)
Binds a function to the Seat's On Player Sit event which is fired only on the Player's client
e = function() Space.Log("On Player Sit event") end Space.Host.ExecutingObject.Seat.OnPlayerSit(e)
--the below script will check if the player sitting is the owner of the seat --if they are not, we will remove them from the seat --(Example: if the seat is a vehicle which the owner wants no one else to use) --[Requires Seat Component in the GameObject running this script] --<Note: ID match may not succeed in Editor but will succeed in SS client> thisGameObject = Space.Host.ExecutingObject OnPlayerSit = function() if Space.Scene.PlayerAvatar.ID ~= thisGameObject.Owner then thisGameObject.Seat.UnseatPlayer() Space.Log("You do not have permission to sit in this vehicle") end end thisGameObject.Seat.OnPlayerSit(OnPlayerSit)
Whether the seat component is enabled.
Space.Log(seat.Enabled)
Return that whether the seat is in use.
local seat=thisObject.Children[0].Seat
function InUse()
local inUse=seat.InUse
Space.Log(inUse)
--this script will play a looping sound only if someone is using the seat --and will stop the sound if someone is not --(Example: carnival game ) --[Object must contain a Seat component and AudioSource component] thisGameObject = Space.Host.ExecutingObject OnUpdate = function() if thisGameObject.Seat.InUse then if not thisGameObject.Audio.IsPlaying then thisGameObject.Audio.Play() end else if thisGameObject.Audio.IsPlaying then thisGameObject.Audio.Stop() end end end thisGameObject.Audio.Loop = true thisGameObject.SubscribeToEvents() thisGameObject.OnUpdate(OnUpdate)
Return the ID of the seating player.
local seat=thisObject.Children[0].Seat
function PlaySeated ()
local playSeated=seat.PlayerSeated
Space.Log(playSeated)
Return true if uses SlotID
local seat=thisObject.Children[0].Seat
function UseSlotID ()
local useSlotID=seat.UseSlotID
Space.Log(useSlotID)
Return the slot ID of the seat.
local seat=thisObject.Children[0].Seat
function SlotID ()
local slotID=seat.SlotID
Space.Log(slotID)
Return the clickable collider.
local seat=thisObject.Children[0].Seat
function ClickableCollider()
local clickcoll=seat.ClickableCollider
Space.Log(clickcoll.Enabled)
Return the animation clip.
local seat=thisObject.Children[0].Seat
local animation=seat.Animation
Space.Log(animation.Name)
--the below script will toggle between two seat animations every 30 seconds --(Example: a couch where the player sitting periodically changes pose) --[Requires Seat Component in the GameObject running this script] --[Requires adding 2 animations as "Resources" at the bottom of the Scripting Runtime Component] thisGameObject = Space.Host.ExecutingObject anim1 = Space.GetResource("anim1") anim2 = Space.GetResource("anim2") thisGameObject.Seat.Animation = anim1 animIndex = 1 AnimationAlternate = function() while true do Space.Log(thisGameObject.Seat.Animation) if animIndex == 1 then thisGameObject.Seat.Animation = anim2 animIndex = 2 else thisGameObject.Seat.Animation = anim1 animIndex = 1 end -- next part unseats then seats the player to reflect animation change (its too fast to notice) -- we also make sure we are running this part on the specific player sitting (if any), not everyone else if thisGameObject.Seat.InUse then if thisGameObject.Seat.PlayerSeated == Space.Scene.PlayerAvatar.ID then thisGameObject.Seat.UnseatPlayer() thisGameObject.Seat.SitPlayer() end end Space.Log("yielding") coroutine.yield(5) end end Space.Host.StartCoroutine(AnimationAlternate)
Return the animation clip.
local seat=thisObject.Children[0].Seat
local animation=seat.AnimationMale
Space.Log(animation.Name)
Return the animation clip.
local seat=thisObject.Children[0].Seat
local animation=seat.AnimationFemale
Space.Log(animation.Name)
|