我实际上是在尝试制作一个统一的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/