Делаю аналог 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;
}
}
}
Всем спасибо, уже разобрался - при коллизии игрока со сломанной платформой удаляю ее и создаю одну стандартную (так как по задумке на экране должно быть 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);
}
}
Продвижение своими сайтами как стратегия роста и независимости