es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de añadir puntos cuando un jugador colisiona con otro objeto y presiona una tecla?

Estoy haciendo un juego de ritmo en 2D y quiero que cuando la flecha colisione con el botón y se presione la tecla correcta, se añada un punto a mi sistema de puntuación. Actualmente, se añade un punto solamente cuando se presiona la tecla, sin importar si la flecha ha colisionado con el botón.

“`using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Unity.VisualScripting;
using UnityEngine.UIElements;

public class NoteObject : MonoBehaviour
{

public bool canBePressed;

public KeyCode keyToPress;
public ScoreManager scoreManager;

private void Start()
{

}

void Update()
{
if (Input.GetKeyDown(keyToPress))
{
if (canBePressed)
{
gameObject.SetActive(false);
}
}
}

void OnTriggerEnter2D(Collider2D other)
{
GameObject tempObject = other.GameObject();
if(tempObject.tag == "Activator")
{
Debug.Log("colisionó(:");
canBePressed = true;
ScoreManager.Instance.AddPoint();
}
}

void OnTriggerExit2D(Collider2D other)
{
GameObject tempObject = other.GameObject();
if (tempObject.tag == "Activator")
{
canBePressed = false;
}
}

}“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema de que se agrega un puntaje independientemente de si la flecha colisiona con el botón, deberá modificar el código en la función Update() para agregar un punto solo cuando la flecha haya colisionado con el botón:

    void Update()
    {
        if (Input.GetKeyDown(keyToPress))
        {
            if (canBePressed)
            {
                gameObject.SetActive(false);
                ScoreManager.Instance.AddPoint();
            }
        }
    }
    

    Al mover la llamada de la función AddPoint() dentro de la declaración if que verifica si la flecha puede ser presionada, nos aseguramos de que se agregue un punto solo cuando la flecha colisiona con el botón y se presiona la tecla correcta.

Comments are closed.