Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
    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);
    }