我实际上是在尝试制作一个统一的2D游戏,在这个游戏中,我们控制一个可以用武器射击子弹的角色。实际上是“ Uzi”,因此射击非常快而且很困难(所以是枪),问题在于,有时,取决于与敌人的距离,子弹会穿过敌人的盒子对撞机,并且
所以不要碰它。我认为这与统一的Update / Fixed更新系统有关,但我不确定。并且子弹已经在碰撞检测“连续”中。有一部分代码和屏幕截图。

 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--;
}


和错误Here的屏幕截图

红色矩形代表敌人,绿色的一点是子弹,不要关注图形:D,只是用于测试。这很烦人,因为在游戏中,子弹的间距较小,但相当于一样。

我希望有一个人可以帮助我。祝你今天愉快 !

最佳答案

是的,这与物理引擎刷新率有关,刷新率与渲染不同步。如果是小型快速对撞机,您会遇到类似这样的问题。有不同的处理方法,但是最简单的方法是增加子弹对撞机的尺寸,以确保它不会通过低谷。

关于c# - 2d Unity射击错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53139921/

10-13 09:46