Я создаю бесконечную игру для раннеров, в которой основная идея состоит в том, чтобы избегать шипов и собирать драгоценные камни - довольно просто.У меня проблема в том, что всякий раз, когда игрок сталкивается с драгоценным камнем, даже если он уничтожает драгоценный камень, воспроизводит анимацию коллекции и добавляет 1 к счетчику очков, он также действует как шип и уничтожает игрока.Почему это происходит и как я могу это исправить?Вот мой код для "GemTypeCollision.cs":
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GemTypeCollision : MonoBehaviour
{
public GameObject gem;
public Collider2D gemCollider;
public float numberOfGems;
public Animator gemAnimator;
private void OnTriggerEnter2D(Collider2D gemCollider)
{
numberOfGems += 1;
gemAnimator.SetBool("gemCollected", true);
Destroy(gem, 0.5f);
}
}
Я также думаю, что стоит отметить, что у игрока также есть прикрепленный скрипт "столкновения типа шипа", и игрок реагирует именно так, как онбыл бы, если бы он ударил шип, даже когда камень был разрушен.Кажется, кажется, что камень относится к типу spike и gem типа, но я не совсем уверен.
Обновление вопроса:
Вот настоящая проблема - когда игрок сталкиваетсяс чем угодно, Unity думает, что он сталкивается со всем, как метод OnTriggerEnter2D, вместо того, чтобы принимать параметр Collider2D, который я ему даю, он просто игнорирует информацию и думает, что игрок запускается каждым коллайдером одновременно.Кто-нибудь знает способ решить эту проблему?