public static void BuildAndInstantiate(MonsterFactoryOpts opts) { var monsterObj = GameObject.Find(opts.MonsterUid); if (monsterObj == null) { monsterObj = new GameObject(opts.MonsterUid); monsterObj.transform.localScale = new Vector3(100, 100); FactoryMethods.AddCollider(monsterObj); var spriteRenderer = monsterObj.AddComponent <SpriteRenderer>(); var spriteSheet = monsterObj.AddComponent <SpriteSheet>(); spriteRenderer.sortingOrder = 2; var bodySprite = AssetHandler.LoadedAssets[DefaultAssets.SPR_MONTERS_1]; var spriteRow = bodySprite.SliceRow(opts.SpriteIndex).ToArray(); spriteSheet.SetSheet(spriteRow, rowSize: 2); spriteRenderer.sprite = spriteSheet.WalkSouth[1]; var movingBehaviour = monsterObj.AddComponent <MovingEntityBehaviour>(); movingBehaviour.SpriteSheets.Add(spriteSheet); movingBehaviour.MoveSpeed = opts.MoveSpeed; movingBehaviour.MapPosition = opts.Position; var monsterEntityWrapper = new MonsterWrapper() { MonsterObj = monsterObj }; movingBehaviour.EntityWrapper = monsterEntityWrapper; monsterObj.transform.position = new Vector2(opts.Position.X * 16, -opts.Position.Y * 16); UnityClient.Map.EntityPositions.AddEntity(monsterEntityWrapper, opts.Position); } }
public static void BuildAndInstantiate(MonsterFactoryOpts opts) { var monsterObj = GameObject.Find(opts.Packet.MonsterUid); if (monsterObj == null) { monsterObj = new GameObject(opts.Packet.MonsterUid); monsterObj.transform.localScale = new Vector3(100, 100); var spriteObj = new GameObject("Sprites_" + opts.Packet.MonsterUid); spriteObj.transform.localScale = new Vector3(100, 100); var spriteRenderer = spriteObj.AddComponent <SpriteRenderer>(); var spriteSheet = spriteObj.AddComponent <SpriteSheet>(); spriteRenderer.sortingOrder = 2; var bodySprite = AssetHandler.LoadedAssets[DefaultAssets.SPR_MONTERS_1]; var spriteRow = bodySprite.SliceRow(opts.Packet.SpriteIndex).ToArray(); spriteSheet.SetSheet(spriteRow, rowSize: 2); spriteRenderer.sprite = spriteSheet.WalkSouth[1]; spriteObj.transform.parent = monsterObj.transform; // Moving Entity var livingEntityBhv = monsterObj.AddComponent <LivingEntityBehaviour>(); livingEntityBhv.SpriteSheets.Add(spriteSheet); var monsterEntityWrapper = new MonsterWrapper() { MonsterObj = monsterObj, EntityType = EntityType.MONSTER, MoveSpeed = opts.Packet.MoveSpeed, UID = opts.Packet.MonsterUid, Position = opts.Position, Atk = opts.Packet.Atk, Def = opts.Packet.Def, HP = opts.Packet.HP, MAXHP = opts.Packet.MAXHP }; monsterObj.transform.parent = UnityExtensions.GetEntitiesContainer().transform; livingEntityBhv.Entity = monsterEntityWrapper; monsterObj.transform.position = opts.Position.ToUnityPosition(); UnityClient.Map.UpdateEntityPosition(monsterEntityWrapper, null, opts.Position); FactoryMethods.AddCollider(monsterObj); FactoryMethods.AddHealthBar(monsterObj); } }