[英]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.