Noticias

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

Script en Prefabs

Iniciado por Trankus, Diciembre 29, 2015, 04:53:12 AM

Tema anterior - Siguiente tema
Diciembre 29, 2015, 04:53:12 AM Ultima modificación: Diciembre 29, 2015, 05:27:47 AM por Trankus
    private Ray pulsacion;
private RaycastHit colision;
private GameObject pj;

// Use this for initialization
void Start () {
   pj = GameObject.Find("Bola");
}

void Update() {
   if (Input.GetMouseButtonDown (0)) {
      pulsacion = Camera.main.ScreenPointToRay (Input.mousePosition);
      if (Physics.Raycast (pulsacion, out colision)) {
         Debug.Log ("Pressed left click. "+colision.collider.name+" ---- "+this.name);
         pj.transform.position = new Vector3(this.transform.position.x,2,this.transform.position.z);
      }
   }
Saludos,tengo un Prefab (cubo) duplicado varias veces y una esfera. Mi intención es que cuando cliques un cubo la esfera se situe encima. El problema es que al clicar un cubo se activan todos los scripts de todos los cubos.
Nose si tendria que hacer los cubos por separados (sin prefab) o que, pero necesito hacer como un tablero(muchos cubos) y la esfera se vaya posicionando. 

Tu script se activa cuando pulsas el botón izquierdo del ratón. En ningún momento compruebas si has pulsado encima de un objeto o no. Por eso, al apretar el botón del ratón, se activan todos.

Diciembre 29, 2015, 09:33:41 PM #2 Ultima modificación: Diciembre 29, 2015, 09:34:00 PM por kaito
Si tienes cientos de cubos, utilizar Input.GetMouseButtonDown no sería la mejor opción.Podrías verificar si es visible, con renderer.isVisible, pero tampoco sería una alternativa al Input, porque tendrías que hacer un script para todos los cubos.Lo más eficiente, sería utilizar un solo script y seleccionar los cubos visibles utilizando alguna de las funciones de la clase Physics(BoxCastAll, ...) para aplicarle el Raycast.

Tambien puedes utilizar los eventos del ratón: (OnMouseEnter, OnMouseDrag, OnMouseExit, OnMouseDown)  que funcionan también con la pantalla tactil de Android.

Etiquetas: