Noticias

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

seleccionar un objeto

Iniciado por Javierhakerone, Julio 27, 2018, 11:19:05 PM

Tema anterior - Siguiente tema
Saludos...
 
Amigos tengo una duda, quiero que al yo hacer click en un objeto de mi juego pueda seleccionarlo y le salga una marca que indique que ese es objeto al que seleccione y que lo tengo como objetivo... por ejemplo un CUBO que yo al darle click pueda ver por ejemplo su barra de vida y demás...
 
Gracias de antemano...

Hola Javierhakerone,
 
por lo que yo sé, esto lo tendrías que realizar mediante el raycast. Le pones al objeto un tag, y en la función del raycast, cuando el hit sea el tag de ese objeto, realizar aquello que te interesa sobre el mismo.
 
Un ejemplo de cómo usarlo sería el siguiente:
 

var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var hit : RaycastHit;
if (Physics.Raycast(ray, hit)){
    if(hit.collider.tag == "prop") {          
           Destroy(hit.collider.gameObject);
      }
}

 
Aquí lo que realizó es comprobar que el objeto sobre el que interactúa tiene el tag prop y si es así lo destruyo. Tú puedes cambiar el color o hacer un setActive sobre su barra de energía.
 
El raycast funciona tanto con el click del mouse como con el touch, para móviles.
 
Espero haberte servido de ayuda. Hay muchísimas funciones, métodos y eventos del raycast, si miras en la documentación de unity sobre este tema, encontrarás la manera más fácil de trabajar con el en lo que le quieras hacer al objeto.
 
un saludo
 
 

Gracias Lapigames, investigare y probare con el raycast...
 
Lo principal que quiero es que el seleccionarlo el cubo pueda debugear un circulo por ejemplo encima del mismo y que este siga la posición del cubo, pero que sea visible para el usuario, la forma que se de debugear no se ve al usuario sino solo a través del unity...
 
De la misma forma poder guardar la posicion del cubo para que al disparar la bala trace una linea recta hacia el cubo...

Julio 30, 2018, 10:05:33 AM #3 Ultima modificación: Julio 30, 2018, 10:08:36 AM por Lapigames
Hola javierhakerone,
 
¿porque no le pones al objeto cubo otro objeto dentro que sea un canvas, por ejemplo, y ahí printas lo que quieras cuando haya un hit? ¿Si lo que quieres es un texto, puedes hacerlo directamente con el text mesh?. Lo pones setvisible a true y ya esta. También, si lo que quieres es poner la vida del cubo, te paso un ejemplo de como hacerlo y te quitas de jugar con el canvas, que yo no soy muy partidario de tener 20 canvas en una escena aunque te lo permita unity:
 
" width="560">
 
Respecto a guardar la posición del cubo , solamente tienes que guardar en una variable pública el transform.position del cubo, así cuando hagas el shoot, tendrás la posición del cubo, esta posición debes modificarla en el update, para que mantenga la última siempre, y en el hit del raycast pon una variable semaforo "Booleana" que diga si ha habíado hit o no para que el update empiece a calcular la posición del cubo.
 
No se si me he explicado, cualquier cosa que no entiendas comentamela, seguramente hay una forma mejor de hacerlo, pero para empezar esta ya va bien y no consume muchos recursos.
 
Un saludo.

Saludos de nuevo Lapigames, explicando mas a fondo lo que quiero antes que nada es que,al dar click sobre un objeto el juego detecte que hize click sobre el de tal forma que pueda atrapar su variable de posicion asi como dices, en el update para irla siguiendo mientras el cubo se muevo...por ejemplo en un espacio vacio esta mi GameObjet que viene siendo el player y 3 cubos que serian NPC, estos estaran en movimiento (ya esto lo resolvi(a medias)) y yo pueda seleccionar cualquiera de los cubos con solo hacer click sobre ellos, al hacerlo como ejemplo activar un canvas que me indique que el cubo actualmente seleccionado es el rojo...
 
siento como si te pidiera que me resolvieras todo jaja espero no sea asi y agradesco toda tu ayuda...
 
si gustas te puedo enseñar lo que tengo, no es nada del otro mundo pero lo hize siendo autodidacta con cursos de youtube

Etiquetas: