Raycast无法检测到对撞机

问题描述 投票:1回答:1

我的子弹无法检测到对撞机,而光线投射无法检测到碰撞。这很奇怪,因为在我的地形范围内(无论是在上面还是在上面)拍摄子弹时,在控制台上获取信息的唯一方法是,我立即在我的控制台上打印“Terrain”,但是光线投射无法检测到任何其他对象和打印任何东西,如果我走出范围并射击球体,则不会打印任何内容。除了子弹之外,我游戏中的所有东西都有一个对撞机。

谢谢!

这是我的游戏game的图像。

void Update () {
    if (Input.GetKey(KeyCode.KeypadEnter) && counter > delayTime)
    {
        Instantiate(bullet, transform.position, transform.rotation);
        counter = 0;
        RaycastHit hit;

         if (Physics.Raycast(transform.position, -Vector3.up, out hit))
        {
               Debug.Log(hit.collider.gameObject.name); 
        }
    }

    counter += Time.deltaTime;
}
c# unity3d raycasting
1个回答
0
投票

在子弹预制件中添加一个碰撞器。你应该在你的敌人或其他可破坏的物体上有标签。使用OnCollisionEnter或OnTriggerEnter。对于敌人,我更喜欢在大多数情况下使用OnCollisionEnter。

 void OnCollisionEnter(Collision collision){//Assuming bullet touches enemy

   if(collision.tag=="Bullet"){

    // insert your code here for damage
  }
  }

至于你的RayCast,我会做这样的事情:

   Vector3 fwd = transform.TransformDirection(Vector3.forward) * 3; // length of ray 
   //forward-facing. ( * 3 is equal to 3 units/Meters )
    Debug.DrawRay(transform.position, fwd, Color.red); // Can Make any color 

        if (Physics.Raycast(transform.position, fwd, out hit))
        {


            print(hit.collider.gameObject.name);

        }

看,我使用碰撞检测的原因是,只要您的敌人被标记,您就会联系。否则,你的光线投射应检测到接触,你仍然可以设置碰撞伤害或其他任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.