Exemple #1
0
 public FollowingTarget(Fsm fsm, AudioClip tryingToOpenDoorSound, Func <float> brokeDoorPercentage,
                        float waitWhenWaking) : base(fsm)
 {
     this.tryingToOpenDoorSound = tryingToOpenDoorSound;
     this.brokeDoorPercentage   = brokeDoorPercentage;
     this.waitWhenWaking        = waitWhenWaking;
     enemyFsm = fsm as EnemyFsm;
 }
    void Awake()
    {
        var volume = FindObjectOfType <Volume>();

        volume.profile.TryGet(out shadowsMidtonesHighlights);
        shadowsMidtonesHighlights.active = false;
        mover     = GetComponent <Mover>();
        fsm       = GetComponent <EnemyFsm>();
        inventary = player.GetComponent <CharacterInventary>();
        animator  = GetComponentInChildren <Animator>();
    }
Exemple #3
0
 void Start()
 {
     animator = GetComponent <Animator>();
     _FSM     = new EnemyFsm(this);
     _FSM.SetState(new EnemyIdle(_FSM));
     meshAgent = transform.parent.GetComponent <NavMeshAgent>();
     lifeValue = maxLifeValue;
     StartCoroutine(ReduceLifeImage());
     lifeRedImage.fillAmount    = 1;
     lifeYellowImage.fillAmount = 1;
 }
Exemple #4
0
    public EnemyFsm(GameObject spawnParent)
        : base()
    {
        onlyInstance = this;

        DebugLog("Spawning enemy : " + this.GetType());

        enemyParent = GameObject.Find("EnemyParent");

        damage = 5f;

        this.spawnParent = spawnParent;

        Start();

        SwapState(new InitState(this));
    }
Exemple #5
0
    public EnemyRun(EnemyFsm FSM)
    {
        this.FSM = FSM;
        FSM.enemy.animator.SetInteger("State", 3);
        // 生成器的中心与半径range的计算得到在此范围内的随机坐标
        Vector3 temp = new Vector3
                       (
            UnityEngine.Random.Range(FSM.enemy.monsterCreatorCenter.x - FSM.enemy.range.x, FSM.enemy.monsterCreatorCenter.x + FSM.enemy.range.x),
            FSM.enemy.monsterCreatorCenter.y,
            UnityEngine.Random.Range(FSM.enemy.monsterCreatorCenter.z - FSM.enemy.range.z, FSM.enemy.monsterCreatorCenter.z + FSM.enemy.range.z)
                       );
        Ray ray = new Ray(temp, Vector3.down);

        if (Physics.Raycast(ray, out RaycastHit hit, LayerMask.GetMask("Map")))
        {
            FSM.enemy.meshAgent.SetDestination(hit.point);
            target = hit.point;
        }
Exemple #6
0
 public EnemyIdle(EnemyFsm enemyFsm)
 {
     FSM = enemyFsm;
     FSM.enemy.animator.SetInteger("State", 0);
     timer = UnityEngine.Random.Range(2, 8);
 }
Exemple #7
0
 public EnemyGetHit(EnemyFsm enemyFsm)
 {
     FSM = enemyFsm;
     FSM.enemy.animator.SetInteger("State", 4);
     enemyFsm.enemy.AddAnimationEvent("EndPlayGetHitAnimation", "GetHit");
 }
 public void RemoveFromList(EnemyFsm enemy)
 {
     activeSpawns.Remove(enemy);
 }
Exemple #9
0
 public InitState(EnemyFsm parent)
     : base(parent)
 {
     this.parent = parent;
 }
Exemple #10
0
 public DeadState(EnemyFsm parent)
     : base(parent)
 {
     this.parent = parent;
 }
 public void SetEnemy(EnemyFsm enemy)
 {
     this.enemy = enemy;
 }
Exemple #12
0
 protected override void Start()
 {
     // Add States here.
     EnemyFsm.AddToStateList((int)ESimpleStates.PATROL, new ESimplePatrol());
 }