Jump to content
UnitySpain

Search the Community

Showing results for tags 'drag and drop'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Inicio
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
  • Mesa de ayuda
    • Unity
    • Arte
    • Otras Especialidades
    • Builds & Dispositivos
  • Aportes de la Comunidad
    • Recursos
    • Eventos
    • Buenas Prácticas
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

  • byGui
  • El Blog de Pioj

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 3 results

  1. Hola a todos, les vengo a pedir un poco de ayuda ya que tengo una script que funciona conjuntamente con otra script que instancia objetos, la primera se encarga del drag and drop, la cosa es uqe funciona perfecto pero está hecha para inputs de PC y yo necesito que se pueda hacer desde un celular. Estuve viendo en el manual de Unity y en internet en general cómo modificar esta script pero no puedo hacerlo, intenté detectar si la touchCount es mayor a cero, almacenar la posicion del primer touch, luego calcular los delta entre este y el objeto instanciado pero no me funciona. Despues lo traté de implementar con los TouchPhase pero no lo logro hacer funcar. Alguno me puede ayudar con el código o bien mostrarme un video que explique algo por el estilo en entornos 3D? De antemano gracias : ) private void Update() { if (objetoActual != null) { MoverObjetoAlMouse(); RotacionPorScroll(); SoltarObjeto(); } } public void SetInstanceID(int id) { objetoActual = Instantiate(Prefabs[0]); objetoActual.GetComponentInChildren<Torre>().ID = id; renders.Clear(); colores.Clear(); materiales.Clear(); SeteoDeColorOriginal(); } private bool BotonDelMismoPrefab(int i) { return objetoActual != null && objetoActualIndex == i; } private void MoverObjetoAlMouse() { if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);//Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, ZonaPosible)) { objetoActual.transform.position = hit.point; objetoActual.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); if (hit.normal == Vector3.up) { if (!objetoActual.GetComponent<ObjetoPosicionado>().Bloqueado) { print("desbloqueado"); AsignacionDeColores(false, false); PoderSoltar = true; } else { print("bloqueado por colision"); AsignacionDeColores(true, false); PoderSoltar = false; } } else { print("bloqueado por no ser vertical"); AsignacionDeColores(true, false); PoderSoltar = false; } } else { if (Physics.Raycast(ray, out hit)) { print("bloqueado por no coincidir el layer"); objetoActual.transform.position = hit.point; objetoActual.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); AsignacionDeColores(true, false); PoderSoltar = false; } } } } private void RotacionPorScroll() { if (Input.touchCount > 1) { rotacionMouseScroll += Input.mouseScrollDelta.y; //Aca no se bien cómo reemplazarlo objetoActual.transform.Rotate(Vector3.up, rotacionMouseScroll * velocidadDeRotacion); } } private void SoltarObjeto() { if (Input.GetButtonDown("Fire1") && PoderSoltar) { AsignacionDeColores(false, true); Destroy(objetoActual.GetComponent<ObjetoPosicionado>().Newbc); objetoActual.GetComponent<ObjetoPosicionado>().TorreScript.enabled = true; objetoActual.GetComponent<ObjetoPosicionado>().Ani.enabled = true; foreach (Collider coll in objetoActual.GetComponent<ObjetoPosicionado>().Colls) { coll.enabled = true; } if(objetoActual.layer == 2) { objetoActual.layer = objetoActual.GetComponent<ObjetoPosicionado>().layersOriginales[0]; } for (int i = 0; i < objetoActual.transform.childCount; i++) { if(objetoActual.transform.GetChild(i).transform.gameObject.layer == 2) { objetoActual.transform.GetChild(i).transform.gameObject.layer = objetoActual.GetComponent<ObjetoPosicionado>().layersOriginales[i]; } } objetoActual = null; rotacionMouseScroll = 0; if (usarAudio) { if (!GetComponent<AudioSource>().isPlaying) { GetComponent<AudioSource>().PlayOneShot(DespligueSonido); } } } else { if (usarAudio) { if (Input.GetButtonDown("Fire1") && !PoderSoltar) { if (!GetComponent<AudioSource>().isPlaying) { GetComponent<AudioSource>().PlayOneShot(BlockSound); } } } } } }
  2. Saludos comunidad, hoy quiero hacer este pequeño aporte acerca de como crear un juego estilo Fruit Ninja. Basicamente en lo que me centro en este tutorial es en las cosas mas interesantes que tiene el juego original y esas son: como cortar un objeto 3d por la mitad y como crear el efecto cuando se desliza el mouse. En fin aqui el tutorial: Cualquier consejo o forma de como hacer lo mismo me ayudaria mucho!
  3. Quiero hacer un inventario, usando un Script de Drag and Drop, ya tengo la lógica, pero me falta algo. Tengo el Siguiente Scrip; ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class Drag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public static GameObject itemBeginDrag; Vector3 startposition; Transform startparent; #region IBeginDragHandler implementation //------------------------------------------// // Agarra un Item // //------------------------------------------// public void OnBeginDrag (PointerEventData eventData) { itemBeginDrag = gameObject; startposition = transform.position; startparent = transform.parent; GetComponent<CanvasGroup> ().blocksRaycasts = false; } #endregion //------------------------------------------// // Mueve un Item // //------------------------------------------// #region IDragHandler implementation public void OnDrag (PointerEventData eventData) { transform.position = Input.mousePosition; } #endregion //------------------------------------------// // Suelta el Item // //------------------------------------------// #region IEndDragHandler implementation public void OnEndDrag (PointerEventData eventData) { DataInventary inventario = new DataInventary(); itemBeginDrag = null; //Obtenemos el id de lo que contiene el Botón int indice = GetComponent<ChangedIcon>().indice; //Si se sobreposiciono sobre otro boton, cambiamos el contenido del botón /* * if("item esta sobre otro item"){ * int tempo = ItemSeleccionado; * ItemSeleccionado = ItemSobreposicionado; * ItemSobreposicionado = tempo; * } */ GetComponent<ChangedIcon> ().cambiaricono (); //Devolvemos a la posición original GetComponent<CanvasGroup> ().blocksRaycasts = true; if (transform.parent != startparent) { transform.position = startposition; } } #endregion //------------------------------------------// } ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- El Script funciona, en el sentido que puedo arrastrar los Items, pero mi pregunta es. ¿Cómo puedo saber sobre que botón esta sobreposicionado el botón que estoy arrastrando, para así poder cambiar su ID?....
×
×
  • Create New...