public void SetModeDisappear(GlobalCharacterInfo.CHAR_TYPE originType, bool isRight)
    {
        isEndAnimation             = false;
        rigid2DController.velocity = new Vector2(0.0f, 0.0f);
        TurnOffComponent();

        gameObject.transform.localScale = new Vector3(isRight ? 1 : -1, 1, 1);
        currentRenderer.enabled         = true;

        gameObject.transform.position = new Vector3(
            referenceCharacter.transform.position.x,
            referenceCharacter.transform.position.y,
            referenceCharacter.transform.position.z);
        switch (originType)
        {
        case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR: currentRenderer.sprite = spriteAlligatorHit; break;

        case GlobalCharacterInfo.CHAR_TYPE.MAGITION: currentRenderer.sprite = spriteMagitionHit; break;

        case GlobalCharacterInfo.CHAR_TYPE.DRAGON: currentRenderer.sprite = spriteDragonHit; break;

        case GlobalCharacterInfo.CHAR_TYPE.HERO: currentRenderer.sprite = spriteHeroHit; break;
        }
        specificEffect.transform.position = new Vector3(
            referenceCharacter.transform.position.x,
            referenceCharacter.transform.position.y + 0.2f,
            referenceCharacter.transform.position.z);
        StartCoroutine(SmokeAnimation());
        StartCoroutine(DisappearAnimation(isRight));
    }
    public void SetModeFalldown(GlobalCharacterInfo.CHAR_TYPE originType, bool isRight)
    {
        TurnOnComponent();
        gameObject.transform.localScale       = new Vector3(isRight ? 1 : -1, 1, 1);
        gameObject.transform.localEulerAngles = new Vector3(0, 0, 0);
        specificRenderer.sprite = spriteDownLine;

        switch (originType)
        {
        case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/dkrdjdiH_0") as RuntimeAnimatorController; break;

        case GlobalCharacterInfo.CHAR_TYPE.MAGITION: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/wichH_0") as RuntimeAnimatorController; break;

        case GlobalCharacterInfo.CHAR_TYPE.DRAGON: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/DragonH_0") as RuntimeAnimatorController; break;

        case GlobalCharacterInfo.CHAR_TYPE.HERO: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/HeroH_0") as RuntimeAnimatorController; break;
        }

        colliderController.size = moveScript.GetCollisionArea();
        isLand = false;

        //위치 제어
        gameObject.transform.position = new Vector3(
            referenceCharacter.transform.position.x,
            referenceCharacter.transform.position.y + 5.0f,
            referenceCharacter.transform.position.z);
    }
    public void ActionSkill(GlobalCharacterInfo.CHAR_TYPE currentType)
    {
        GlobalSkillInfo.SKILL_GLOBAL_DEFAULT_DATA.TryGetValue(currentType, out defaultSkillInfo);

        duringSkill = true;
        moveScript.SetInvInvincibility();
        moveScript.SetHold();
        switch (currentType)
        {
        case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR:
            StartCoroutine(AlligatorSkill());
            break;

        case GlobalCharacterInfo.CHAR_TYPE.MAGITION:
            StartCoroutine(MagitionSkill());
            break;

        case GlobalCharacterInfo.CHAR_TYPE.DRAGON:
            StartCoroutine(DragonSkill());
            break;

        case GlobalCharacterInfo.CHAR_TYPE.HERO:
            StartCoroutine(HeroSkill());
            break;
        }
    }
    private IEnumerator SwitchAnimation(GlobalCharacterInfo.CHAR_TYPE originType, GlobalCharacterInfo.CHAR_TYPE switchType)
    {
        //모든 설정 초기화.
        moveScript.ResetCharacterInfo();
        //Hold & Imune 설정
        moveScript.SetHold();
        moveScript.SetInvInvincibility();

        // 우선 스프라이트가 위에서 설정되서 내려온다
        // Effect Script On 변경할 캐릭터가 내려와야함.
        Debug.Log(originType);
        Debug.Log(switchType);
        effectScript.SetModeFalldown(switchType, moveScript.IsRight());

        //캐릭터 공중에 올려놓는다.

        //캐릭터가 지면에 닿을동안 대기.
        yield return(new WaitUntil(() => effectScript.IsLanding() == true));

        //닿으면 연기 Effect 설정.

        //캐릭터 변경.
        effectScript.SetModeDisappear(originType, moveScript.IsRight());
        moveScript.setCharacterType(switchType);
        //연기 effect 와 동시에 캐릭터 왼쪽 오른쪽 여부 판단하여 애니메이션 작동
        yield return(new WaitUntil(() => effectScript.IsEndAni() == true));


        //모든 애니메이션 동작 완료 시 해당 다시 Release
        moveScript.ReleaseHold();
        moveScript.ReleaseInvincibility();
    }
    // Use this for initialization

    void Awake()
    {
        characterQueue = new CustomCircularQueue <GlobalCharacterInfo.CHAR_TYPE>();
        currentType    = GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR;
        moveScript     = characterObject.GetComponent <Playermove>();
        effectScript   = characterSwitchEffectObject.GetComponent <CharacterSwitchEffect>();

        foreach (GlobalCharacterInfo.CHAR_TYPE charType in (GlobalCharacterInfo.CHAR_TYPE[])Enum.GetValues(typeof(GlobalCharacterInfo.CHAR_TYPE)))
        {
            characterQueue.push(charType);
        }
    }
    public void setParameter(PlayerWeaponData argPlayerData, PlayerDefaultBulletData argBulletData, GlobalCharacterInfo.CHAR_TYPE argType)
    {
        currentPlayerData = argPlayerData;
        currentBulletData = argBulletData;

        currentPlayerType = argType;

        attackController.SetAttackAxisInfo(new Vector3(0, 0, -currentPlayerData.m_fWeaponAxisStart), new Vector3(currentPlayerData.m_v2WeaponAxisPosition.x, currentPlayerData.m_v2WeaponAxisPosition.y, 0));
        attackController.SetEffectInfo(currentPlayerData.m_v3EffectPosition, currentPlayerData.m_v3EffectScale);
        attackController.SetEffectImage(currentPlayerData.m_sWaeponEffectPath);

        weaponBoxCollider2D.enabled        = currentPlayerData.m_bIsEnableWeaponHit;
        weaponBoxCollider2D.size           = currentPlayerData.m_v2WeaponColliderArea;
        weaponBoxCollider2D.offset         = currentPlayerData.m_v2Weaponoffset;
        gameObject.transform.localPosition = currentPlayerData.m_v2WeaponPosition;

        renderObject.sprite = Resources.Load <Sprite>(currentPlayerData.m_sWaeponSpritePath);
    }
        private static SkillInfo generateDefaultSkillInfo(GlobalCharacterInfo.CHAR_TYPE arg)
        {
            SkillInfo ret = new SkillInfo();

            switch (arg)
            {
            case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR:
                // Summon Data 만 설정한다.
                break;

            case GlobalCharacterInfo.CHAR_TYPE.MAGITION:
                ret.m_sSkillBullet.magitionSkill.startPostion = new Vector2(-3.0f, 5.0f);
                ret.m_sSkillBullet.magitionSkill.endPostion   = new Vector2(-1.0f, 8.0f);

                ret.m_sSkillBullet.magitionSkill.circleRenderFrame = 100.0f;

                ret.m_sSkillBullet.magitionSkill.handsDegree = 125.0f;

                ret.m_sSkillBullet.magitionSkill.handsCount          = 10;
                ret.m_sSkillBullet.magitionSkill.offsetRandomDistMax = 1;
                ret.m_sSkillBullet.magitionSkill.offsetRandomDegMax  = 10.0f;


                ret.m_sSkillBullet.magitionSkill.firstArea = new Vector2(0.0f, 1.0f);
                ret.m_sSkillBullet.magitionSkill.lastArea  = new Vector2(15.0f, 1.0f);
                break;

            case GlobalCharacterInfo.CHAR_TYPE.DRAGON:
                ret.m_sSkillBullet.dragonSkill.sparkXArea = 1.0f;
                ret.m_sSkillBullet.dragonSkill.laserXArea = 10.0f;
                //ret.m_sSkillBullet.dragonSkill.offset = new Vector2(ret.m_sSkillBullet.dragonSkill.sparkArea.x / 2, 0.0f);
                ret.m_sSkillBullet.dragonSkill.eachDuration = 60.0f;
                ret.m_sSkillBullet.dragonSkill.gapDuration  = 200.0f;
                break;

            case GlobalCharacterInfo.CHAR_TYPE.HERO:
                // Skill 이 없으므로 해당 데이터 설정하지 않는다.
                break;
            }

            return(ret);
        }
 // Update is called once per frame
 void Update()
 {
     if (isCharChangeCoolTime && moveScript.IsPossibleCharaterChange())
     {
         if (Input.GetKeyDown(KeyCode.A))
         {
             //A를 누를 시
             GlobalCharacterInfo.CHAR_TYPE origin = characterQueue.getVaule();
             characterQueue.goLeft();
             GlobalCharacterInfo.CHAR_TYPE next = characterQueue.getVaule();
             StartCoroutine(SwitchAnimation(origin, next));
         }
         else if (Input.GetKeyDown(KeyCode.S))
         {
             //S를 누를 시
             GlobalCharacterInfo.CHAR_TYPE origin = characterQueue.getVaule();
             characterQueue.goRight();
             GlobalCharacterInfo.CHAR_TYPE next = characterQueue.getVaule();
             StartCoroutine(SwitchAnimation(origin, next));
         }
     }
 }
예제 #9
0
 public void setCharacterType(GlobalCharacterInfo.CHAR_TYPE argType)
 {
     selectedCharacterType = argType;
     ReLoadingCharacter();
 }