Как определить, какой коллайдер с одинаковым тегом касается моего персонажа в первую очередь, когда несколько коллайдеров касаются моего персонажа одновременно - PullRequest
2 голосов
/ 02 июля 2019

Я пытаюсь выяснить, какой коллайдер с одинаковым тегом касается моего персонажа в первую очередь, когда несколько коллайдеров касаются моего персонажа одновременно.

if (col.transform.gameObject.tag == "enemy") {
            hit = true;
            rgd.AddForce(new Vector2(0, 2.150f), ForceMode2D.Impulse);
            if (transform.position.x-col.transform.gameObject.transform.position.x < 0)
            {
                rgd.AddForce(-1*rgd.transform.right * 40);
            }
            else
            {
                rgd.AddForce(1*rgd.transform.right * 40);
            }

            if (Mathf.Approximately (angle, 0)) {
                Destroy (col.transform.gameObject);
                damage = 0;
            } else {
                damage = 25;
            }
            enemydamageSound.Play();
        }

1 Ответ

1 голос
/ 02 июля 2019

Я решил это, добавив несколько кодов. Вот мой новый код:

private int jumpCount = 0;

if (col.transform.gameObject.tag == "ground")
        {
            isGround = true;
            jumpped = true;
            jumpCount = 0;
        }

if (col.transform.gameObject.tag == "enemy")
    {
        hit = true;
        if (!isGround && jumpCount == 0)
        {
            rgd.AddForce(new Vector2(0, 2.150f), ForceMode2D.Impulse);
            jumpCount++;
        }
        if (transform.position.x - col.transform.gameObject.transform.position.x < 0)
        {
            if (jumpCount == 0)
            {
                rgd.AddForce(new Vector2(0, 2f), ForceMode2D.Impulse);
            }
            rgd.AddForce(-1 * rgd.transform.right * 40);
        }
        else
        {
            if (jumpCount == 0)
            {
                rgd.AddForce(new Vector2(0, 2f), ForceMode2D.Impulse);
            }
            rgd.AddForce(1 * rgd.transform.right * 40);
        }

        if (Mathf.Approximately(angle, 0))
        {
            Destroy(col.transform.gameObject);
            damage = 0;
        }
        else
        {
            damage = 25;
        }
        enemydamageSound.Play();
    }
...