示例#1
0
    protected Rigidbody2D m_rigid;    //캐릭터 Rigidbody2D

    #region Init
    /*
     * Purpose: 캐릭터 기본 변수를 초기화하는 함수
     * Variable: X
     * Notice: 오버라이드로 캐릭터별 조정 가능, layer_ground 도 초기화함, ParticleSystem 도 초기화함
     */
    virtual public void Init_Variable()
    {
        try
        {
            m_maxTime = 60f;
            m_curTime = m_maxTime;
            m_maxJumpCnt = 2;
            m_curJumpCnt = m_maxJumpCnt;

            m_groundLayer = LayerMask.GetMask("Ground");
            if (m_groundLayer.value == 0)
                throw new Exception("LayerMask에 Ground가 존재하지 않습니다!");

            m_rigid = GetComponent<Rigidbody2D>();
            if (m_rigid == null)
                throw new Exception("캐릭터 객체에 Rigidbody2D가 존재하지 않습니다!");

            m_particleArray = new ARRAY_PARTICLE[3];
            m_particleArray[0] = new ARRAY_PARTICLE("RUN", transform.GetChild(0).Find("Run_ParticleEffect").GetComponent<ParticleSystem>());
            m_particleArray[1] = new ARRAY_PARTICLE("JUMP", transform.GetChild(0).Find("Jump_ParticleEffect").GetComponent<ParticleSystem>());
            m_particleArray[2] = new ARRAY_PARTICLE("LANDING", transform.GetChild(0).Find("Landing_ParticleEffect").GetComponent<ParticleSystem>());
            if (m_particleArray[0] == null || m_particleArray[1] == null || m_particleArray[2] == null)
                throw new Exception("캐릭터 객체에 일부 파티클이 존재하지 않습니다!");
        }
        catch (Exception ex)
        {
            Debug.Log("ERROR!!! " + ex.Message + " ~BaseCharacter/Init_Variable()");
        }
    }
示例#2
0
    /*
     * Purpose: 캐릭터에 붙은 파티클을 실행하는 함수
     * Variable: (string)실행할 파티클 이름, (bool)실행 여부
     * Notice: 입력 가능한 값 - Run / Jump / Landing (대,소문자 구분 필요 x)
     */
    public void Do_Particle(string particleName, bool enable)
    {
        ARRAY_PARTICLE temp = null;
        particleName = particleName.ToUpper();

        try
        {
            switch (particleName)
            {
                case "RUN":
                    temp = Array.Find(m_particleArray, arr => arr.m_name == "RUN");
                    break;

                case "JUMP":
                    temp = Array.Find(m_particleArray, arr => arr.m_name == "JUMP");
                    break;

                case "LANDING":
                    temp = Array.Find(m_particleArray, arr => arr.m_name == "LANDING");
                    break;

                default:
                    throw new Exception("particleName 이 잘못됬습니다!");
            }

            if (temp == null)
                throw new Exception("해당 파티클이 배열에 존재하지 않습니다!");

            if (enable == true && temp.isPlayed == false)
            {
                temp.m_particle.Play();
                temp.isPlayed = true;
            }
            else if(enable == false && temp.isPlayed == true)
            {
                temp.m_particle.Stop();
                temp.isPlayed = false;
            }
        }
        catch (Exception e)
        {
            Debug.Log("ERROR!!! " + e.Message + " ~BaseCharacter/Do_Particle()");
        }
    }