Таким образом, в методе OnCollisionEnter2D()
любой код внутри будет срабатывать каждый раз, независимо от того, что попадет в него. Тем не менее, вы можете получить данные о столкновении, чтобы определить, попало ли оно в вашу землю. Лучший способ сделать это - использовать систему слоев Unity .
Сначала вы захотите создать слой (перейдите в «Настройки проекта»> «Теги и слои». Обязательно запомните, какое число было слева от названия вашего слоя) для всех ваших основных элементов, а затем назначьте их этому. слой. Когда вы сталкиваетесь с чем-то, вы можете проверить, находится ли он на этом слое, используя оператор if
, например:
private void OnCollisionEnter2D(Collision2D collision)
{
// Foo represents the number of the layer that the ground is assigned to.
if (collision.collider.gameObject.layer == foo)
{
isDead = true;
rb2d.velocity = Vector2.zero;
GameController.Instance.Die();
}
}