Line 53: | Line 53: | ||
seatPosition = thisGameObject.WorldPosition | seatPosition = thisGameObject.WorldPosition | ||
teleportPosition = Vector.New(seatPosition.X, seatPosition.Y + 1, seatPosition.Z) | teleportPosition = Vector.New(seatPosition.X, seatPosition.Y + 1, seatPosition.Z) | ||
− | Space.Scene.PlayerAvatar.Teleport( | + | Space.Scene.PlayerAvatar.Teleport(teleportPosition) |
end | end | ||
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(teleportPosition) 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)
--clicking this object will Enable/Disable it's Seat component thisGameObject = Space.Host.ExecutingObject component = thisGameObject.Seat OnClick = function() component.Enabled = not component.Enabled end thisGameObject.AddClickable() thisGameObject.Clickable.OnClick(OnClick)
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)
|