Итак, я строил игру, где у меня были прыжки игрока, и если игрок приземляется на ящик или врага, игрок прыгает через функцию при столкновении (используя детектор столкновений, другой игровой объект для обнаружения столкновений). Столкновение зарегистрировано, хотя функция не выполняется, после небольшой отладки я заметил, что объекта (сценариев), который я вызываю, там нет, когда я играю, они нулевые, и это дает исключение nullReferenceException.
Класс детектора столкновений:
public class CollisionDetector : MonoBehaviour {
public bool collide=false;
public rogueMovement ro;
public Crate cr;
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.collider.tag=="enemy")
{
Debug.Log("Jumpoff enemy");
collision.collider.GetComponent<rogueMovement>().jumpOffEnemy();
collide = true;
}
else if (collision.collider.tag=="crate")
{
ro.isJumping=false;
Debug.Log("Crate collision");
cr.Die();
}
}
}
функция, которую я хотел, чтобы она выполняла:
public void jumpOffEnemy()
{
//ani.SetTrigger("jump");
rb.AddForce(new Vector2(0f, Verticaljump), ForceMode2D.Impulse);
//transform.Translate(0f,5f*Time.deltaTime,0f);
Debug.Log("jump");
}
здесь перед игрой и после воспроизведения изображений того, что происходит с игровым объектом детектора столкновений, где я поместил скрипт Crate и мошеннический класс
введите описание изображения здесь введите описание изображения здесь