Unity удаляет физические эффекты столкновения, но также проверяет, есть ли столкновение - PullRequest
0 голосов
/ 06 декабря 2018

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

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.name == "Despawner")
    {
        Destroy(this.gameObject);
    }
    if (collision.gameObject.name == "Char")
    {
        Destroy(this.gameObject);
        ScoreHandler.coinsCollected++;
    }
}

По сути, я хочу, чтобы монета сталкивалась с игроком, я хочу, чтобы монета была удалена, но также удаляю физические эффекты изстолкновение, так что, если я прыгаю на монету снизу, мой персонаж не упадет на землю, он просто перебирает ее и удаляет, как если бы он ее забрал.

Я также пыталсяизменив OnCollisionEnter2D на OnTriggerEnter2D, но он не заработал.

Редактировать: я изменил на OnTriggerEnter2D с OnCollisionEnter2D.теперь персонаж проходит сквозь монеты, но не поднимает их, как, например, если столкновений нет вообще, также проверял IsTrigger в редакторе для GameObject.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Мне пришлось использовать триггер вместо столкновения, и это сработало.

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.name == "Despawner")
    {
        Destroy(this.gameObject);
    }
    if (collision.gameObject.name == "Char")
    {
        Destroy(this.gameObject);
        ScoreHandler.coinsCollected++;
    }
}
0 голосов
/ 06 декабря 2018

Вы должны быть в состоянии обнаружить столкновение и игнорировать его.Я делаю нечто подобное со снарядами, которые иногда перекрываются и отскакивают друг от друга.

private void OnCollisionEnter2D(Collision2D collision) // or OnCollisionStay2D
{
    Physics2D.IgnoreCollision (this.gameObject.GetComponent<Collider2D> (), collision.gameObject.GetComponent<Collider2D> ());
    Destroy(this.gameObject);
    ScoreHandler.coinsCollected++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...