// Update is called once per frame
    void Update()
    {
        if (teacherState != TeacherState.Ended)
        {
            Bike bike = GameManager.instance.GetBike();
            if (Math.Abs(bike.GetPosition().x - this.transform.position.x) < detectDistance)
            {
                if (BikeSounds.instance.HornIsPlaying())
                {
                    teacherState = TeacherState.Moving;
                }

                if (teacherState == TeacherState.Moving)
                {
                    timeElapsed += Time.deltaTime;
                    float distCovered = (timeElapsed) * speed;
                    float fracJourney = distCovered / journeyLength;

                    this.animation.enabled = true;
                    transform.position     = Vector3.Lerp(startMarker, endMarker, fracJourney);
                    this.collider.enabled  = false;
                }
            }

            if (CameraOverview.EqualVectors(this.transform.position,
                                            new Vector3(initialPos.x, initialPos.y, initialPos.z + zDistance)))
            {
                this.animation.enabled = false;
                teacherState           = TeacherState.Ended;
                spriteRenderer.sprite  = sprite;
            }
        }
    }
예제 #2
0
    private void Watching()
    {
        state = TeacherState.watching;
        _actualWatchingTimer = RandomizeTime(_watchingTimer - _currentDifficultyMultiplier);

        _currentDifficultyMultiplier += _difficultyMultiplier;
        sr.sprite    = watching;
        isWatching   = true;
        _currentTime = 0;

        sr.color = Color.white;
    }
    private void Start()
    {
        teacherState   = TeacherState.Start;
        collider       = GetComponent <Collider2D>();
        animation      = GetComponent <Animator>();
        spriteRenderer = GetComponent <SpriteRenderer>();
        initialPos     = this.transform.position;

        startMarker   = this.transform.position;
        endMarker     = new Vector3(startMarker.x, startMarker.y, startMarker.z + zDistance);
        journeyLength = Vector3.Distance(startMarker, endMarker);
    }
예제 #4
0
    private void NotWatching()
    {
        state = TeacherState.notWatching;
        DefineVectors();
        _actualWritingTimer = RandomizeTime(_writingTimer - _currentDifficultyMultiplier);

        if (_actualWritingTimer < _minimumTime)
        {
            _actualWritingTimer = _minimumTime;
        }

        SpawnWriting();
        sr.sprite    = notWatching;;
        isWatching   = false;
        _currentTime = 0;
    }
예제 #5
0
    private void SpawnWriting()
    {
        if (_boardIndex < 15)
        {
            GameObject     writingClone = Instantiate(writing, boardPositions[_boardIndex].transform);
            SpriteFader    sf           = writingClone.GetComponent <SpriteFader>();
            SpriteRenderer sr           = writingClone.GetComponent <SpriteRenderer>();
            sr.flipY    = RandomFlip();
            sr.flipX    = RandomFlip();
            sf.fadingIn = true;
            _boardIndex++;
        }
        else
        {
            state = TeacherState.done;
            GameObject[] allWritings = GameObject.FindGameObjectsWithTag("Writing");

            for (int i = 0; i < allWritings.Length; i++)
            {
                SpriteFader sf = allWritings[i].GetComponent <SpriteFader>();
                sf.fadingOut = true;
            }
        }
    }
예제 #6
0
 private void Raging()
 {
     state     = TeacherState.raging;
     sr.sprite = rage;
 }