public virtual void Init(StatManager statManager, EnemyActionManager enemyActionManager) { this.statManager = statManager; this.enemyActionManager = enemyActionManager; players = new List <Player>(); enemies = new List <Enemy>(); }
public void Init(CharacterManager characterManager, StatManager statManager, EnemyActionManager enemyActionManager) { this.characterManager = characterManager; this.statManager = statManager; this.enemyActionManager = enemyActionManager; }
private void Awake() { // Wont need this just for clarification. if (_instance != null && _instance != this) { Destroy(this.gameObject); } else { // If the singleton hasn't been initialized yet _instance = this; } }
private static Vector2 AggressiveMove(Actor actor, Player target, float actDistance) { EnemyActionManager manager = actor.GetComponent <EnemyActionManager>(); SensorManager sensors = manager.sensorManager; SensorManager playerSensors = manager.PlayerManager.sensorManager; Actor player = manager.Player; float x = 0, y = 0; float input = WALK_INPUT; if (GetDistToPlayer(target, actor) > actDistance || !actor.Grounded) { input = RUN_INPUT; } if (target.transform.position.x > actor.transform.position.x) { x = -input; } else { x = input; } if (sensors.Front != null && sensors.Front.tag.Equals("Enemy")) { x = 0; } if (sensors.Front != null && sensors.Front.tag.Equals("Enemy") && (playerSensors.Front == null || playerSensors.Back == null)) { y = 1; } float dot = Vector3.Dot(actor.transform.forward, (player.transform.position - actor.transform.position).normalized); if (sensors.Front != null && sensors.Front.tag.Equals("Player") && player.State.Equals(ActorState.GRABBING) && playerSensors.Back == null && dot > 0.7f) { y = 1; // Extra help to get over actors actor.Rigidbody.AddForce((50 * Vector3.up), ForceMode.Impulse); } return(new Vector2(x, y)); }
public void Setup() { gameObject = new GameObject(); enemyActionManager = gameObject.AddComponent <EnemyActionManager>(); mockRandomGenerator = new Mock <RandomGenerator>(); mockPlayer = new Mock <Player>("name", 100, 1); mockEnemy = new Mock <Enemy>("name", 100, 1); mockAttack = new Mock <Attack>(null, 5, 5, null, null); mockDefend = new Mock <Defend>(null, 5, 5, null, null); mockPatternAction = new Mock <CharacterAction>(null, null, null); mockEnemy.Setup(enemy => enemy.Attack(mockPlayer.Object)).Returns(mockAttack.Object); mockEnemy.Setup(enemy => enemy.Defend(mockPlayer.Object)).Returns(mockDefend.Object); mockEnemy.Setup(enemy => enemy.NextActionFromPattern(mockPlayer.Object)) .Returns(mockPatternAction.Object); enemyActionManager.Init(mockRandomGenerator.Object); }
private static Vector2 AvoidMove(Actor actor, Player target, float actDistance) { EnemyActionManager manager = actor.GetComponent <EnemyActionManager>(); SensorManager sensors = manager.sensorManager; float x = 0, y = 0; float distToPlayer = GetDistToPlayer(target, actor); if (distToPlayer < actDistance - RUN_BUFFER) { float input = RUN_INPUT; x = target.transform.position.x > actor.transform.position.x ? input : -input; if (sensors.Front != null && sensors.Front.tag.Equals("Enemy") && actor.Grounded) { y = 1; } if (sensors.Back != null && sensors.Back.name.Contains("rope") || sensors.Front != null && sensors.Front.name.Contains("rope")) { x = 0; y = 0; } } else if (distToPlayer > actDistance + RUN_BUFFER) { float input = WALK_INPUT; x = target.transform.position.x < actor.transform.position.x ? input : -input; if (sensors.Front != null && sensors.Front.tag.Equals("Enemy")) { x = 0; } } return(new Vector2(x, y)); }