Exemple #1
0
    protected virtual void OnSceneGUI()
    {
        SharkBehavior example = (SharkBehavior)target;

        EditorGUI.BeginChangeCheck();
        Vector3 newTargetPosition = Handles.PositionHandle(example.PatrolPoint, Quaternion.identity);

        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(example, "Change Look At Target Position");
            example.PatrolPoint = newTargetPosition;
        }
    }
Exemple #2
0
 IEnumerator AttackState()
 {
     anim.SetTrigger("attack");
     _state = SharkBehavior.Attack;
     while (_state == SharkBehavior.Attack)
     {
         if (Time.time >= timeLastSubtracted + .7)
         {
             StartCoroutine(FollowState());
             StopCoroutine(AttackState());
         }
         yield return(0);
     }
 }
Exemple #3
0
    IEnumerator FollowState()
    {
        _state = SharkBehavior.Follow;
        while (_state == SharkBehavior.Follow)
        {
            transform.LookAt(_player.transform.position);
            float distance = Vector3.Distance(transform.position, _target.position);
            if (distance <= attackDistance)
            {
                timeLastSubtracted = Time.time;
                StartCoroutine(AttackState());
                StopCoroutine(FollowState());
            }
            if (distance >= 30)
            {
                transform.position = _points[0].transform.position;
                StartCoroutine(PatrolState());
                StopCoroutine(FollowState());
            }
            transform.Translate(Vector3.forward * (2 * Time.deltaTime));

            yield return(0);
        }
    }
Exemple #4
0
    IEnumerator PatrolState()
    {
        _state        = SharkBehavior.Patrol;
        _currentPoint = 0;
        StopCoroutine(FollowState());

        while (_state == SharkBehavior.Patrol)
        {
            transform.LookAt(_points[_currentPoint].transform.position);
            transform.Translate(Vector3.forward * (3 * Time.deltaTime));
            if (Mathf.Abs(_points[_currentPoint].transform.position.x - this.transform.position.x) < 1)
            {
                if (_currentPoint == _points.Length - 1)
                {
                    _currentPoint = 0;
                }
                else
                {
                    _currentPoint += 1;
                }
            }
            yield return(0);
        }
    }