Beispiel #1
0
    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";
                }
            }
        }
    }