public static NPC CreateNPC(string npcName, string modelName, float x, float y, MapObject map) { GameObject sprite = Instantiate(Resources.Load <GameObject>("Characters/" + modelName)); sprite.tag = "NPC"; sprite.name = "NPC_" + npcName; sprite.layer = LayerMask.NameToLayer("Player & NPC"); // Add Animation Sprites to NPC object SpriteAnimator anim = sprite.GetComponent <SpriteAnimator>(); anim.Initialise(); SpriteRenderer renderer = sprite.GetComponent <SpriteRenderer>(); renderer.sortingOrder = (int)((map.MapHeight - y) * 100); renderer.transform.position = new Vector3(x, y, -0.09f); renderer.transform.localScale = new Vector3(1, 1, 1); renderer.sprite = anim.Sprites[1]; // Add Pathfinder to NPC sprite.AddComponent <PathFinder>(); // Add Polygon Collider and Rigid Body Rigidbody2D rb = sprite.AddComponent <Rigidbody2D>(); rb.bodyType = RigidbodyType2D.Dynamic; rb.freezeRotation = true; PolygonCollider2D pc = sprite.AddComponent <PolygonCollider2D>(); pc.isTrigger = true; // Add Box Collider for interactions BoxCollider2D bc = sprite.AddComponent <BoxCollider2D>(); bc.isTrigger = true; // Add Collision Controller sprite.AddComponent <CollisionController>(); // Return NPC GlobalObjects globalObjects = GameObject.FindGameObjectWithTag("Globals").GetComponent <GlobalObjects>(); return(new NPC(npcName, sprite, map, globalObjects)); }