Exemple #1
0
    /// <summary>
    /// MoveCharacter에서 값을 받아 움직임
    /// </summary>
    /// <param name="end"></param>
    /// <returns></returns>
    private IEnumerator SmoothMovement(Vector3 end, float aniTime)
    {
        // 움직임이 있을 때 다시 입력이 들어오면 리턴
        //if (InputManager.Instance.IsMoved == true)
        //{
        //    yield break;
        //}

        inputManager.IsMoved     = true;
        inputManager.IsBakeMoved = true;

        float timer    = aniTime;
        float cooltime = 0f;

        //자신의 위치 값에 받은 end값을 더 함
        Vector3 starPos = this.transform.position;

        starPos = FloatRound(starPos);
        print("starPos : " + starPos);

        Vector3 endPos = starPos + end;

        endPos = FloatRound(endPos);
        print("endPos : " + endPos);

        //만약 데미지 값이 있다면
        if (aniTime == 0.3f)
        {
            animator.SetTrigger("DAMAGE");
        }

        //포톤 처리
        if (PhotonNetwork.connected && photonView.isMine)
        {
            //카메라 셋팅
            Camera.main.GetComponent <Camerafollow>().OriginPosition(endPos);
        }

        while (cooltime < timer)
        {
            cooltime += Time.deltaTime;

            this.transform.position = Vector3.Lerp(starPos, endPos, cooltime / timer);

            yield return(null);
        }

        //캐릭터 움직임 마무리
        transform.position = endPos;

        inputManager.IsMoved     = false;
        inputManager.IsBakeMoved = false;

        gameManager.ScoreUp();

        if (PhotonNetwork.connected && PhotonNetwork.isMasterClient)
        {
            print("Master");
            //로드 제네레이터의 플레이어 함수를 찾는다
            roadGenerator.FindPlayer();
        }
    }