public BotContext(BotStat stat, BotSense sense, Rigidbody2D rb2d, Transform transform, Transform aim, PatrolPoints patrolPoints, Weapon weapon) { this.stat = stat; this.sense = sense; this.rb2d = rb2d; this.transform = transform; this.aim = aim; this.patrolPoints = patrolPoints; this.weapon = weapon; }
private void Awake() { layerMask = layerMask |= (1 << LayerMask.NameToLayer("Node")); layerMask = layerMask |= (1 << LayerMask.NameToLayer("WorldObject")); sense = new BotSense(); senseBehaviour.sense = sense; switch (clan) { case Clan.Red: stat = new BotStat(MaxHP: 100f, MoveSpeed: 100f, ChaseSpeed: 150f, FleeSpeed: 175f, AttackRange: 4f, DetectionRange: 6f, ViewRange: 3f, LayerMask: layerMask, FriendTags: new List <string> { "Red" }, EnemyTags: new List <string> { "Blue" }, ObstacleTags: new List <string> { "WorldObject", "Red" }); break; case Clan.Blue: stat = new BotStat(MaxHP: 100f, MoveSpeed: 100f, ChaseSpeed: 150f, FleeSpeed: 175f, AttackRange: 4f, DetectionRange: 6f, ViewRange: 3f, LayerMask: layerMask, FriendTags: new List <string> { "Blue" }, EnemyTags: new List <string> { "Red" }, ObstacleTags: new List <string> { "WorldObject", "Blue" }); break; } weapon = GameObject.Instantiate(weapon, aim.transform, false); botCtx = new BotContext(stat, sense, GetComponent <Rigidbody2D>(), GetComponent <Transform>(), aim, new PatrolPoints(5), weapon); botCtx.stat.Health.OnDepleted += (System.Object sender, System.EventArgs eventArgs) => Destroy(this.gameObject); }