子弹并不总是击中敌人

时间:2017-03-11 11:40:27

标签: c# unity3d unity5

void OnCollisionEnter(Collision col){

        if (col.gameObject.name == "Enemy1") {
                    enemyDamage++;

            GameObject clone = (GameObject) Instantiate (tempBloodSplat,enemyObj.position,enemyObj.rotation);
                    Destroy (clone , 0.5f);
            if (enemyDamage > 3) {

                anim.SetFloat ("Die", 0.5f);
                Destroy (enemyObj.gameObject , 5.0f);
            }
            Debug.Log ("Bullet is hitting Enemy");
        }
    }

这是我的代码,我在BulletObject上使用

  1. 我的子弹对象有碰撞器
  2. 我的敌人有一个Collider
  3. 我的敌人有一个刚性的人
  4. 子弹没有Rigidbody
  5. 我有问题,当我射击时,子弹击中了他的范围内的敌人,就像敌人身体下的圆圈,Image

    有时子弹击中正确(意味着敌人受损),但有时子弹移出而不对敌人造成任何伤害,我不知道为什么会发生这种情况。子弹的速度对它有任何影响。

    请帮助或指导我解决此问题,谢谢

1 个答案:

答案 0 :(得分:2)

如果您没有在子弹上使用刚体,那么您可能直接更新子弹位置向量,可能发生的情况如下: enter image description here。由于子弹不是刚性的,因此Unity不会假设'它应该表现得像一个,因此不会对子弹运动进行实际的物理模拟(可能包括从开始位置到结束位置的光线投射以及其间的整理检查)。如果您在子弹中添加刚体有问题,请自行进行光线投射。您甚至可以了解一下统一背后的物理模拟实际上是如何工作的!

祝你好运!