Beispiel #1
0
    private void Awake()
    {
        Animator = GetComponentInChildren <Animator>();
        //NavMeshAgent = GetComponent<NavMeshAgent>();

        PlayerState       = PlayerState.Idle;
        PlayerStateAttack = PlayerStateAttack.None;
    }
 public PlayerStateManager(PlayerStateIdle idle, PlayerStateMove move, PlayerStateAttack attack, PlayerStateDied died) : base(
         new Dictionary <PlayerStates, IPlayerState>(){
     { PlayerStates.Idle, idle },
     { PlayerStates.Move, move },
     { PlayerStates.Attack, attack },
     { PlayerStates.Died, died },
 }
         )
 {
 }
Beispiel #3
0
    IEnumerator CheckMove()
    {
        while (true)
        {
            if (before_move != after_move)
            {
                charaPos.message     = "PlayerMove";
                charaPos.x           = transform.position.x;
                charaPos.y           = transform.position.y;
                charaPos.z           = transform.position.z;
                charaPos.angle_y     = transform.eulerAngles.y;
                charaPos.currentTime = DateTimeOffset.Now.ToUnixTimeMilliseconds();
                //Debug.Log(DateTimeOffset.Now.ToUnixTimeMilliseconds());
                NetworkManager.SendPacket2CsServer(charaPos);
                //Debug.Log(DateTimeOffset.Now.ToUnixTimeMilliseconds() - sampleTimer);
            }

            if (before_action != after_action)
            {
                charaPos.message           = "PlayerAction";
                charaPos.playerStateAttack = PlayerStateAttack;
                NetworkManager.SendPacket2CsServer(charaPos);
            }
            after_move   = before_move;
            after_action = before_action;

            if (ConnectionTimer > 1f)
            {
                NetworkManager.ConnectPacket();
                ConnectionTimer = 0f;
            }

            ConnectionTimer += Time.deltaTime;

            yield return(null);
        }
    }
Beispiel #4
0
 void Change2Idle()
 {
     PlayerStateAttack = PlayerStateAttack.None;
     before_action     = PlayerStateAttack.None;
 }
Beispiel #5
0
    private void GetKey()
    {
        // if(charaPos.angle_y > 360){
        //     charaPos.angle_y = charaPos.angle_y - 360;
        // }
        // if(charaPos.angle_y < 0){
        //     charaPos.angle_y = charaPos.angle_y + 360;
        // }
        if (Input.GetKey(KeyCode.LeftArrow) && Input.GetKey(KeyCode.UpArrow))
        {
            charaPos.angle_y    = -90;
            charaPos.x          = speed * Mathf.Sin(transform.eulerAngles.y * Mathf.PI / 180);
            charaPos.z          = speed * Mathf.Cos(transform.eulerAngles.y * Mathf.PI / 180);
            PlayerState         = PlayerState.Move;
            charaPos.playerMove = PlayerMove.moveFrontLeft;
            before_move         = PlayerMove.moveFrontLeft;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.RightArrow) && Input.GetKey(KeyCode.UpArrow))
        {
            charaPos.angle_y    = 90;
            charaPos.x          = speed * Mathf.Sin(transform.eulerAngles.y * Mathf.PI / 180);
            charaPos.z          = speed * Mathf.Cos(transform.eulerAngles.y * Mathf.PI / 180);
            PlayerState         = PlayerState.Move;
            charaPos.playerMove = PlayerMove.moveFrontRight;
            before_move         = PlayerMove.moveFrontRight;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.RightArrow) && Input.GetKey(KeyCode.DownArrow))
        {
            charaPos.angle_y = 90;
            charaPos.x       = -speed *Mathf.Sin(transform.eulerAngles.y *Mathf.PI / 180);

            charaPos.z = -speed *Mathf.Cos(transform.eulerAngles.y *Mathf.PI / 180);

            PlayerState         = PlayerState.Move;
            charaPos.playerMove = PlayerMove.moveBackRight;
            before_move         = PlayerMove.moveBackRight;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.LeftArrow) && Input.GetKey(KeyCode.DownArrow))
        {
            charaPos.angle_y = -90;
            charaPos.x       = -speed *Mathf.Sin(transform.eulerAngles.y *Mathf.PI / 180);

            charaPos.z = -speed *Mathf.Cos(transform.eulerAngles.y *Mathf.PI / 180);

            PlayerState         = PlayerState.Move;
            charaPos.playerMove = PlayerMove.moveBackLeft;
            before_move         = PlayerMove.moveBackLeft;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.LeftArrow))
        {
            charaPos.angle_y    = -90;
            charaPos.x          = 0;
            charaPos.z          = 0;
            charaPos.playerMove = PlayerMove.turn_left;
            before_move         = PlayerMove.turn_left;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.RightArrow))
        {
            charaPos.angle_y    = 90;
            charaPos.x          = 0;
            charaPos.z          = 0;
            charaPos.playerMove = PlayerMove.turn_right;
            before_move         = PlayerMove.turn_right;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.UpArrow))
        {
            charaPos.x          = speed * Mathf.Sin(transform.eulerAngles.y * Mathf.PI / 180);
            charaPos.z          = speed * Mathf.Cos(transform.eulerAngles.y * Mathf.PI / 180);
            charaPos.angle_y    = 0;
            PlayerState         = PlayerState.Move;
            charaPos.playerMove = PlayerMove.moveFront;
            before_move         = PlayerMove.moveFront;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else if (Input.GetKey(KeyCode.DownArrow))
        {
            charaPos.x = -speed *Mathf.Sin(transform.eulerAngles.y *Mathf.PI / 180);

            charaPos.z = -speed *Mathf.Cos(transform.eulerAngles.y *Mathf.PI / 180);

            charaPos.angle_y    = 0;
            PlayerState         = PlayerState.Move;
            charaPos.playerMove = PlayerMove.moveBack;
            before_move         = PlayerMove.moveBack;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }
        else
        {
            charaPos.x          = 0;
            charaPos.z          = 0;
            charaPos.angle_y    = 0;
            PlayerState         = PlayerState.Idle;
            charaPos.playerMove = PlayerMove.stop;
            before_move         = PlayerMove.stop;
            //sampleTimer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
        }

        if (Input.GetKeyDown(KeyCode.A))
        {
            if (targeting.Targeting)
            {
                if (Vector3.Distance(targeting.Targeting.transform.position, transform.position) < 3f)
                {
                    if (DateTimeOffset.Now.ToUnixTimeMilliseconds() - Timer > 1000)
                    {
                        PlayerStateAttack = PlayerStateAttack.Attack;
                        before_action     = PlayerStateAttack.Attack;
                        charaPos.message  = "Attack";
                        charaPos.x        = transform.position.x;
                        charaPos.y        = transform.position.y;
                        charaPos.z        = transform.position.z;
                        charaPos.angle_y  = transform.eulerAngles.y;
                        charaPos.target   = targeting.Targeting.name;
                        NetworkManager.SendPacket2CsServer(charaPos);
                        Invoke("Change2Idle", 0.94f);
                        Timer = DateTimeOffset.Now.ToUnixTimeMilliseconds();
                    }
                    else
                    {
                        Debug.Log("쿨타임입니다");
                    }
                }
                else
                {
                    Debug.Log("타겟이 사정범위 안에 없습니다");
                }
            }
            else
            {
                Debug.Log("타겟이 없습니다");
            }
        }
    }
Beispiel #6
0
    void MoveByPacket()
    {
        if (playerMove == 0)
        {
            xSpeed      = 0;
            zSpeed      = 0;
            yAngle      = 0;
            PlayerState = PlayerState.Idle;
        }
        if (playerMove == 3)
        {
            xSpeed      = speed * Mathf.Sin(transform.eulerAngles.y * Mathf.PI / 180);
            zSpeed      = speed * Mathf.Cos(transform.eulerAngles.y * Mathf.PI / 180);
            yAngle      = 0;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 4)
        {
            xSpeed = -speed *Mathf.Sin(transform.eulerAngles.y *Mathf.PI / 180);

            zSpeed = -speed *Mathf.Cos(transform.eulerAngles.y *Mathf.PI / 180);

            yAngle      = 0;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 1)
        {
            xSpeed      = 0;
            zSpeed      = 0;
            yAngle      = -90;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 2)
        {
            xSpeed      = 0;
            zSpeed      = 0;
            yAngle      = 90;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 5)
        {
            xSpeed      = speed * Mathf.Sin(transform.eulerAngles.y * Mathf.PI / 180);
            zSpeed      = speed * Mathf.Cos(transform.eulerAngles.y * Mathf.PI / 180);
            yAngle      = -90;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 6)
        {
            xSpeed      = speed * Mathf.Sin(transform.eulerAngles.y * Mathf.PI / 180);
            zSpeed      = speed * Mathf.Cos(transform.eulerAngles.y * Mathf.PI / 180);
            yAngle      = 90;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 7)
        {
            xSpeed = -speed *Mathf.Sin(transform.eulerAngles.y *Mathf.PI / 180);

            zSpeed = -speed *Mathf.Cos(transform.eulerAngles.y *Mathf.PI / 180);

            yAngle      = -90;
            PlayerState = PlayerState.Move;
        }
        if (playerMove == 8)
        {
            xSpeed = -speed *Mathf.Sin(transform.eulerAngles.y *Mathf.PI / 180);

            zSpeed = -speed *Mathf.Cos(transform.eulerAngles.y *Mathf.PI / 180);

            yAngle      = 90;
            PlayerState = PlayerState.Move;
        }

        if (playerAction == 0)
        {
            PlayerStateAttack = PlayerStateAttack.None;
        }
        if (playerAction == 1)
        {
            PlayerStateAttack = PlayerStateAttack.Attack;
        }

        transform.position += new Vector3(xSpeed, 0, zSpeed) * Time.deltaTime;
        //transform.rotation += Quaternion.Euler(new Vector3(0, yAngle, 0) * Time.deltaTime);
        //Debug.Log(yAngle);
        transform.Rotate(new Vector3(0, yAngle, 0) * Time.deltaTime);
    }