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 }, } ) { }
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); } }
void Change2Idle() { PlayerStateAttack = PlayerStateAttack.None; before_action = PlayerStateAttack.None; }
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("타겟이 없습니다"); } } }
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); }