HFlip() публичный Метод

public HFlip ( ) : void
Результат void
Пример #1
0
    public void InitArmyInfo(ArmyInfo ai)
    {
        armyInfo          = ai;
        armyInfo.armyCtrl = GetComponent <ArmyController>();

        SetArmyKingFlag();

        if (armyInfo.cityTo != -1)
        {
            if (pathfinding == null)
            {
                pathfinding = GameObject.FindWithTag("Pathfinding").GetComponent <MyPathfinding>();
            }
            SetRoute(pathfinding.GetRoute(armyInfo.pos, armyInfo.cityTo));
        }

        state    = (ArmyState)armyInfo.state;
        timeTick = armyInfo.timeTick;

        if (state == ArmyState.Garrison)
        {
            exSprite          moveSprite = GetComponent <exSprite>();
            exSpriteAnimation moveAnim   = GetComponent <exSpriteAnimation>();
            moveAnim.Stop();

            int frame = armyInfo.direction;
            if (frame == -1)
            {
                frame = 0;
            }
            moveAnim.SetFrame("ArmyGarrison", frame);

            Vector3 pos = flagPos[3 + frame];
            if (!armyInfo.isFlipped)
            {
                pos.x = -pos.x;
            }
            else
            {
                isHFlipped = true;
                moveSprite.HFlip();

                exSprite    flagSprite = flagCtrl.GetComponent <exSprite>();
                BoxCollider flagCol    = flagCtrl.GetComponent <BoxCollider>();
                flagSprite.HFlip();
                flagCol.center = new Vector3(-flagCol.center.x, flagCol.center.y, flagCol.center.z);
            }

            flagCtrl.localPosition = pos;
        }
        else
        {
            CalcDirection();
        }
    }
Пример #2
0
    void CalcDirection()
    {
        if (route == null || route.Count == 0)
        {
            return;
        }

        Vector3 target    = route[0];
        Vector3 targetDir = target - transform.position;
        Vector3 forward   = Vector3.right;
        float   angle     = Vector3.Angle(targetDir, forward);
        int     flag      = 0;

        if (angle <= 30)
        {
            flag = 0;
        }
        else if (angle > 150)
        {
            flag = 1;
        }
        else if (angle > 30 && angle <= 90)
        {
            if (target.y >= transform.position.y)
            {
                flag = 2;
            }
            else
            {
                flag = 4;
            }
        }
        else if (angle > 90 && angle <= 150)
        {
            if (target.y > transform.position.y)
            {
                flag = 3;
            }
            else
            {
                flag = 5;
            }
        }

        exSprite          moveSprite = GetComponent <exSprite>();
        exSpriteAnimation moveAnim   = GetComponent <exSpriteAnimation>();
        exSprite          flagSprite = flagCtrl.GetComponent <exSprite>();
        BoxCollider       flagCol    = flagCtrl.GetComponent <BoxCollider>();

        if (flag % 2 == 0)
        {
            if (!isHFlipped)
            {
                isHFlipped = true;
                moveSprite.HFlip();
                flagSprite.HFlip();
                flagCol.center = new Vector3(-flagCol.center.x, flagCol.center.y, flagCol.center.z);
            }
        }
        else
        {
            if (isHFlipped)
            {
                isHFlipped = false;
                moveSprite.HFlip();
                flagSprite.HFlip();
                flagCol.center = new Vector3(-flagCol.center.x, flagCol.center.y, flagCol.center.z);
            }
        }

        Vector3 pos = Vector3.zero;

        flag /= 2;

        switch (state)
        {
        case ArmyState.Running:
            animName = animNames[flag];
            pos      = flagPos[flag];
            break;

        case ArmyState.Escape:
            animName = animNames[flag + 3];
            pos      = flagPos[flag + 6];
            break;

        case ArmyState.Victory:
            animName = animNames[flag + 6];
            pos      = flagPos[flag * 3 + 9];
            break;
        }

        if (!moveAnim.IsPlaying(animName))
        {
            moveAnim.Play(animName);
        }

        if (!isHFlipped)
        {
            pos.x = -pos.x;
        }
        flagCtrl.localPosition = pos;
    }