//to ray passing
    void isPlayerOnGround()
    {
        //to ray passing down position

        Debug.DrawRay(thisTrans.position, -Vector3.up * 0.15f, Color.red);

        if (Physics.Raycast(transform.position, -Vector3.up, out hit, 0.15f))
        {
            //Debug.Log ("name" + hit.collider.tag);
            //for ray hit castle ground
            if (playerAnimator.GetCurrentAnimatorStateInfo(0).IsName("Run"))
            {
                if (hit.collider.tag.Contains("ground1"))
                {
                    fireEffect.SetActive(true);                     //to fire effect disable
                    SmokeEffect.SetActive(false);                   //to smoke effect disable
                }

                //for ray hit forest ground
                else if (hit.collider.tag.Contains("ground2"))
                {
                    fireEffect.SetActive(false);                     //to fire effect disable
                    SmokeEffect.SetActive(true);                     //to smoke effect disable
                }
            }
            else
            {
                SmokeEffect.SetActive(false);                //to smoke effect disable
                fireEffect.SetActive(false);                 //to fire effect disable
            }
            isPlayerOnTheGround = true;
        }
        else
        {
            isPlayerOnTheGround = false;
            //if player is on Air
            SmokeEffect.SetActive(false);            //to smoke effect disable
            fireEffect.SetActive(false);             //to fire effect disable
        }
    }
    void  FixedUpdate()
    {
        //isPlayerOnGround ();

        thisPosition = thisTrans.position;
        switch (presentPlayerState)
        {
        //for player in alive

        case playerStates.Alive:



            if (InputController.Static.isJump)
            {
                if (canDoubleJump)
                {
                    currentJumpSpeed = jumpSpeed * 0.5f;
                    canDoubleJump    = false;
                    playerAnimator.SetTrigger("DoubleJump");
                    jumpTimer = 0.0f;
                    onAirTime = Time.timeSinceLevelLoad;
                }
                else
                {
                    if (isPlayerOnTheGround)
                    {
                        currentJumpSpeed = jumpSpeed;
                        canDoubleJump    = true;
                        playerAnimator.SetTrigger("Jump");
                        jumpTimer = 0.0f;
                        jumpinfo.SetActive(false);
                        SoundController.Static.playSoundFromName("JUMP");                         //for jump sound
                        onAirTime = Time.timeSinceLevelLoad;
                    }
                }



                InputController.Static.isJump = false;
            }

            if (InputController.Static.isAttack)
            {
                attackinfo.SetActive(false);
                fireEffect.SetActive(false);
                SwordAnimator.SetTrigger("Rotate");
                playerAnimator.SetTrigger("Attack");
                SoundController.Static.playSoundFromName("Sword");                 //for sword sound

                InputController.Static.isAttack = false;
            }



            moveDirection = new Vector3(speed, currentJumpSpeed, 0);
            controller.Move(moveDirection * Time.deltaTime);

            jumpSpeedFalloff  = jumpCurve.Evaluate(jumpTimer);
            currentJumpSpeed -= jumpSpeedFalloff;
            jumpTimer        += Time.deltaTime;

            isPlayerOnGround();
            break;

        case playerStates.idle:
            break;

        //to player dead state
        case playerStates.dead:
            fireEffect.SetActive(false);
            SmokeEffect.SetActive(false);
            sword.SetActive(false);
            //player moving down
            moveDirection.y -= gravity * Time.deltaTime;
            moveDirection    = Vector3.MoveTowards(moveDirection, Vector3.zero, 0.09f);
            controller.Move(moveDirection * Time.deltaTime);

            SoundController.Static.bgSound.volume = 0;            //to bg sound
            //to resetting player moving speed when died

            if (!oneTimeReset)
            {
                oneTimeReset = true;
                playerAnimator.SetTrigger("Dead");                 //for player dead animation
                Invoke("ResetMoveDirection", 0.7f);
            }
            break;
        }
    }