예제 #1
0
    // Use this for initialization
    public void Start()
    {
        this.attackOne.PlaySkillAttack();
        this.attackOne.SetPlayLock(true);

        Attribute attribute = attackOne.GetAttribute();
    }
예제 #2
0
    private void TryAttack()
    {
        for (int i = 0; i < skillObjects.Count; i++)
        {
            SkillObject skillObject = (SkillObject)skillObjects[i];

            Vector2 v = BattleUtils.PositionToGrid(skillObject.transform.position);

            ArrayList gameObjects = BattleControllor.GetGameObjectsByPosition(v);

            for (int j = 0; j < gameObjects.Count; j++)
            {
                Charactor c = (Charactor)gameObjects[j];

                if (c.GetType() != this.attackOne.GetType() && c.IsActive() == true)
                {
                    bool  crit   = BattleControllor.Crit(skillConfig.crit);
                    float damage = BattleControllor.Attack(attackOne.GetAttribute(), c.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

                    c.ChangeHP(damage, crit);

                    if (c.GetAttribute().hp > 0)
                    {
                        c.PlayAttacked();
                    }
                    else
                    {
                        c.PlayDead();
                    }
                }
            }
        }
    }
예제 #3
0
    public void Update()
    {
        if (Constance.SPEC_RUNNING == false && Constance.RUNNING == false)
        {
            return;
        }
        else if (Constance.SPEC_RUNNING == true && this.specSign == false)
        {
            return;
        }


        if (attackOne.IsActive() == false)
        {
            this.end = true;
            return;
        }


        if (this.end == true)
        {
            return;
        }

        if (this.attackOne.IsInAttIndex() == false)
        {
            return;
        }

        bool  crit   = BattleControllor.Crit(skillConfig.crit);
        float damage = BattleControllor.Attack(attackOne.GetAttribute(), attackedOne.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

        attackedOne.ChangeHP(damage, crit);

        if (attackedOne.GetAttribute().hp > 0)
        {
            attackedOne.PlayAttacked();
        }
        else
        {
            attackedOne.PlayDead();
        }


        attackOne.audio.clip = Resources.Load <AudioClip>("Audio/Skill/7");
        if (attackOne.audio.clip != null)
        {
            attackOne.audio.Play();
        }

        end = true;
    }
예제 #4
0
파일: S2004.cs 프로젝트: winneter/BigHero
    public void Start()
    {
        this.attackOne.PlaySkillAttack();
        this.attackOne.SetPlayLock(true);


        Vector2   v         = BattleUtils.PositionToGrid(attackOne.transform.position.x, attackOne.transform.position.y);
        Attribute attribute = attackOne.GetAttribute();
        ArrayList r         = AttRange.GetRangeByAttType(skillConfig.attack_type, skillConfig.range, attribute.volume, v, attackOne.GetDirection());

        this.range = new ArrayList();

        for (int i = 0; i < 20; i++)
        {
            int index = Random.Range(0, r.Count);

            v = (Vector2)r[index];

            if (v.x >= BattleControllor.h || v.x < 0 || v.y >= BattleControllor.v || v.y < 0)
            {
                i--;
                continue;
            }

            if (range.Contains(v))
            {
                continue;
            }

            range.Add(v);
        }

        r = null;

        alertBlocks = new ArrayList();

        for (int i = 0; i < range.Count; i++)
        {
            GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(AlertBlock_pre);
            gameObject.transform.position = BattleUtils.GridToPosition((Vector2)range[i]);

            alertBlocks.Add(gameObject);
        }
    }
예제 #5
0
파일: S2001.cs 프로젝트: winneter/BigHero
    public void Start()
    {
        this.attackOne.PlaySkillAttack();
        this.attackOne.SetPlayLock(true);

        Vector2   v         = BattleUtils.PositionToGrid(attackOne.transform.position.x, attackOne.transform.position.y);
        Attribute attribute = attackOne.GetAttribute();

        range = AttRange.GetRangeByAttType(skillConfig.attack_type, skillConfig.range, attribute.volume, v, attackOne.GetDirection());


        alertBlocks = new ArrayList();

        for (int i = 0; i < range.Count; i++)
        {
            GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(AlertBlock_pre);
            gameObject.transform.position = BattleUtils.GridToPosition((Vector2)range[i]);

            alertBlocks.Add(gameObject);
        }
    }
예제 #6
0
    public PointFlyAttackSkill(Charactor attackOne, SkillConfig skillConfig)
    {
        this.attackOne = attackOne;

        ArrayList points = AttRange.GetRangeByAttType(skillConfig.attack_type, skillConfig.range, attackOne.GetAttribute().volume, attackOne.GetPoint(), attackOne.GetDirection());

        for (int i = 0; i < points.Count; i++)
        {
            ArrayList objects = BattleControllor.GetGameObjectsByPosition((Vector2)points[i]);

            for (int j = 0; j < objects.Count; j++)
            {
                Charactor c = objects[j] as Charactor;

                if (c.GetType() != this.attackOne.GetType() && c.IsActive() == true)
                {
                    this.attackedOne = objects[j] as Charactor;
                    break;
                }
            }
        }

        if (attackedOne == null)
        {
            this.end = true;
            return;
        }

        this.attackTransfrom   = this.attackOne.transform;
        this.attackedTransfrom = this.attackedOne.transform;

        this.skillConfig = skillConfig;

        attackOff   = new Vector3((attackOne.GetAttribute().volume / 2.0f - 0.5f) * Constance.GRID_GAP, (attackOne.GetAttribute().volume / 2.0f - 0.5f) * Constance.GRID_GAP, 0);
        attackedOff = new Vector3((attackedOne.GetAttribute().volume / 2.0f - 0.5f) * Constance.GRID_GAP, (attackedOne.GetAttribute().volume / 2.0f - 0.5f) * Constance.GRID_GAP, 0);
    }
예제 #7
0
    public DirectionFlyAttackSkill(Charactor attackOne, SkillConfig skillConfig)
    {
        this.skillConfig = skillConfig;
        this.singTime    = skillConfig.singTime;

        this.effectId = skillConfig.res;
        this.distance = skillConfig.range * Constance.GRID_GAP;

        this.attackOne       = attackOne;
        this.attackTransfrom = this.attackOne.transform;

        attackOff = new Vector3((attackOne.GetAttribute().volume / 2.0f - 0.5f) * Constance.GRID_GAP, (attackOne.GetAttribute().volume / 2.0f - 0.5f) * Constance.GRID_GAP, 0);

        directions   = new ArrayList();
        skillObjects = new ArrayList();
        alertBlocks  = new ArrayList();

        switch (skillConfig.param1)
        {
        case 0:
            directions.Add(attackOne.GetDirection());
            break;

        case 1:
            directions.Add((MoveDirection)(((int)attackOne.GetDirection() + 5) % 4));
            directions.Add((MoveDirection)(((int)attackOne.GetDirection() + 3) % 4));
            break;

        case 2:
            directions.Add(attackOne.GetDirection());
            directions.Add((MoveDirection)(((int)attackOne.GetDirection() + 2) % 4));
            break;

        case 3:
            directions.Add(attackOne.GetDirection());
            directions.Add((MoveDirection)(((int)attackOne.GetDirection() + 1) % 4));
            directions.Add((MoveDirection)(((int)attackOne.GetDirection() + 2) % 4));
            directions.Add((MoveDirection)(((int)attackOne.GetDirection() + 3) % 4));
            break;

        default:
            directions.Add(attackOne.GetDirection());
            break;
        }
    }
예제 #8
0
    private void PlayHeal(Charactor c)
    {
        GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(SkillObject_pre);

        SkillObject skillObject = gameObject.GetComponent <SkillObject>();

        skillObject.res  = 11;
        skillObject.loop = 1;
        skillObject.spriteAnimation.sortingLayerID = 3;
        skillObject.transform.position             = c.transform.position;
        skillObject.transform.parent = c.transform;

        skillObject.transform.localScale = new Vector2(0.25f, 0.25f);

        skillObject.SetSpec(this.specSign);

        skillObjects.Add(skillObject);

        c.ChangeHP(-((int)attackOne.GetAttribute().atk *skillConfig.demageratio), false);
    }
예제 #9
0
파일: S2004.cs 프로젝트: winneter/BigHero
    public void Update()
    {
        if (Constance.SPEC_RUNNING == false && Constance.RUNNING == false)
        {
            return;
        }
        else if (Constance.SPEC_RUNNING == true && this.specSign == false)
        {
            return;
        }

        if (end == true)
        {
            return;
        }


        singTime -= Time.deltaTime;

        if (singTime > 0)
        {
            return;
        }


        while (alertBlocks.Count > 0)
        {
            GameObject gameObject = alertBlocks[0] as GameObject;
            MonoBehaviour.Destroy(gameObject);

            alertBlocks.RemoveAt(0);
        }



        if (this.attackOne.IsInAttIndex() == true && attacked == false)
        {
            Attribute attribute = attackOne.GetAttribute();

            for (int i = 0; i < range.Count; i++)
            {
                GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(SkillObject_pre);

                SkillObject skillObject = gameObject.GetComponent <SkillObject>();
                skillObject.res  = 8;
                skillObject.loop = 1;
                skillObject.transform.localScale = new Vector3(0.5f, 0.5f, 0);

                skillObject.sound = 2;

                skillObject.transform.position = BattleUtils.GridToPosition((Vector2)range[i]);

                skillObjects.Add(skillObject);

                ArrayList objects = BattleControllor.GetGameObjectsByPosition((Vector2)range[i]);

                for (int j = 0; j < objects.Count; j++)
                {
                    Charactor c = objects[j] as Charactor;

                    if (c.GetType() != this.attackOne.GetType() && c.IsActive() == true)
                    {
                        bool  crit   = BattleControllor.Crit(skillConfig.crit);
                        float damage = BattleControllor.Attack(attackOne.GetAttribute(), c.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

                        c.ChangeHP(damage, crit);


                        if (c.GetAttribute().hp > 0)
                        {
                            c.PlayAttacked();
                        }
                        else
                        {
                            c.PlayDead();
                        }
                    }
                }
            }

            attacked = true;
        }

        if (attacked == false)
        {
            return;
        }

        if (attacked == false)
        {
            return;
        }

        for (int i = 0; i < skillObjects.Count; i++)
        {
            SkillObject skillObject = skillObjects[i] as SkillObject;

            if (skillObject.IsSpritePlayEnd() == true)
            {
                MonoBehaviour.Destroy(skillObject.gameObject);

                skillObjects.Remove(skillObjects);

                end = true;
                this.attackOne.SetPlayLock(false);
            }
        }
    }
예제 #10
0
파일: S2011.cs 프로젝트: winneter/BigHero
 private void PlayHeal(Charactor c)
 {
     c.PlayEffect(1);
     c.ChangeHP(-((int)attackOne.GetAttribute().atk *skillConfig.demageratio), false);
 }
예제 #11
0
파일: S2001.cs 프로젝트: winneter/BigHero
    public void Update()
    {
        if (Constance.SPEC_RUNNING == false && Constance.RUNNING == false)
        {
            return;
        }
        else if (Constance.SPEC_RUNNING == true && this.specSign == false)
        {
            return;
        }


        if (end == true)
        {
            return;
        }

        singTime -= Time.deltaTime;

        if (singTime > 0)
        {
            return;
        }

        while (alertBlocks.Count > 0)
        {
            GameObject gameObject = alertBlocks[0] as GameObject;
            MonoBehaviour.Destroy(gameObject);

            alertBlocks.RemoveAt(0);
        }


        if (this.attackOne.IsInAttIndex() == true && attacked == false)
        {
            Attribute attribute = attackOne.GetAttribute();

            GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(SkillObject_pre);

            skillObject      = gameObject.GetComponent <SkillObject>();
            skillObject.res  = 6;
            skillObject.loop = 1;
            skillObject.spriteAnimation.renderer.sortingLayerID = 3;
            skillObject.transform.position = attackOne.transform.localPosition;
            skillObject.sound = 5;

            skillObject.transform.localScale = new Vector2(skillConfig.range / 16f, attribute.volume / 4f);

            switch (attackOne.GetDirection())
            {
            case MoveDirection.DOWN:
                skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 270));
                skillObject.transform.position += new Vector3(0, -0.2f, 0);
                break;

            case MoveDirection.UP:
                skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 90));
                skillObject.transform.position += new Vector3(0, 0.2f, 0);
                break;

            case MoveDirection.LEFT:
                skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 180));
                skillObject.transform.position += new Vector3(-0.2f, 0.2f, 0);
                break;

            case MoveDirection.RIGHT:
                skillObject.transform.position += new Vector3(0.2f, 0.2f, 0);
                break;
            }


            for (int i = 0; i < range.Count; i++)
            {
                ArrayList objects = BattleControllor.GetGameObjectsByPosition((Vector2)range[i]);

                for (int j = 0; j < objects.Count; j++)
                {
                    Charactor c = objects[j] as Charactor;

                    if (c.GetType() != this.attackOne.GetType() && c.IsActive() == true)
                    {
                        bool  crit   = BattleControllor.Crit(skillConfig.crit);
                        float damage = BattleControllor.Attack(attackOne.GetAttribute(), c.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

                        c.ChangeHP(damage, crit);

                        if (c.GetAttribute().hp > 0)
                        {
                            c.PlayAttacked();
                        }
                        else
                        {
                            c.PlayDead();
                        }
                    }
                }
            }

            attacked = true;
        }

        if (attacked == false)
        {
            return;
        }


        if (skillObject.IsSpritePlayEnd() == true)
        {
            MonoBehaviour.Destroy(skillObject.gameObject);
            this.attackOne.SetPlayLock(false);
            end = true;
        }
    }
예제 #12
0
    public void Update()
    {
        if (Constance.SPEC_RUNNING == false && Constance.RUNNING == false)
        {
            return;
        }
        else if (Constance.SPEC_RUNNING == true && this.specSign == false)
        {
            return;
        }

        if (this.end == true)
        {
            return;
        }

        singTime -= Time.deltaTime;

        if (singTime > 0)
        {
            return;
        }



        while (alertBlocks.Count > 0)
        {
            GameObject gameObject = alertBlocks[0] as GameObject;
            MonoBehaviour.Destroy(gameObject);

            alertBlocks.RemoveAt(0);
        }



        if (attackOne.IsInAttIndex() == true && attacked == false)
        {
            Attribute attribute = attackOne.GetAttribute();
            beginPosition = attackOne.transform.position + attackOff;


            for (int i = 0; i < directions.Count; i++)
            {
                MoveDirection dirction = (MoveDirection)directions[i];

                GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(SkillObject_pre);
                gameObject.transform.localScale = new Vector3(attribute.volume / 4f, attribute.volume / 4f, 0);

                SkillObject skillObject = gameObject.GetComponent <SkillObject>();
                skillObject.res = this.skillConfig.res;
                if (this.specSign == true)
                {
                    skillObject.spriteAnimation.renderer.sortingLayerID = 7;
                }
                else
                {
                    skillObject.spriteAnimation.renderer.sortingLayerID = 1;
                }

                skillObject.transform.position = attackOne.transform.position + attackOff;

                switch (dirction)
                {
                case MoveDirection.DOWN:
                    skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 270));
                    break;

                case MoveDirection.UP:
                    skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 90));
                    break;

                case MoveDirection.LEFT:
                    skillObject.SetSpriteOff(new Vector2(0, 0.15f));
                    skillObject.gameObject.transform.localScale += new Vector3(-skillObject.gameObject.transform.localScale.x * 2, 0, 0);
                    break;

                case MoveDirection.RIGHT:
                    skillObject.SetSpriteOff(new Vector2(0, 0.15f));
                    break;
                }

                skillObjects.Add(skillObject);
            }

            attacked = true;
        }

        if (attacked == false)
        {
            return;
        }


        for (int i = 0; i < skillObjects.Count; i++)
        {
            SkillObject   skillObject = (SkillObject)skillObjects[i];
            MoveDirection direction   = (MoveDirection)directions[i];

            if (skillObject == null)
            {
                continue;
            }

            if (Vector3.Distance(beginPosition, skillObject.transform.position) > distance)
            {
                MonoBehaviour.Destroy(skillObject.gameObject);
                skillObjects[i] = null;
                continue;
            }


            float d1 = Time.deltaTime * speed;

            Vector3 newPosition = Vector3.zero;

            switch (direction)
            {
            case MoveDirection.DOWN:
                newPosition = skillObject.transform.position + new Vector3(0, -d1, 0);
                break;

            case MoveDirection.UP:
                newPosition = skillObject.transform.position + new Vector3(0, d1, 0);
                break;

            case MoveDirection.LEFT:
                newPosition = skillObject.transform.position + new Vector3(-d1, 0, 0);
                break;

            case MoveDirection.RIGHT:
                newPosition = skillObject.transform.position + new Vector3(d1, 0, 0);
                break;
            }

            bool inNewGrid = false;

            if (BattleUtils.PositionToGrid(newPosition) != BattleUtils.PositionToGrid(skillObject.transform.position))
            {
                //in diffrenet grid
                inNewGrid = true;
            }

            skillObject.transform.position = newPosition;

            if (inNewGrid == false)
            {
                continue;
            }


            //Try attack
            Vector2 v = BattleUtils.PositionToGrid(skillObject.transform.position);

            ArrayList objects     = BattleControllor.GetGameObjectsByPosition(v);
            Charactor attackedOne = null;

            for (int j = 0; j < objects.Count; j++)
            {
                Charactor c = objects[j] as Charactor;

                if (c.GetType() != this.attackOne.GetType() && c.IsActive() == true)
                {
                    attackedOne = c;
                    break;
                }
            }


            if (attackedOne != null)
            {
                bool  crit   = BattleControllor.Crit(skillConfig.crit);
                float damage = BattleControllor.Attack(attackOne.GetAttribute(), attackedOne.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

                attackedOne.ChangeHP(damage, crit);

                if (attackedOne.GetAttribute().hp > 0)
                {
                    attackedOne.PlayAttacked();
                }
                else
                {
                    attackedOne.PlayDead();
                }

                return;
            }
        }


        for (int i = 0; i < skillObjects.Count; i++)
        {
            if (skillObjects[i] != null)
            {
                return;
            }
        }

        end = true;
    }
예제 #13
0
    public void Update()
    {
        if (Constance.SPEC_RUNNING == false && Constance.RUNNING == false)
        {
            return;
        }
        else if (Constance.SPEC_RUNNING == true && this.specSign == false)
        {
            return;
        }

        if (end == true)
        {
            return;
        }


        if (this.attackOne.IsInAttIndex() == true && attacked == false)
        {
            Vector2 v = BattleUtils.PositionToGrid(attackOne.transform.position.x, attackOne.transform.position.y);

            Attribute attribute = attackOne.GetAttribute();

            MoveDirection direction = attackOne.GetDirection();

            ArrayList range = AttRange.GetRangeByAttType(skillConfig.attack_type, skillConfig.range, attribute.volume, v, direction);

            GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(SkillObject_pre);

            skillObject      = gameObject.GetComponent <SkillObject>();
            skillObject.res  = this.skillConfig.res;
            skillObject.loop = 1;

            skillObject.transform.position = attackOne.transform.position;

            switch (direction)
            {
            case MoveDirection.DOWN:
                skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 270));
                break;

            case MoveDirection.UP:
                skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 90));
                break;

            case MoveDirection.LEFT:
                skillObject.SetSpriteEulerAngles(new Vector3(0, 0, 180));
                break;

            case MoveDirection.RIGHT:
                break;
            }


            for (int i = 0; i < range.Count; i++)
            {
                ArrayList objects = BattleControllor.GetGameObjectsByPosition((Vector2)range[i]);

                for (int j = 0; j < objects.Count; j++)
                {
                    Charactor c = objects[j] as Charactor;

                    if (c.GetType() != this.attackOne.GetType() && c.IsActive() == true)
                    {
                        bool  crit   = BattleControllor.Crit(skillConfig.crit);
                        float damage = BattleControllor.Attack(attackOne.GetAttribute(), c.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

                        c.ChangeHP(damage, crit);

                        if (c.GetAttribute().hp > 0)
                        {
                            c.PlayAttacked();
                        }
                        else
                        {
                            c.PlayDead();
                        }
                    }
                }
            }

            attacked = true;
        }

        if (attacked == false)
        {
            return;
        }



        if (skillObject.IsSpritePlayEnd() == true)
        {
            MonoBehaviour.Destroy(skillObject.gameObject);

            end = true;
        }
    }
예제 #14
0
    public void Update()
    {
        if (Constance.SPEC_RUNNING == false && Constance.RUNNING == false)
        {
            return;
        }
        else if (Constance.SPEC_RUNNING == true && this.specSign == false)
        {
            return;
        }


        if (this.end == true)
        {
            return;
        }


        if (attackedOne.IsActive() == true)
        {
            targetPoint = attackedTransfrom.position + attackedOff;
        }

        if (skillObject == null && this.attackOne.IsInAttIndex())
        {
            if (attackOne.IsActive() == false)
            {
                end = true;
                return;
            }

            GameObject gameObject = (GameObject)MonoBehaviour.Instantiate(SkillObject_pre);

            skillObject = gameObject.GetComponent <SkillObject>();
            skillObject.spriteAnimation.renderer.sortingLayerID = 3;
            skillObject.res = skillConfig.res;
            skillObject.transform.position = attackOne.transform.position + attackOff;

            skillTransfrom = skillObject.transform;

            skillTransfrom.eulerAngles = new Vector3(0, 0, GetAngle());
        }

        if (skillObject == null)
        {
            return;
        }

        float d1 = Time.deltaTime * speed;
        float d2 = Vector3.Distance(skillTransfrom.position, targetPoint);


        if (d1 > d2)
        {
            MonoBehaviour.Destroy(this.skillObject.gameObject);
            this.end = true;

            bool  crit   = BattleControllor.Crit(skillConfig.crit);
            float damage = BattleControllor.Attack(attackOne.GetAttribute(), attackedOne.GetAttribute(), skillConfig.demageratio, skillConfig.b, crit);

            attackedOne.ChangeHP(damage, crit);

//			if(skillConfig.sound2 != 0){
//				AudioClip ac = Resources.Load<AudioClip>("Audio/Skill/" + skillConfig.sound2);
//				attackedOne.audio.clip = ac;
//				attackedOne.audio.Play();
//			}

            if (attackedOne.GetAttribute().hp > 0)
            {
                attackedOne.PlayAttacked();
            }
            else
            {
                attackedOne.PlayDead();
            }

            return;
        }

        skillTransfrom.eulerAngles = new Vector3(0, 0, GetAngle());
        skillTransfrom.position    = Vector3.MoveTowards(skillTransfrom.position, targetPoint, d1);
    }