private void OnCollisionEnter2D(Collision2D collision)
    {
        if (gameObject.layer == LayerMask.NameToLayer("Npc") &&
            (collision.gameObject.layer == LayerMask.NameToLayer("team_1") || collision.gameObject.layer == LayerMask.NameToLayer("team_2")))
        {
            OnJoinsBlob.Invoke();

            int team = collision.gameObject.layer == LayerMask.NameToLayer("team_1") ? 0 : 1;
            gameObject.layer = collision.gameObject.layer;

            controller.enabled = true;

            NPCBlobConroller other = collision.gameObject.GetComponent <NPCBlobConroller>();

            controller.targetPc = other != null ? other.targetPc : collision.gameObject.GetComponent <PlayerController>();

            //FIXME sometimes happens, unclear consequences
            if (controller.targetPc == null)
            {
                return;
            }
            transform.SetParent(controller.targetPc.getTargetTransform());
            controller.i = ++controller.targetPc.childrenCount;

            controller.glueOffset = transform.position - controller.targetPc.transform.position;
            controller.team       = team;

            controller.setTint(GameManager.getManager().players[team].teamColor);

            enabled = false;
        }
    }
Ejemplo n.º 2
0
 private void stunController(NPCBlobConroller otherController)
 {
     if (otherController != null)
     {
         otherController.stun();
     }
 }
Ejemplo n.º 3
0
 private void killController(NPCBlobConroller otherController)
 {
     if (otherController != null)
     {
         otherController.kill();
     }
 }
 // Start is called before the first frame update
 void Start()
 {
     coll       = GetComponent <Collider2D>();
     controller = GetComponent <NPCBlobConroller>();
 }