Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子弹并不总是击中敌人_C#_Unity3d_Unity5 - Fatal编程技术网

C# 子弹并不总是击中敌人

C# 子弹并不总是击中敌人,c#,unity3d,unity5,C#,Unity3d,Unity5,这是我的代码,我用在BulletObject上 我的子弹物体有对撞机 我的敌人有一台对撞机 我的敌人身体僵硬 子弹没有刚体 我有一个问题,当我射击时,子弹击中了敌人射程内的目标,就像敌人身体下面的圆圈一样 有时子弹命中正确(意味着敌人受到了伤害),但有时子弹没有对敌人造成任何伤害,我不知道为什么会发生这种情况。子弹的速度对它有影响吗 请帮助或指导我解决此问题,谢谢如果您没有在项目符号上使用刚体,那么您可能正在直接更新项目符号位置向量,可能会发生以下情况: . 由于子弹不是刚体,Unity不会“假

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

  • 我的子弹物体有对撞机
  • 我的敌人有一台对撞机
  • 我的敌人身体僵硬
  • 子弹没有刚体
  • 我有一个问题,当我射击时,子弹击中了敌人射程内的目标,就像敌人身体下面的圆圈一样


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


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

    如果您没有在项目符号上使用刚体,那么您可能正在直接更新项目符号位置向量,可能会发生以下情况: . 由于子弹不是刚体,Unity不会“假设”它的行为应该像刚体一样,因此不会对子弹的运动进行实际的物理模拟(这可能包括从起始位置到结束位置的光线投射,以及在两者之间的碰撞检查)。如果在为项目符号添加刚体时遇到问题,请自己进行光线投射。你甚至会学到unity背后的物理模拟是如何工作的


    祝你好运

    “子弹的速度对它有影响吗”?是的,它已尝试更改为连续碰撞检测。你们总是可以问自己,子弹是否真的对玩家可见。如果没有,请尝试执行光线投射,而不是移动实际对象。记住,电子游戏都是关于烟雾和镜子的。顺便说一句,如果unity中的物体(子弹)在移动,你应该加上刚体。@Logman-子弹沿着光线投射路径,最后击中敌人,如果我减慢子弹的速度,那么也可以。这不是对敌人造成伤害,如果我加上刚体,碰撞仍然无法检测到敌人。这个问题是确定的吗?如果是,您可以逐帧调试(播放旁边的按钮)。很难说是什么错了,但问题可能在于你们移动了子弹或你们射击的物体。您是否将刚体(子弹和敌人)上的碰撞检测更改为“连续”并尝试“连续动态”。
    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");
            }
        }