Коллайдер запускает стрельбу при старте - PullRequest
0 голосов
/ 23 марта 2019

У меня есть «зона» с четырьмя границами;север, восток, юг и запад.На этих границах у меня есть 2d коллайдеры, например:

enter image description here

Итак, в зоне у меня будет четыре экземпляра для каждой границы,В скрипте для GridBorderController у меня есть это:

 void OnTriggerEnter2D(Collider2D other)
{

    if (other.gameObject.tag == Const.TAG_PLAYER)
    {
        print("enter " + gridBorderSide.ToString());
        /*var pos = new Vector3(20, 20, 0);
        var zoneInstance = Instantiate(this, pos, Quaternion.identity, this.transform);
        var tileMaker = zoneInstance.transform.GetChild(0);
        var terrainDrawer = tileMaker.GetComponent<TerrainDrawer>();
        print(terrainDrawer.sprites.Length);*/
    }

}

Когда я запускаю игру, я создаю экземпляр этой зоны, и это то, что я получаю в своей консоли:

enter image description here

Вот как я запускаю контроллер:

void Start()
{
    boxCollider2D = GetComponent<BoxCollider2D>();
    terrainDrawer = GetComponentInParent<TerrainDrawer>();
    collider = GetComponent<Collider2D>();

    collider.enabled = false;

    var gridRadius = terrainDrawer.gridRadius;
    float borderOffset = borderWidth / 2;



    switch (gridBorderSide)
    {
        case GridBorderSide.North:
        case GridBorderSide.South:
            {
                boxCollider2D.size = new Vector2(gridRadius/2 , borderWidth);
                if(gridBorderSide == GridBorderSide.North)
                {
                    boxCollider2D.transform.position += new Vector3(0, (gridRadius / 4) - (borderOffset));
                }
                else
                {
                    boxCollider2D.transform.position -= new Vector3(0, (gridRadius / 4) - (borderOffset));
                }
                break;
            }
        case GridBorderSide.East:
        case GridBorderSide.West:
        {
                boxCollider2D.size = new Vector2(borderWidth, gridRadius / 2);
                if (gridBorderSide == GridBorderSide.East)
                {
                    boxCollider2D.transform.position += new Vector3((gridRadius / 4) - (borderOffset), 0 );
                }
                else
                {
                    boxCollider2D.transform.position -= new Vector3((gridRadius / 4) - (borderOffset), 0);
                }
                break;
            }
    }

    collider.enabled = true;

}

Когда я прохожу коллайдер с моим плеером, он тоже срабатывает, поэтому я знаю,эта часть работает, но кто-нибудь может объяснить мне, почему триггеры срабатывают сразу при запуске?

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