Example #1
0
 public EnemyChase(EnemyMove move, Transform enemyTransform, float chasingTime, float priorityDistance)
 {
     this.move             = move;
     this.enemyTransform   = enemyTransform;
     this.chasingTime      = chasingTime;
     this.priorityDistance = priorityDistance;
 }
Example #2
0
        public void EnemyControllerAwake()
        {
            alive      = true;
            onPatrol   = false;
            onIdle     = false;
            inChase    = false;
            inFight    = false;
            comingHome = false;

            RouteGenerator = new RouteCompile();
            Dying          = new EnemyDie(enemyTransform);
            Move           = new EnemyMove(agent, CharacterModel, rb);
            if (spec.Type == "Range")
            {
                Chasing = new EnemyChase(Move, enemyTransform, spec.ChasingTime, spec.RangeDistance);
            }
            else if (spec.Type == "Melee")
            {
                Chasing = new EnemyChase(Move, enemyTransform, spec.ChasingTime, spec.MeleeDistance);
            }
            Patroling  = new EnemyPatrolController(Move, enemyTransform);
            Idle       = new EnemyIdleController(enemyTransform);
            ComingHome = new EnemyComingHome(Move, enemyTransform, homePoint);
            if (spec.Type == "Range")
            {
                Fight = new EnemyFightController(Move, enemyTransform, gun, knife, gunBarrelEnd, shootLine,
                                                 spec.RangeDistance, spec.MeleeDistance, spec.RangeDamage, spec.RangeAccuracy, spec.ShootSpeed,
                                                 spec.MeleeDamage, spec.HitSpeed, gunShotSound);
            }
            if (spec.Type == "Melee")
            {
                Fight = new EnemyFightController(Move, enemyTransform, gun, knife, gunBarrelEnd, shootLine,
                                                 spec.RangeDistance, spec.MeleeDistance, spec.RangeDamage, spec.RangeAccuracy, spec.ShootSpeed,
                                                 spec.MeleeDamage, spec.HitSpeed, gunShotSound);
            }
            Hurt = new EnemyHurt(headMesh);

            ///<summary>
            ///подписка на события
            /// </summary>
            EnemyPatrolController.PatrolEvent += PatrolWaiter;
            EnemyIdleController.IdleEvent     += IdleWaiter;
            EnemyChase.ChaseEvent             += FinishChase;
            EnemyChase.AttackSwitchEvent      += AttackModeOn;
            Enemy.SeeEvent    += StartChase;
            Enemy.DamageEvent += TakeDamage;
            EnemyComingHome.ComingHomeEvent         += AtHome;
            EnemyFightController.AttackToChaseEvent += AttackModeOff;
            CheckHealth += CharacterHealthCheck;
        }
        private float timer;                   //Основной задейсвованный таймер (Скорость стрельбы)

        /// <summary>
        ///     Конструктор класса
        /// </summary>
        /// <param name="move"></param>
        /// <param name="enemyTransform"></param>
        /// <param name="gun"></param>
        /// <param name="knife"></param>
        /// <param name="gunBarrelEnd"></param>
        /// <param name="shootLine"></param>
        /// <param name="priorityDistance"></param>
        /// <param name="alternativeDistance"></param>
        /// <param name="runSpeed"></param>
        /// <param name="rangeDamage"></param>
        /// <param name="rangeAccuracy"></param>
        /// <param name="shootSpeed"></param>
        /// <param name="meleeDamage"></param>
        /// <param name="hitSpeed"></param>
        /// <param name="gunShotSound"></param>
        public EnemyFightController(EnemyMove move, Transform enemyTransform, MeshRenderer gun, MeshRenderer knife,
                                    Transform gunBarrelEnd, LineRenderer shootLine, float priorityDistance, float alternativeDistance,
                                    float rangeDamage, float rangeAccuracy, float shootSpeed, float meleeDamage, float hitSpeed,
                                    AudioSource gunShotSound)
        {
            this.move                = move;
            this.enemyTransform      = enemyTransform;
            this.shootLine           = shootLine;
            this.priorityDistance    = priorityDistance;
            this.alternativeDistance = alternativeDistance;
            switchDistance           = Mathf.Abs(priorityDistance - alternativeDistance) / 2;
            currentAttackDistance    = priorityDistance;
            this.rangeDamage         = rangeDamage;
            this.rangeAccuracy       = rangeAccuracy;
            this.shootSpeed          = shootSpeed;
            this.gun          = gun;
            this.knife        = knife;
            this.gunBarrelEnd = gunBarrelEnd;
            this.gunShotSound = gunShotSound;
            this.meleeDamage  = meleeDamage;
            this.hitSpeed     = hitSpeed;
            hitChance         = rangeAccuracy;
            missChance        = 10 - rangeAccuracy;
        }
Example #4
0
 public EnemyComingHome(EnemyMove move, Transform enemyTransform, Vector3 homePoint)
 {
     this.move           = move;
     this.enemyTransform = enemyTransform;
     this.homePoint      = homePoint;
 }
Example #5
0
 public EnemyPatrolController(EnemyMove move, Transform local)
 {
     this.move      = move;
     enemyTransform = local;
 }