¿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;
}
}
}“`
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:Al mover la llamada de la función
AddPoint()
dentro de la declaraciónif
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.