예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }