Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

objeto (trigger) que al colisionar con otro (target1) active un tercero (target2)

Iniciado por Abramelin, Julio 14, 2015, 05:38:54 PM

Tema anterior - Siguiente tema
soy un poco novato y me cuesta un poco escribir los codigos, a ver si me podeis echar un cable con esto.
 
para que os hagais una idea: es una estatua que se puede mover, si la colocas en el trigger, se activaria un objeto.
 
 
 
Este codigo lo quiero colocar en el objeto activador (trigger) que llevaria los 2 target (el colisionador y el objeto que se activa)
 

 
 

var colisionador : GameObject;
var desbloqueable : GameObject;
 
function start () {
desbloqueable.SetActive(false);
}
 
function OnTriggerEnter (colisionador.hit.collider) {
desbloqueable.SetActive(true);
Destroy.Gameobject
}

 
 
 
algo asi pero bien escrito en .js,  ¿que es lo que falla en el codigo?


function OnTriggerEnter (Col : Collider)
{
     desbloqueable.SetActive(true);
     Destroy(gameobject);
}

Tu error estaba en querer acceder a Destroy.Gameobject destory es un Método que recibe un Objeto y los destruye Destroy(Objeto);
 
Otra cosa, la funcion OnTriggerEnter es heredada desde UnityEngine y esta misma necesita un parametro no un valor.
 
la forma correcta de implementarla es la siguiente.

function OnTriggerEnter (Col : Collider)
{
     desbloqueable.SetActive(true);
     Destroy(gameobject);
}

Con eso ya funcionaria tu código.

@francoe1 acabo de probar el codigo y tengo un pequeño problema.
 
el desbloqueable se activa con la colision del player no con la del objeto Col (colisionador), yo pretendo que cuando pongas la estatua que va en el primer target  (colisionador) dentro del trigger se ejecute la funcion de activar el otro objeto, tal como hace con el player pero solo con la estatua (colisionador)

var Col : GameObject;
var desbloqueable : GameObject;
function OnTriggerEnter (Col : Collider)
{
     desbloqueable.SetActive(true);
     Destroy(gameobject);
}

gameobject lo cambie por gameObject porque tiraba error. a ver si puedes echarme un cable para que solo afecte al colider del colisionador y no al player, que no se como se como incluir el objeto dentro de la funcion
 
 
 
Edit: haciendo esto tampoco me deja, o me tira error o ignora esta linea (colisionador.Col : Collider)

var colisionador : GameObject;
var desbloqueable : GameObject;
 

function OnTriggerEnter (colisionador.Col : Collider)
{
     desbloqueable.SetActive(true);
     Destroy(gameObject);
}


var Col : GameObject;
var desbloqueable : GameObject;
function OnTriggerEnter (Col : Collider)
{
     if(Col.transform.name != "Estatua")return;
     desbloqueable.SetActive(true);
     Destroy(gameobject);
}

Solo si accede un objeto con el nombre estatua se activa y se destruye el objeto.

bueno lo hare asi entonces si no se puede poner la estatua con target..., queria ahorrarme el hacer un codigo por estatua (son 3) e insertar cada estatua en el target de cada trigger (mismo codigo los 3 triggers). Ya conocia la posibilidad de llamar al objeto por tag o clase... ¿no es posible actuar sobre el collider del GameObject del target unicamente, sea cual sea su nombre?

Etiquetas: