2d ошибка стрельбы единства - PullRequest
0 голосов
/ 04 ноября 2018

Я на самом деле пытаюсь сделать своего рода 2d игру с единством, в этой игре мы управляем персонажем, который может стрелять пулями из оружия. На самом деле это «Узи», поэтому он стреляет очень быстро и сильно, (так что, из ружья) проблема в том, что иногда, в зависимости от расстояния до противника, пули проходят через ящичный коллайдер противника, и так что не трогай это. Я думаю, что это связано с единой системой обновлений / исправлений, но я не уверен. и Пули уже находятся в состоянии обнаружения столкновений. Там есть часть кода и скриншоты.

 void OnTriggerEnter2D(Collider2D target)
{
    if (target.gameObject.tag == "FirePoint")
    {
        Fire();
    }

    if (target.gameObject.tag == "Building")
    {
        Destroy(gameObject);
        //print("Don't shoot on the walls !");
    }

    Ennemy enemy = target.GetComponent<Ennemy>();
    if (target.gameObject.tag == "Ennemi")
    {
        enemy.TakeDamage(damage);
        Destroy(gameObject);

    }

}



void Fire()
{
    GetComponent<Rigidbody2D>().AddForce(transform.right * bulletForce);
}

и есть метод для стрельбы, в другом сценарии.

public void Shoot()
{
    DispersionDesBalles();
    nextFire = Time.time + 1f / fireRate;
    Instantiate(Balle, spawnPoint.position, fireRotation);

    ballesRestantes--;
}

и скриншоты с ошибкой Здесь

Красный прямоугольник - это враги, а маленькие зеленые вещи - пули, не обращайте внимания на графику: D, Это просто для тестирования. Это довольно раздражает, потому что в игре пули меньше разнесены, но это равносильно тому же.

Я надеюсь, что кто-то может мне помочь. хорошего дня!

1 Ответ

0 голосов
/ 04 ноября 2018

Да, это как-то связано с частотой обновления физического движка, которая не синхронизирована с рендерингом. В случае небольших и быстрых коллайдеров у вас будут такие проблемы. Есть разные способы справиться с этим, но проще всего будет увеличить размер коллайдера, чтобы убедиться, что он не проходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...