Beispiel #1
0
    IEnumerator moveRoutine()
    {
        moving  = true;
        moveDir = RandomExtra.Chance(.5f) ? Vector2.right : Vector2.left;

        float mainTimer      = Random.Range(MoveTimeRange.x, MoveTimeRange.y);
        float directionTimer = Random.Range(DirectionSwitchTimeRange.x, DirectionSwitchTimeRange.y);

        while (mainTimer > 0)
        {
            if (Mathf.Abs(transform.position.x - PlayerRef.transform.position.x) <= AttackDistance && RandomExtra.ChancePerSecond(AttackChancePerSecond))
            {
                moving = false;
                yield break; // do a grab, as long as the parent immediately calls grab
            }

            mainTimer      -= Time.deltaTime;
            directionTimer -= Time.deltaTime;

            if (directionTimer <= 0)
            {
                directionTimer = Random.Range(DirectionSwitchTimeRange.x, DirectionSwitchTimeRange.y);
                moveDir       *= -1;
            }

            transform.position += (Vector3)moveDir * MoveSpeed * Time.deltaTime;

            yield return(null);
        }

        moving = false;
    }