// Update is called once per frame
    void Update()
    {
        if (currentState != null)
        {
            currentState.Execute();
        }

        if (Input.GetMouseButtonDown(0))
        {
            Vector2      position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            RaycastHit2D scan     = Physics2D.Raycast(position, Vector2.zero);

            if (scan)
            {
                StatefulEntity target = scan.transform.gameObject.GetComponent <StatefulEntity>();
                if (target && target != PlayerController.Instance)
                {
                    ChangeState(new ChaseAndAttackState(target));
                }
            }
        }
        else if (Input.GetMouseButtonDown(1))
        {
            Vector2 position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            ChangeState(new MoveCommandState(position));
        }
    }
Ejemplo n.º 2
0
 private void FindNearest()
 {
     companionHeading = Companion.transform.position - Shade.transform.position;
     playerHeading    = Player.transform.position - Shade.transform.position;
     if (companionHeading.sqrMagnitude < playerHeading.sqrMagnitude)
     {
         Nearest = Companion;
     }
     else
     {
         Nearest = Player;
     }
 }
Ejemplo n.º 3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        StatefulEntity entity = collision.gameObject.GetComponent <StatefulEntity>();

        if (entity)
        {
            if (entity.mortal && (friendlyFire || entity.gameObject.layer != attacker.gameObject.layer))
            {
                entity.Die();
                Destroy(gameObject);
            }
        }
    }
Ejemplo n.º 4
0
    void TargetMoved(StatefulEntity target)
    {
        var previousNearest = Nearest;

        FindNearest();

        if (Movement.IsMoving())
        {
            if (Nearest != previousNearest || Nearest == target)
            {
                FindPathToNearest();
            }
        }
    }
Ejemplo n.º 5
0
 public ChaseAndAttackState(StatefulEntity target)
 {
     Target = target;
 }
Ejemplo n.º 6
0
 public override RuleResult Create(Context context, ParameterList parameters, out StatefulEntity entity)
 {
     throw new NotImplementedException();
 }