簡體   English   中英

Physics2D.Raycast沒有找到任何東西

[英]Physics2D.Raycast doesn't find anything

我正在為我的敵人計算一個視錐,如果玩家在其中,我會嘗試用Physics2D.Raycast檢查它們之間是否有對撞機,以確保敵人不會通過牆壁看到玩家。

無法透視的牆壁來自網格,並附有網格對撞機 - 請參閱此圖片 它們也在一個特定的層上,我試圖限制我的Raycast。

我的代碼很簡單。 如果敵人面對玩家,並且玩家足夠近,則發射光線投射。

if (distanceToPlayer < viewDistance && dirToPlayer == dir) {
    // player is in cone, check for collision
    LayerMask lm = LayerMask.NameToLayer ("WallCollisions");

    RaycastHit2D hit1 = Physics2D.Raycast(transform.position, (player.transform.position - transform.position).normalized, 1000, lm.value );
    RaycastHit2D hit2 = Physics2D.Linecast (transform.position, player.transform.position); 

    return true;
}

當在break語句上打破以檢查命中時,它總是如下所示:

{UnityEngine.RaycastHit2D}
centroid: {(0.0, 0.0)}
collider: (null)
distance: 0
fraction: 0
normal: {(0.0, 0.0)}
point: {(0.0, 0.0)}
rigidbody: (null)
transform: (null)
Non-public members:

這意味着什么都沒找到。

此外,請注意,在pic中,防護裝置被網格包圍,這意味着無論方向如何,都應該在指定的距離內進行擊打。

我已經看到很多人對他們的LayerMasks進行字節轉換,但是模仿它們並沒有幫助,坦率地說我不明白它是怎么回事。

現在已經解決了。 為了將來的幫助,網格對撞機是3D,所以Physics2D光線投射將找不到它。 使用多邊形對撞機解決了一切。

暫無
暫無

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

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