Dash damage should occur only once on every Entry OR Exit. Also after hitting an enemy the player gets a bonus dash. Here is my code
using UnityEngine;
public class CollisionDetection : MonoBehaviour
{
CombinedPlayerMovement combinedPlayerMovement;
[SerializeField] GameObject playerC;
private bool hasTriggeredCollider2D = false; // To make sure score is incremented only on enter or exit
private void Awake()
{
if (playerC != null)
{
combinedPlayerMovement = playerC.GetComponent<CombinedPlayerMovement>();
}
}
void Start()
{
Debug.Log("Dash To Score");
}
void OnTriggerEnter2D(Collider2D other)
{
HitOnEnterExit(other);
if (!hasTriggeredCollider2D && combinedPlayerMovement.isDashing) // does not flip bool when walking into enemy hitbox
{
hasTriggeredCollider2D = true;
}
}
void OnTriggerExit2D(Collider2D other)
{
HitOnEnterExit(other);
if (hasTriggeredCollider2D) // flip bool for execution on next enter
{
hasTriggeredCollider2D = false;
}
}
void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.CompareTag("Enemy1") && combinedPlayerMovement.isDashing && !combinedPlayerMovement.canDash) // basically is inside and space key pressed
{
Debug.Log("Hit");
combinedPlayerMovement.canDash = true;
}
}
void HitOnEnterExit(Collider2D other)
{
if (!hasTriggeredCollider2D && other.gameObject.CompareTag("Enemy1") && combinedPlayerMovement.isDashing) // Ensure the object has the correct tag
{
Debug.Log("Hit");
combinedPlayerMovement.canDash = true;
}
}
}
Is my code alright? Or is the problem in the inspector?