簡體   English   中英

Raycast 未檢測到對撞機

[英]Raycast not detecting colliders

所以我正在開發一個自上而下的視角小游戲,並想添加一個戰斗系統。 我將它設置為發射光線投射,如果它擊中敵人,他們會受到傷害,但光線投射沒有返回任何東西。

Vector3 mouse_pos = Input.mousePosition;
mouse_pos.z = 5.23f;

Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
mouse_pos.x = mouse_pos.x - objectPos.x
mouse_pos.y = mouse_pos.y - objectPos.y

if (Input.GetMouseButtonDown(0))
{
    Raycast hit;
    print(Physics.Raycast(transform.position, mouse_pos, out hit));
    if (Physics.Raycast(transform.position, mouse_pos, out hit))
    {
        if (hit.collider.gameObject.name.Contains("enemy"))
        {
            hit.collider.gameObject.GetComponent<enemyMovement>().life -= 1;
        }
    }
}

即使那里有游戲對象,打印也會返回 false。 這可能是一個簡單的問題,但我不知道該怎么辦大聲笑。

我給你改了代碼,因為我對ray不是很熟悉,謝謝,希望對你有幫助。

   void update(){
        if (Input.GetMouseButtonDown(0))
      {
        // When the left mouse button is pressed, emit a ray to the screen 
         position where the mouse is located
         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hitInfo;  
       if (Physics.Raycast(ray,out hitInfo))
       {
            // When the ray collides with the object, draw the ray in the scene view
            Debug.DrawLine(ray.origin, hitInfo.point, Color.red);  
        
        if (hitInfo.collider.gameObject.name.Contains("enemy"))
        {
            hitInfo.collider.gameObject.GetComponent<enemyMovement>().life -= 1;
          }
      }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM