예제 #1
0
    public void MeeleAttack(CharacterPlayer atk, CharacterPlayer def, int playerId, int indexState, int health, bool isnormalAtk, NewSkill useSkill)
    {
        Debug.Log("melee atack");
        //skeletonAnimation.AnimationName = moveAnimation;
        skeletonAnimator.Skeleton.FlipX = false;
        Vector3 oldPos = this.transform.position;
        float   newPosX;

        if (transform.position.x < def.transform.position.x)
        {
            newPosX = def.transform.position.x - def.GetComponent <BoxCollider2D>().bounds.size.x;
        }
        else
        {
            newPosX = def.transform.position.x + def.GetComponent <BoxCollider2D>().bounds.size.x;
        }
        if (CharacterManager.Instance._meCharacter == atk)
        {
            BattleSceneUI.Instance._effectParentMe.transform.DOMoveX(newPosX, 0.1f);
        }
        if (CharacterManager.Instance._enemyCharacter == atk)
        {
            BattleSceneUI.Instance._effectParentEnemy.transform.DOMoveX(newPosX, 0.1f);
        }
        transform.DOMoveX(newPosX, 0.1f).OnComplete(() => AttackandBack(atk, def, oldPos, playerId, indexState, health, isnormalAtk, useSkill));
    }
    private void PlayerClickedAnObject(GameObject clickedGameObject)
    {
        // Sanity check.
        if (clickedGameObject == null)
        {
            return;
        }

        // Check if object is on a Character.
        Character character = clickedGameObject.GetComponentInChildren <Character>();

        if (character == null)
        {
            character = clickedGameObject.GetComponentInParent <Character>();
        }
        if (character != null)
        {
            // Debug.Log( "Player clicked on a Character: " +character.name );

            // What to do when a player has clicked on a character (NOTE: Could be self!)

            // Check if it was an enemy that was clicked on.
            CharacterEnemy enemy = character as CharacterEnemy;
            if (enemy != null)
            {
                Debug.Log("Player clicked on an Enemy: " + enemy.name);
            }

            return;
        }

        // Check if object is on an Item.
        Item item = clickedGameObject.GetComponentInChildren <Item>();

        if (item == null)
        {
            item = clickedGameObject.GetComponentInParent <Item>();
        }
        if (item != null)
        {
            Debug.Log("Player clicked on an item: " + item.itemName);

            // Direct the player to head to the clicked item.
            CharacterPlayer player = GameManager.GetPlayer();
            if (player != null)
            {
                PlayerControllerARPG controller = player.GetComponent <PlayerControllerARPG>();
                if (controller != null)
                {
                    controller.SetNavMeshAgentDestination(item.transform.position);
                }
            }

            return;
        }

        Debug.Log("Player clicked on an object: " + clickedGameObject.name);
    }
예제 #3
0
    public IEnumerator ExecuteDonothing(CharacterPlayer meCharacter, CharacterPlayer enemyCharacter, int playerId, int indexState, int health, NewSkill useSkill)
    {
        yield return(new WaitForSeconds(0.5f));

        if (meCharacter != enemyCharacter)
        {
            if (meCharacter.playerId == playerId)
            {
                if (useSkill != null)
                {
                    GameObject effSkill = EffectManager.Instance.CreateEffect("Effect/" + useSkill.data["prefEffect"].Value.ToString(), this.transform);
                    if (useSkill.data["typeDisplayEffect"].Value == "me")
                    {
                        effSkill.transform.position = new Vector3(meCharacter.transform.position.x, meCharacter.transform.position.y + effSkill.GetComponent <BoxCollider2D>().size.y / 2, meCharacter.transform.position.z);
                    }
                    else if (useSkill.data["typeDisplayEffect"].Value == "enemy")
                    {
                        effSkill.transform.position   = new Vector3(enemyCharacter.transform.position.x, enemyCharacter.transform.position.y + effSkill.GetComponent <BoxCollider2D>().size.y / 2, enemyCharacter.transform.position.z);
                        effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                    }
                    else if (useSkill.data["typeDisplayEffect"].Value == "move")
                    {
                        effSkill.transform.position = new Vector3(meCharacter.transform.position.x, meCharacter.transform.position.y + meCharacter.GetComponent <BoxCollider2D>().size.y / 2, meCharacter.transform.position.z);
                        EffectManager.Instance.EffectMoving(effSkill, enemyCharacter.transform.position.x, 0.5f);
                    }
                    else if (useSkill.data["typeDisplayEffect"].Value == "center")
                    {
                        effSkill.transform.position = Vector3.zero;
                    }
                    else
                    {
                        effSkill.transform.position   = new Vector3(enemyCharacter.transform.position.x, enemyCharacter.transform.position.y + enemyCharacter.GetComponent <BoxCollider2D>().size.y / 2, enemyCharacter.transform.position.z);
                        effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                    }
                }
            }
            else if (enemyCharacter.playerId == playerId)
            {
                Debug.Log("name skill " + useSkill.data["name"].Value.ToString());
                Debug.Log("name eff " + useSkill.data["prefEffect"].Value.ToString());
                GameObject effSkill = EffectManager.Instance.CreateEffect("Effect/" + useSkill.data["prefEffect"].Value.ToString(), this.transform);
                if (useSkill.data["typeDisplayEffect"].Value == "me")
                {
                    effSkill.transform.position   = new Vector3(enemyCharacter.transform.position.x, enemyCharacter.transform.position.y + effSkill.GetComponent <BoxCollider2D>().size.y / 2, enemyCharacter.transform.position.z);
                    effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                }
                else if (useSkill.data["typeDisplayEffect"].Value == "enemy")
                {
                    effSkill.transform.position = new Vector3(meCharacter.transform.position.x, meCharacter.transform.position.y + effSkill.GetComponent <BoxCollider2D>().size.y / 2, meCharacter.transform.position.z);
                }
                else if (useSkill.data["typeDisplayEffect"].Value == "move")
                {
                    effSkill.transform.position   = new Vector3(enemyCharacter.transform.position.x, enemyCharacter.transform.position.y + enemyCharacter.GetComponent <BoxCollider2D>().size.y / 2, enemyCharacter.transform.position.z);
                    effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                    EffectManager.Instance.EffectMoving(effSkill, meCharacter.transform.position.x, 0.5f);
                }
                else if (useSkill.data["typeDisplayEffect"].Value == "center")
                {
                    effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                    effSkill.transform.position   = Vector3.zero;
                }
                else
                {
                    effSkill.transform.position = new Vector3(meCharacter.transform.position.x, meCharacter.transform.position.y + meCharacter.GetComponent <BoxCollider2D>().size.y / 2, meCharacter.transform.position.z);
                }
            }
            SendDamage(playerId.ToString() + "," + indexState.ToString() + "," + health.ToString() + "," + "senddamge");
        }
        else
        {
            if (useSkill != null)
            {
                GameObject effSkill = EffectManager.Instance.CreateEffect("Effect/" + useSkill.data["prefEffect"].Value.ToString(), this.transform);
                if (useSkill.data["typeDisplayEffect"].Value == "me")
                {
                    effSkill.transform.position = new Vector3(meCharacter.transform.position.x, meCharacter.transform.position.y + effSkill.GetComponent <BoxCollider2D>().size.y / 2, meCharacter.transform.position.z);
                }
                else if (useSkill.data["typeDisplayEffect"].Value == "enemy")
                {
                    effSkill.transform.position   = new Vector3(enemyCharacter.transform.position.x, enemyCharacter.transform.position.y + effSkill.GetComponent <BoxCollider2D>().size.y / 2, enemyCharacter.transform.position.z);
                    effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                }
                else if (useSkill.data["typeDisplayEffect"].Value == "move")
                {
                    effSkill.transform.position = new Vector3(meCharacter.transform.position.x, meCharacter.transform.position.y + meCharacter.GetComponent <BoxCollider2D>().size.y / 2, meCharacter.transform.position.z);
                    EffectManager.Instance.EffectMoving(effSkill, enemyCharacter.transform.position.x, 0.5f);
                }
                else if (useSkill.data["typeDisplayEffect"].Value == "center")
                {
                    effSkill.transform.position = Vector3.zero;
                }
                else
                {
                    effSkill.transform.position   = new Vector3(enemyCharacter.transform.position.x, enemyCharacter.transform.position.y + enemyCharacter.GetComponent <BoxCollider2D>().size.y / 2, enemyCharacter.transform.position.z);
                    effSkill.transform.localScale = new Vector3(effSkill.transform.localScale.x * -1, effSkill.transform.localScale.y, effSkill.transform.localScale.z);
                }
            }
            SendDamage(playerId.ToString() + "," + indexState.ToString() + "," + health.ToString() + "," + "dontsend");
        }
    }
예제 #4
0
    public IEnumerator ExecuteRangeAttack(CharacterPlayer _atk, CharacterPlayer _target, Transform hostPos, Transform newPos, int playerId, int indexState, int health, bool isnormalAtk, NewSkill useSkill)
    {
        skeAnimator.SetBool("attack", true);
        yield return(new WaitForSeconds(0.01f));

        yield return(new WaitForSeconds(skeAnimator.GetCurrentAnimatorStateInfo(0).length / 2f - 0.01f));

        if (isnormalAtk)
        {
            GameObject bullet = EffectManager.Instance.CreateEffect("Prefabs/RangeAttack", hostPos);
            bullet.transform.position = new Vector3(hostPos.position.x + hostPos.GetComponent <BoxCollider2D>().bounds.size.x / 2, hostPos.position.y + hostPos.GetComponent <BoxCollider2D>().bounds.size.y / 2, hostPos.position.z);
            EffectManager.Instance.EffectMoving(bullet, newPos.position.x, 0.5f);
        }
        else
        {
            if (useSkill != null)
            {
                if (useSkill.data["type"].Value.ToString() == "passive")
                {
                }
                else if (useSkill.data["type"].Value.ToString() != "passive")
                {
                    GameObject effSkill = EffectManager.Instance.CreateEffect("Effect/" + useSkill.data["prefEffect"].Value.ToString(), this.transform);
                    effSkill.transform.position = new Vector3(_target.transform.position.x, _target.transform.position.y + _target.GetComponent <BoxCollider2D>().bounds.size.y / 2, _target.transform.position.z);
                }
            }
        }



        SendDamage(playerId.ToString() + "," + indexState.ToString() + "," + health.ToString() + "," + "senddamge");
        yield return(new WaitForSeconds(skeAnimator.GetCurrentAnimatorStateInfo(0).length / 2f));

        skeAnimator.SetBool("attack", false);
    }