Exemple #1
0
    protected override void MoveToTarget()
    {
        if (!isInitialized)
        {
            InitalizeEnemy();
            isInitialized = true;
        }

        if (flipped)
        {
            orbTransformRoot.localRotation = Quaternion.Euler(0, 0, 0);
        }
        else
        {
            orbTransformRoot.localRotation = Quaternion.Euler(0, 180, 0);
        }

        base.MoveToTarget();

        if (isOrbDead)
        {
            return;
        }
        #region OrbMovement
        //Increment timer:



        if (!orbIsMovingToNextPosition)
        {
            orbMovementTimer += Time.deltaTime;
        }

        if (orbMovementTimer >= orbMovementWaitIntervals)
        {
            orbIsMovingToNextPosition = true;
            orbMovementTimer          = 0;
        }

        //Update orb positions.
        if (orbIsMovingToNextPosition)
        {
            Vector3 localOrbTarget = currentOrbTargetTransform.position;
            Vector3 newOrbPosition = Vector3.MoveTowards(orb.transform.position, localOrbTarget, orbMovementVelocity * Time.deltaTime);
            orb.transform.position = newOrbPosition;


            if (Vector3.Distance(orb.transform.position, localOrbTarget) < 0.1f)
            {
                currentOrbTransform          = currentOrbTargetTransform;
                currentTargetTransformIndex += 1;
                currentTargetTransformIndex %= orbPositions.Length;
                currentOrbTargetTransform    = orbPositions[currentTargetTransformIndex];
                orbIsMovingToNextPosition    = false;

                orb.Attack(playerTransform);
            }
        }



        #endregion OrbMovement
    }