No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Selecci贸n de los caramelos

14/31
Recursos

Vamos a programar la interacci贸n de nuestros usuarios con la aplicaci贸n.

Debemos detectar los toques de los usuarios a la pantalla, as铆 que, vamos a utilizar el m茅todo OnMouseDown que nos va a ayudar a detectar los contactos de nuestros dedos con la pantalla.

Recuerda que Unity nos permite programar un mismo juego para todas las plataformas disponibles y, a pesar de que, el m茅todo que vamos a utilizar tenga el nombre de 鈥淢ouse鈥, Unity lo va a traducir por nosotros para detectar cualquier toque a la pantalla, sea con los dedos o el mouse.

Aportes 8

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Para detectar los clicks del mouse o los toques y movimientos de nuestros dedos en la pantalla debemos usar el m茅todo OnMouseDown de Unity.

Tambi茅n existen otros m茅todos como OnMouseUp, OnMouseDrag, OnMouseEnter, OnMouseExit, OnMouseOver, y OnMouseUpAsButton:

Tengo un problema con el m茅todo OnMouseDown, no me reconoce este m茅todo y no se activa cuando hago click en el candy

La logica para lograr seleccionar y deseleccionar caramelos es curiosa:

private void OnMouseDown()
    {
        if (spriteRenderer.sprite == null ||
            BoardManager.sharedInstance.isShifting)
        {
            return;
        }
        if (isSelected)
        {
            DeselectCandy();
        }
        else
        {
            if (previousSelected == null)
            {
                SelectCandy();
            }
            else
            {
                previousSelected.DeselectCandy();
                SelectCandy();
            }
        }
    }
  1. En caso de que hayamos tocado cualquir otra parte del juego o ya se est茅n animando los aramelos (por ejemplo cuando hay un match) pues entones nos quedamos haciendo nada

  2. Si el caramelo tocado estaba seleccionado, ahora lo deseleccionamos

  3. En caso de que no estuviera seleccionado antes, mira a ver si es el primero en el que tocamos y lo seleccionamos, si no si ya hab铆a uno seleccionado vamos a de forma sencilla deseleccionar el previo y seleccionar el actual

Genial

Tambi茅n para entenderlo a煤n m谩s r谩pido, vemos la definici贸n de **onMouseDown: ** Se llama a OnMouseDown cuando el usuario ha presionado el bot贸n del mouse mientras estaba sobre el Collider .
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html

He comprendido como funciona sin embargo habr谩 que echarle otra repasada para que quede bien grabado.

Continuamos! 馃槃

me saltan esos errores no entiendo a que de deba鈥

este es mi codigo :

private void Awake()
{
    spriteRenderer = GetComponent<SpriteRenderer>();
   
}

private void SelectCandy()
{
    isSelected = true;
    spriteRenderer.color = selectedColor;
    previousSelect = gameObject.GetComponent<Candy>();
}

private void DeselectCandy()
{
    isSelected = false;
    spriteRenderer.color = Color.white;
    previousSelect = null;
}

private void OnMouseDown()
{
    if (spriteRenderer.sprite == null || BoardManager.sharedInstance.isShifting)
    {
        return;
    }
    if (isSelected)
    {
        DeselectCandy();
    }
    else
    {
        if (previousSelect == null)
        {
            SelectCandy();
        }
        else
        {
            previousSelect.DeselectCandy();
            SelectCandy();
        }
    }
}

buenas, tengo un problema con los collider en este proyecto. Tengo el mismo c贸digo que muestra el profesor, con un peque帽o cambio. En lugar de utilizar Sprite estoy usando prefab y al correr el programa se visualiza de forma correcta, pero al hacer click sobre las im谩genes el programa no reacciona.
Lo primero que valide fue que todos los prefab tuviesen su collider. Luego de esto, agregue en la escena de forma manual cada uno de lo prefab y todos funcionaron de forma correcta. Por ultimo lo que se me ocurri贸 fue resetear en tiempo de ejecuci贸n cada uno de los prefab, lo que para mi sorpresa si funciono.
Alguno tiene una sugerencia?.

Para validar que no fuera problemas los prefab, cambie todo mi proyecto, para que este igual que el de las clases y tuve el mismo error