CarmenSandiego/Assets/UdonSharp/PlayerTeleporter.cs
Jamie Greunbaum 9c20a8fb20 - Added floor tiles to round 1 and 2 areas.
- Added a door and steps to round 1 area.
- Added an entrance teleport button to the spawn area.
- Host teleport buttons disabled if the player doesn't have host permissions.
- Reflection probes tweaked a bit.
2025-09-09 03:48:03 -04:00

88 lines
2.2 KiB
C#

using UdonSharp;
using UnityEngine;
using UnityEngine.UI;
using VRC.SDKBase;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class PlayerTeleporter : UdonSharpBehaviour
{
[SerializeField] private PermissionsPanel _PermissionsPanel;
[SerializeField] private Transform _HostTeleportLocation;
[SerializeField] private Transform _EntranceTeleportLocation;
[SerializeField] private Transform _Player1TeleportLocation;
[SerializeField] private Transform _Player2TeleportLocation;
[SerializeField] private Transform _Player3TeleportLocation;
[SerializeField] private Transform _AudienceTeleportLocation;
[Space]
[SerializeField] private GameObject _HostTeleportButtons;
[Space]
[SerializeField] private PlayerPodium[] _PlayerPodiums;
public override void OnPlayerRespawn(VRCPlayerApi Player)
{
if (Player == Networking.InstanceOwner || Player == Networking.Master || _PermissionsPanel.IsPlayerHost(Player))
{
_HostTeleportButtons.SetActive(true);
}
base.OnPlayerRespawn(Player);
}
public void HostEnabled()
{
_HostTeleportButtons.SetActive(true);
}
public void HostDisabled()
{
_HostTeleportButtons.SetActive(false);
}
public void TeleportToHostPosition()
{
_HostTeleportButtons.SetActive(false);
Networking.LocalPlayer.TeleportTo(_HostTeleportLocation.position, _HostTeleportLocation.rotation);
}
public void TeleportToEntrancePosition()
{
_HostTeleportButtons.SetActive(false);
Networking.LocalPlayer.TeleportTo(_EntranceTeleportLocation.position, _EntranceTeleportLocation.rotation);
}
public void TeleportToPlayer1Position()
{
_PlayerPodiums[0].SetPlayerName();
Networking.LocalPlayer.TeleportTo(_Player1TeleportLocation.position, _Player1TeleportLocation.rotation);
}
public void TeleportToPlayer2Position()
{
_PlayerPodiums[1].SetPlayerName();
Networking.LocalPlayer.TeleportTo(_Player2TeleportLocation.position, _Player2TeleportLocation.rotation);
}
public void TeleportToPlayer3Position()
{
_PlayerPodiums[2].SetPlayerName();
Networking.LocalPlayer.TeleportTo(_Player3TeleportLocation.position, _Player3TeleportLocation.rotation);
}
public void TeleportToAudience()
{
Networking.LocalPlayer.TeleportTo(_AudienceTeleportLocation.position, _AudienceTeleportLocation.rotation);
}
}