OnTriggerEnter
2 participantes
Página 1 de 1
OnTriggerEnter
Olá pessoal, estou tentando modificar um sistema de teleporte que eu tenho no meu jogo mais estou com uma dúvida.
O teleporte é através de OnTrigger enter, mais eu quero adicionar um sistema que se ele clicar no Botão do canvas faça a mesma função do OnTrigger.
Já tentei de diversas formas mais não consegui ainda.
Alguém tem uma solução para eu fazer essa função ?
Tem alguma forma de criar um botão e passar para ele que quando clicar simula como se ele estivesse tocando no colisor ?
O teleporte é através de OnTrigger enter, mais eu quero adicionar um sistema que se ele clicar no Botão do canvas faça a mesma função do OnTrigger.
Já tentei de diversas formas mais não consegui ainda.
- Código:
// a portal that teleports a player into a dungeon instance for his party
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Collider))]
public class ARENAMANAGER : MonoBehaviour
{
[Tooltip("Instance template in the Scene. Don't use a prefab, Mirror can't handle prefabs that contain NetworkIdentity children.")]
public Instance instanceTemplate;
void OnPortal(Player player)
{
// check party again, just to be sure.
if (player.party.InParty())
{
// is there an instance for the player's party yet?
if (instanceTemplate.instances.TryGetValue(player.party.party.partyId, out Instance existingInstance))
{
// teleport player to instance entry
if (player.isServer) player.movement.Warp(existingInstance.entry.position);
Debug.Log("Teleporting " + player.name + " to existing instance=" + existingInstance.name + " with partyId=" + player.party.party.partyId);
}
// otherwise create a new one
else
{
Instance instance = Instance.CreateInstance(instanceTemplate, player.party.party.partyId);
if (instance != null)
{
// teleport player to instance entry
if (player.isServer) player.movement.Warp(instance.entry.position);
Debug.Log("Teleporting " + player.name + " to new instance=" + instance.name + " with partyId=" + player.party.party.partyId);
}
else if (player.isServer) player.chat.TargetMsgInfo("There are already too many " + instanceTemplate.name + " instances. Please try again later.");
}
}
}
public void OnTriggerEnter(Collider co)
{
if (instanceTemplate != null)
{
// a player might have a root collider and a hip collider.
// only fire Portal OnTriggerEnter code here ONCE.
// => only for the collider ON the player
// => so we check GetComponent. DO NOT check GetComponentInParent.
Player player = co.GetComponent<Player>();
if (player != null)
{
// only call this for server and for local player. not for other
// players on the client. no need in locally creating their
// instances too.
if (player.isServer || player.isLocalPlayer)
{
// required level?
if (player.level.current >= instanceTemplate.requiredLevel)
{
// can only enter with a party
if (player.party.InParty())
{
// call OnPortal on server and on local client
OnPortal(player);
}
// show info message on client directly. no need to do it via Rpc.
else if (player.isClient)
player.chat.AddMsgInfo("Can't enter instance without a party.");
}
// show info message on client directly. no need to do it via Rpc.
else if (player.isClient)
player.chat.AddMsgInfo("Portal requires level " + instanceTemplate.requiredLevel);
}
}
}
}
}
Alguém tem uma solução para eu fazer essa função ?
Tem alguma forma de criar um botão e passar para ele que quando clicar simula como se ele estivesse tocando no colisor ?
brunoeua- Iniciante
- PONTOS : 830
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Void OnTriggerEnter
» OnTriggerEnter com erro?
» OnTriggerEnter duvida
» Problema com OnTriggerEnter
» Problema no ontriggerenter!!!!
» OnTriggerEnter com erro?
» OnTriggerEnter duvida
» Problema com OnTriggerEnter
» Problema no ontriggerenter!!!!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos