Physics2D.Linecast的使用注意事項

今天做2D遊戲使用了Physics2D.Linecast函數,爲了使物體不會撞進牆。

RaycastHit2D hit = Physics2D.Linecast(targetPosition, targetPosition + new Vector2(x, y));
x,y值不是1就是-1,因爲使用這個函數的腳本所在的物體本身也使用了BoxCollider2D

所以在檢測的時候把自己也給檢測了,所以加了排除語句:

 if (hit.collider.tag == "Food" || hit.collider.tag == "Soda" || hit.collider.tag == "Enemy")
                {
                    targetPosition += new Vector2(x, y);
                }

然後發現還是會撞進牆內,後來按照視頻在檢測的時候把自身的Collider禁用了。

檢測後再續用:

 collider.enabled = false;
            RaycastHit2D hit = Physics2D.Linecast(targetPosition, targetPosition + new Vector2(x, y));
            collider.enabled = true;
發現就不會有問題了,這裏我猜測是linecast函數一旦檢測到第一個碰撞體之後就會停止檢測。

所以把自身檢測進去之後就不會檢測牆了。估計Physics.Raycast函數也有此性質,這裏要注意一下。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章