Esempio n. 1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        switch (currState)
        {
        case TurretBehaviourDefinition.State.patrol: {
            if (detector.isVisible && detector.inRange)
            {
                currState = TurretBehaviourDefinition.State.chase;
            }
            else
            {
                behaviourObject.Patrol();
            }
        } break;

        case TurretBehaviourDefinition.State.chase: {
            if (!detector.isVisible)
            {
                behaviourObject.SetDesiredDirection();
                currState   = TurretBehaviourDefinition.State.wSearch;
                currentTime = Time.time;
            }
            else
            {
                behaviourObject.Chase(detector.Direction);
            }
        } break;

        case TurretBehaviourDefinition.State.shoot: {
        } break;

        case TurretBehaviourDefinition.State.wSearch: {
            if (Time.time - currentTime > waitTime)
            {
                behaviourObject.SetDesiredDirection();
                currState = TurretBehaviourDefinition.State.patrol;
            }
            else if (detector.isVisible)
            {
                currState = TurretBehaviourDefinition.State.chase;
            }
        } break;
        }
    }
Esempio n. 2
0
 // Start is called before the first frame update
 void Start()
 {
     behaviourObject = gameObject.GetComponentInParent <TurretBehaviourDefinition>();
     currState       = TurretBehaviourDefinition.State.patrol;
     detector        = GetComponentsInChildren <EnemyDetector>()[0];
 }