protected virtual void Update() { if (GameSystem.instance.gameState == GameState.Start) { if (atkCountingTime > 0) { atkCountingTime -= Time.deltaTime; } if (state == "Standby") { if (isMovement) { if (moveTarget) { state = "MoveToTarget"; } else { StartCoroutine(ResetTrigger()); moveWaypoint = CheckWaypoint(); state = "MoveToWaypoint"; } } if (target) { state = "Attack"; } } else if (state == "MoveToWaypoint") { if (isMovement) { if (moveWaypoint) { transform.LookAt(new Vector3(moveWaypoint.transform.position.x, transform.position.y, moveWaypoint.transform.position.z), Vector3.up); //transform.position = Vector3.MoveTowards(transform.position, moveTarget.transform.position, characterMovement.playerSpeed); Vector3 move = (moveWaypoint.transform.position - transform.position).normalized; characterMovement.controller.Move(move * Time.deltaTime * characterMovement.playerSpeed); } else { state = "Standby"; } } else { state = "Standby"; } } else if (state == "MoveToTarget") { if (isMovement) { if (moveTarget) { transform.LookAt(new Vector3(moveTarget.transform.position.x, transform.position.y, moveTarget.transform.position.z), Vector3.up); //transform.position = Vector3.MoveTowards(transform.position, moveTarget.transform.position, characterMovement.playerSpeed); Vector3 move = (moveTarget.transform.position - transform.position).normalized; characterMovement.controller.Move(move * Time.deltaTime * characterMovement.playerSpeed); } else { state = "Standby"; } } else { state = "Standby"; } } else if (state == "Attack") { if (target) { transform.LookAt(new Vector3(target.transform.position.x, transform.position.y, target.transform.position.z), Vector3.up); if (isSkillInUsed) { // use skill type selection } else { if (atkCountingTime <= 0) { AttackNow(); atkCountingTime = atkSpeed; } if (targetStatus.CheckDead()) { target = null; state = "Standby"; } } } else { state = "Standby"; } } } }