void Awake()
 {
     search    = GetComponent <SearchingState>();                    //we make search hold a reference of the SearchState script
     inASearch = false;                                              //Set the searching state false by default
     attack    = GetComponent <AttackingState>();
     player    = GameObject.FindGameObjectWithTag("Player");
 }
Example #2
0
 private void SwitchToNormalAttack()
 {
     Move(MovementRef.PlayerPosition);
     CurrentAttackingState = AttackingState.NormalAttack;
     SwitchAttackTimer     = Time.time + NormalAttackDuration;
     BodyRenderer.material.SetColor("_EmissiveColor", NormalColour);
 }
Example #3
0
    private Vector3 goalPos;                          //The current goal position

    void Awake()
    {
        //SEARCHING INSTANTIATION CODE
        search    = GetComponent <SearchingState>();                    //we make search hold a reference of the SearchState script
        inASearch = false;                                              //Set the searching state false by default

        //GEMS INSTANTIATION CODE
        gemTracker   = gemTrackerObject.GetComponent <GemTracker>();            //This is to allows us to keep track of gems
        gemPositions = new List <Vector3>();                                    //create new list of Vector3 positions for the gems
        searchNewGem = true;                                                    //set the searchNewGem to true upon start
        closestGem   = new Vector3();

        //SIGHT INSTANTIATION CODE
        sight = GetComponent <SightController>();

        //ATTACKING INSTANTIATION CODE
        attack = GetComponent <AttackingState>();
        player = GameObject.FindGameObjectWithTag("Player");

        //HEALTH INSTANTIATION CODE
        health = GetComponent <NPC1Health>();

        //CHASE INSTANTIATION CODE
        chasing = false;

        //PLAYER DETECTION INSTANTIATION CODE
        playerDetectionTimer = 3f;
        playerPos            = new Vector3();

        //FLEEING INSTATIATION CODE
        escapePos = new Vector3();
        goalPos   = new Vector3();
        fleeing   = false;
    }
    private void Awake()
    {
        chasingState   = new ChasingState(this);
        idleState      = new EnemyIdleState(this);
        returningState = new ReturningState(this);
        attackingState = new AttackingState(this);
        visiblePlayers = new List <GameObject>();

        returnPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z);

        eyes         = transform.FindChild("Eyes");
        health       = GetComponent <EnemyHealth>();
        attack       = GetComponent <EnemyAttack>();
        sounds       = GetComponent <EnemySoundController>();
        animator     = GetComponent <EnemyAnimationController>();
        navMeshAgent = GetComponent <NavMeshAgent>();

        isTargetting = false;

        if (transform.parent.CompareTag("EnemyMob"))
        {
            mobKnowledge = GetComponentInParent <EnemyMobKnowledge>();
        }

        tm = GameObject.FindWithTag("TeamManager").GetComponent <TeamManager>();
    }
Example #5
0
    private void ChangeToEventAttack()
    {
        int i = Random.Range(0, 100);

        CurrentAttackingState = i > 50f ? AttackingState.Spawning : AttackingState.StarAttack;
        NormalColour          = BodyRenderer.material.GetColor("_EmissiveColor");
        BodyRenderer.material.SetColor("_EmissiveColor", new Color32(255, 0, 83, 255));

        playAttackSoundEffect = true;
    }
Example #6
0
 private void Start()
 {
     rb = gameObject.GetComponent <Rigidbody>();
     floatingName.text = tankName;
     tankSide          = TankSides.Enemy;
     patrolling        = GetComponent <PatrollingState>();
     attacking         = GetComponent <AttackingState>();
     currentState      = patrolling;
     SetNewCoordinates();
 }
Example #7
0
 public void HitBy(AttackingState attackingState)
 {
     Health--;
     bar.OnUpdate(Health);
     foreach (var mat in meshRenderer.materials)
     {
         mat.SetFloat(propName, Mathf.Lerp(zeroHealthVal, fullHealthVal, (float)Health / (float)StartingHealth));
     }
     if (Health == 0)
     {
         Die();
     }
 }
Example #8
0
    // Use this for initialization
    protected override void Awake()
    {
        base.Awake();

        //Setup states
        PatrollingState patrollingState = gameObject.AddComponent <PatrollingState>();

        patrollingState.SetNodes(m_patrollingNodes);
        patrollingState.SetMovementVelocity(m_forwardVelocity);

        MoveTowardsState moveTowardsState = gameObject.AddComponent <MoveTowardsState>();

        moveTowardsState.SetMovementVelocity(m_forwardVelocity);

        InvestigateState investigateState = gameObject.AddComponent <InvestigateState>();

        investigateState.SetMovementVelocity(m_forwardVelocity);

        IdleState idleState = gameObject.AddComponent <IdleState>();

        idleState.SetRandomTime(m_idleMinTime, m_idleMaxTime);

        AttackingState attackingState = gameObject.AddComponent <AttackingState>();

        FleeingState fleeingState = gameObject.AddComponent <FleeingState>();

        fleeingState.SetMovementVelocity(m_forwardVelocity);
        fleeingState.SetFleeingMaxTime(m_fleeingMaxTime);

        //Assigning transitons
        patrollingState.AddInterruptTransition(TargetSightTransition.CreateComponent(gameObject, m_detectionRange), moveTowardsState);

        moveTowardsState.AddInterruptTransition(NotTransition.CreateComponent(gameObject, TargetSightTransition.CreateComponent(gameObject, m_detectionRange)), investigateState);
        moveTowardsState.AddInterruptTransition(TargetWithinRangeTransition.CreateComponent(gameObject, m_attackingRange), attackingState);

        investigateState.AddEndTransition(BaseTransition.CreateComponent(gameObject), idleState);
        investigateState.AddInterruptTransition(TargetSightTransition.CreateComponent(gameObject, m_detectionRange), moveTowardsState);

        idleState.AddEndTransition(BaseTransition.CreateComponent(gameObject), patrollingState);
        idleState.AddInterruptTransition(TargetSightTransition.CreateComponent(gameObject, m_detectionRange), moveTowardsState);

        attackingState.AddEndTransition(BaseTransition.CreateComponent(gameObject), fleeingState);

        fleeingState.AddEndTransition(BaseTransition.CreateComponent(gameObject), moveTowardsState);
        fleeingState.AddInterruptTransition(NotTransition.CreateComponent(gameObject, TargetWithinRangeTransition.CreateComponent(gameObject, m_fleeingDistance)), moveTowardsState);

        //Setup intial state
        GetComponent <StateManager>().SetInitialState(patrollingState);
    }
Example #9
0
    public override void ConfigFSM()
    {
        base.ConfigFSM();
        states = new List <FSMState>();
        //创建状态对象
        //添加映射(AddMap)*
        //加入状态机
        //--------------------
        //随机移动
        RandomMoveState randomMove = new RandomMoveState();

        randomMove.AddMap(FSMTriggerID.ScoutedTargetIn, FSMStateID.Follow);
        randomMove.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        states.Add(randomMove);
        //跟随
        FollowState follow = new FollowState();

        follow.AddMap(FSMTriggerID.ScoutedTargetOut, FSMStateID.RandomMove);
        follow.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        follow.AddMap(FSMTriggerID.AttackTargetIn, FSMStateID.Attacking);
        states.Add(follow);
        //攻击
        AttackingState attacking = new AttackingState();

        attacking.AddMap(FSMTriggerID.AttackTargetOut, FSMStateID.Follow);
        attacking.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        states.Add(attacking);
        //站立
        IdleState idle = new IdleState();

        //idle.AddMap(FSMTriggerID.)
        idle.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        states.Add(idle);
        //死亡
        DeadState dead = new DeadState();

        states.Add(dead);
    }
Example #10
0
    //配置状态机
    private void ConfigFSM()
    {
        states = new List <FSMState>();

        IdleState idle = new IdleState();

        idle.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        idle.AddMap(FSMTriggerID.SawTarget, FSMStateID.Pursuit);
        states.Add(idle);

        DeadState dead = new DeadState();

        states.Add(dead);


        PursuitState pursuit = new PursuitState();

        pursuit.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        pursuit.AddMap(FSMTriggerID.ReachTarget, FSMStateID.Attacking);
        pursuit.AddMap(FSMTriggerID.LoseTarget, FSMStateID.Default);
        states.Add(pursuit);


        AttackingState attacking = new AttackingState();

        attacking.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        attacking.AddMap(FSMTriggerID.WithoutAttackRange, FSMStateID.Pursuit);
        attacking.AddMap(FSMTriggerID.KilledTarget, FSMStateID.Default);
        states.Add(attacking);


        PatrollingState patrolling = new PatrollingState();

        patrolling.AddMap(FSMTriggerID.NoHealth, FSMStateID.Dead);
        patrolling.AddMap(FSMTriggerID.SawTarget, FSMStateID.Pursuit);
        patrolling.AddMap(FSMTriggerID.CompletePatrol, FSMStateID.Idle);
        states.Add(patrolling);
    }
Example #11
0
    private void MakeFSM()
    {
        PatrollingState patrolling = new PatrollingState (this);
        patrolling.AddTransition(Transition.poiInSight, StateID.Chasing);
        patrolling.AddTransition(Transition.isDestroyed, StateID.Destroyed);

        ChasingState chasing = new ChasingState(this);
        chasing.AddTransition(Transition.poiLost, StateID.Patroling);
        chasing.AddTransition(Transition.poiInFireingRange, StateID.Attacking);
        chasing.AddTransition(Transition.isDestroyed, StateID.Destroyed);

        AttackingState attacking = new AttackingState(this);
        attacking.AddTransition(Transition.poiLost, StateID.Patroling);
        attacking.AddTransition(Transition.isDestroyed, StateID.Destroyed);

        DestroyedState destroyed = new DestroyedState(this);

        fsm = new FSMSystem();
        fsm.AddState(patrolling);
        fsm.AddState(chasing);
        fsm.AddState(attacking);
        fsm.AddState(destroyed);
    }
Example #12
0
 private void Awake()
 {
     attackingState = new AttackingState(this);
     neutralState   = new NeutralState(this);
     navMeshAgent   = GetComponent <NavMeshAgent> ();
 }