Один из вариантов - отключить столкновение на звезде сразу после столкновения с мячом.Чтобы использовать это для объединенной звезды, вам потребуется повторно включить столкновение при повторном включении звезды:
Collider2D myCollider;
private void Awake()
{
myCollider = GetComponent<Collider2D>();
}
private void OnEnable()
{
myCollider.enabled = true;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("White Ball"))
{
// Disable this collider immediately to prevent redundant scoring, sound cues, etc.
myCollider.enabled = false;
ScoreScript.scoreValue += 1;
StartCoroutine(ChangeColor());
}
}
Если вы решите, что вам нужно столкновение со звездой во время появления сопрограммы, вы можетедобавьте поле к StarCollision
, которое гарантирует, что счет увеличится только один раз.Опять же, для объединенной звезды вам необходимо убедиться, что она сброшена в OnEnable
:
private bool alreadyScored = false;
private void OnEnable()
{
alreadyScored = false;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("White Ball"))
{
if (!alreadyScored)
{
ScoreScript.scoreValue += 1;
StartCoroutine(ChangeColor());
alreadyScored = true;
}
}
}