Unity заставляет объект проходить через другой объект, но все же вызывает столкновение - PullRequest
0 голосов
/ 17 апреля 2020

В основном мне нужен объект, чтобы иметь возможность проходить сквозь объект точно так же, как если бы он был триггером, но все равно определять его как столкновение, потому что я сделал удар по врагам действующим (или способ получить phys22.overlapboxall чтобы обнаружить триггеры), вот код для атаки моего оружия и врага, который мне нужно пройти через игрока, но также нанести урон игроку.

 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);
            }

        }


    }

1 Ответ

0 голосов
/ 17 апреля 2020

Как уже упоминалось в комментариях, это именно то, для чего isTrigger.
Вы можете изменить это в коде следующим образом:

Collider.isTrigger = true;

Или в редакторе с этот флажок:
enter image description here

Это позволит вам использовать код, такой как OnTriggerEnter, и позволит вашему игровому объекту проходить через

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...