DoodleJump broken platform

86
09 апреля 2021, 22:30

Делаю аналог DoodleJump.

Застрял на механике работы "сломанной" платформы. Идея следующая - при коллизии игрока с платформой (OnCollisionEnter2D) отключать BoxColider у платформы - тем самым игрок проваливается через платформу, после коллизии игрока с платформой нужно включить обратно коллайдер платформы (OnCollisionExit2D), чтобы можно было удалить объект платформы при выходе за пределы экрана. Метод OnCollisionExit2D не включает обратно коллайдер, что не дает возможность удалить платформы при выходе за пределы экрана.

public class BrokenPlatform : MonoBehaviour
{
    private void OnCollisionEnter2D(Collision2D collider)
    {
        Rigidbody2D platformRB2d = collider.gameObject.GetComponent<Rigidbody2D>();
        if (platformRB2d.velocity.y <= 0)
        {
            gameObject.GetComponent<BoxCollider2D>().enabled = false;
        }
    }
    private void OnCollisionExit2D(Collision2D collider)
    {
        if (collider.gameObject.tag == "platformManager")
        {
            Debug.Log("!!!!!!!!!");
            gameObject.GetComponent<BoxCollider2D>().enabled = true;
        }
    }
}
Answer 1

Всем спасибо, уже разобрался - при коллизии игрока со сломанной платформой удаляю ее и создаю одну стандартную (так как по задумке на экране должно быть 5 платформ).

public class BrokenPlatform : MonoBehaviour
    {
        [SerializeField] 
        private GameObject defaultPlatformPrefab;
        private void OnCollisionEnter2D(Collision2D collider)
        {
            Rigidbody2D platformRB2d = collider.gameObject.GetComponent<Rigidbody2D>();
            if (platformRB2d.velocity.y <= 0)
            {
                CreateDefaultPlatform(collider);
                Destroy(gameObject);
            }
        }
        private void CreateDefaultPlatform(Collision2D collision)
        {
            Instantiate(defaultPlatformPrefab, 
                new Vector2(
                    Random.Range(-3.75f, 3.75f), 
                    collision.transform.position.y + 3f + Random.Range(-0.25f, 0.25f)), 
                Quaternion.identity);
        }
    }
READ ALSO
Проблема с выборкой только уникальныйх полей и функцией CONCAT

Проблема с выборкой только уникальныйх полей и функцией CONCAT

У меня стоит задача: выбрать из таблицы с актерами всех актеров, которые не имеют однофамильцевЯ делаю это следующим запросом:

108
JQuery AJAX не срабатывает success, в чем проблема?

JQuery AJAX не срабатывает success, в чем проблема?

При клике отправляется объект на сервер, статус==200, но 'success' не срабатываетПодскажите, в чём проблема

139
Как добавить в массив наследуемого класса

Как добавить в массив наследуемого класса

Дано задание "Даны два классаКласс В является наследником класса А

115