public EnemyChase(EnemyMove move, Transform enemyTransform, float chasingTime, float priorityDistance) { this.move = move; this.enemyTransform = enemyTransform; this.chasingTime = chasingTime; this.priorityDistance = priorityDistance; }
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; }
public EnemyComingHome(EnemyMove move, Transform enemyTransform, Vector3 homePoint) { this.move = move; this.enemyTransform = enemyTransform; this.homePoint = homePoint; }
public EnemyPatrolController(EnemyMove move, Transform local) { this.move = move; enemyTransform = local; }