簡體   English   中英

Unity 讓一個 object 通過另一個 object 但仍然觸發碰撞

[英]Unity getting an object to pass through another object but still trigger collision

基本上我需要一個 object 能夠像它是一個觸發器一樣通過一個 object ,但由於我讓擊中敵人工作的方式(或一種讓physics2d.overlapboxall 檢測觸發器的方式)仍然將它檢測為colision ),這是我的武器攻擊代碼和我需要穿過玩家但也會對玩家造成傷害的敵人。

 if (AttackDelay <= 0)
            { //attacking
                Collider2D[] EnemiesToDmg = Physics2D.OverlapBoxAll(AttackPos.position,new Vector2(AttackRangeX,AttackRangeY),0, WhatIsEnemy);
                for (int i = 0; i < EnemiesToDmg.Length; i++)
                {EnemiesToDmg[i].GetComponent<Health>().takeDamage(AttackDamage);}

並為敵人



    void FixedUpdate()
    {


        RotateAndMove(target2);
        if (AttackRecharge<=AttackRechargeMax)
        {
            AttackRecharge += Time.deltaTime;
        }


    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.gameObject.layer==10)
        {
            player.gameObject.GetComponent<Health>().takeDamage(20);
        }
        if(collision.gameObject.transform==target2)
        {


           if (!IsVisible)
            {
                 target2.position = player.position + (player.position - transform.position) / 5;
            }
           else
            {
                TeleportToCamera(target2);
            }

        }


    }

正如評論中提到的,這正是isTrigger的用途。
您可以像這樣在代碼中更改它:

Collider.isTrigger = true;

或在帶有此復選框的編輯器中:
在此處輸入圖像描述

這將允許您使用諸如OnTriggerEnter類的代碼,並使您的游戲 object 能夠通過

暫無
暫無

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

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