コード例 #1
0
        public static void BuildAndInstantiate(PlayerFactoryOptions opts)
        {
            var playerObj = GameObject.Find(opts.UserId);

            if (playerObj == null)
            {
                // Player Obj
                playerObj = new GameObject(opts.UserId);
                playerObj.transform.localScale = new Vector3(100, 100);
                playerObj.tag = "Player";

                if (opts.IsMainPlayer)
                {
                    playerObj.AddComponent <PlayerBehaviour>();
                    UnityClient.Player.Speed        = opts.Speed;
                    UnityClient.Player.PlayerObject = playerObj;
                }

                // Body
                var bodyObj = new GameObject("body");
                bodyObj.transform.localScale = new Vector3(100, 100);
                var spriteRenderer = bodyObj.AddComponent <SpriteRenderer>();
                var spriteSheet    = bodyObj.AddComponent <SpriteSheet>();
                spriteRenderer.sortingOrder = 2;
                var bodySprite = AssetHandler.LoadedAssets[AssetHandler.BODIES];
                var spriteRow  = bodySprite.SliceRow(opts.SpriteIndex).ToArray();
                spriteSheet.SetSheet(spriteRow);
                spriteRenderer.sprite    = spriteSheet.WalkSouth[1];
                bodyObj.transform.parent = playerObj.transform;

                // LEGS
                var legsObj = new GameObject("legs");
                legsObj.transform.localScale = new Vector3(100, 100);
                var legsSpriteRenderer = legsObj.AddComponent <SpriteRenderer>();
                var legsSpriteSheet    = legsObj.AddComponent <SpriteSheet>();
                legsSpriteRenderer.sortingOrder = 3;
                var legsSprite    = AssetHandler.LoadedAssets[AssetHandler.LEGS];
                var legsSpriteRow = legsSprite.SliceRow(opts.SpriteIndex).ToArray();
                legsSpriteSheet.SetSheet(legsSpriteRow);
                legsSpriteRenderer.sprite = legsSpriteSheet.WalkSouth[1];
                legsObj.transform.parent  = playerObj.transform;

                // Chest
                var chestObj = new GameObject("chest");
                chestObj.transform.localScale = new Vector3(100, 100);
                var chestSpriteRenderer = chestObj.AddComponent <SpriteRenderer>();
                var chestSpriteSheet    = chestObj.AddComponent <SpriteSheet>();
                chestSpriteRenderer.sortingOrder = 4;
                var chestSprite    = AssetHandler.LoadedAssets[AssetHandler.CHESTS];
                var chestSpriteRow = chestSprite.SliceRow(opts.SpriteIndex).ToArray();
                chestSpriteSheet.SetSheet(chestSpriteRow);
                chestSpriteRenderer.sprite = chestSpriteSheet.WalkSouth[1];
                chestObj.transform.parent  = playerObj.transform;

                // Head
                var headObj = new GameObject("head");
                headObj.transform.localScale = new Vector3(100, 100);
                var headSpriteRenderer = headObj.AddComponent <SpriteRenderer>();
                var headSpriteSheet    = headObj.AddComponent <SpriteSheet>();
                headSpriteRenderer.sortingOrder = 5;
                var headSprite    = AssetHandler.LoadedAssets[AssetHandler.HEADS];
                var headSpriteRow = headSprite.SliceRow(opts.SpriteIndex).ToArray();
                headSpriteSheet.SetSheet(headSpriteRow);
                headSpriteRenderer.sprite = headSpriteSheet.WalkSouth[1];
                headObj.transform.parent  = playerObj.transform;

                // This gotta be in the end
                playerObj.transform.position = new Vector2(opts.tileX * 16, opts.tileY * 16);

                if (!opts.IsMainPlayer)
                {
                    var movingEntity = playerObj.AddComponent <MovingEntityBehaviour>();
                    movingEntity.Speed       = opts.Speed;
                    movingEntity.MapPosition = new Position(opts.tileX, opts.tileY);
                    movingEntity.SpriteSheets.Add(spriteSheet);
                    movingEntity.SpriteSheets.Add(headSpriteSheet);
                    movingEntity.SpriteSheets.Add(legsSpriteSheet);
                    movingEntity.SpriteSheets.Add(chestSpriteSheet);
                }
            }
        }
コード例 #2
0
        public static void BuildAndInstantiate(PlayerFactoryOptions opts)
        {
            var playerObj = GameObject.Find(opts.UserId);

            if (playerObj == null)
            {
                // Player Obj
                playerObj = new GameObject(opts.UserId);
                playerObj.transform.localScale = new Vector3(100, 100);
                playerObj.tag = "Player";
                FactoryMethods.AddCollider(playerObj);

                // Body
                var bodyObj = new GameObject("body");
                bodyObj.transform.localScale = new Vector3(100, 100);
                var spriteRenderer = bodyObj.AddComponent <SpriteRenderer>();
                var spriteSheet    = bodyObj.AddComponent <SpriteSheet>();
                spriteRenderer.sortingOrder = 2;
                var bodySprite = AssetHandler.LoadedAssets[DefaultAssets.SPR_BODIES];
                var spriteRow  = bodySprite.SliceRow(opts.BodySpriteIndex).ToArray();
                spriteSheet.SetSheet(spriteRow);
                spriteRenderer.sprite    = spriteSheet.WalkSouth[1];
                bodyObj.transform.parent = playerObj.transform;

                // LEGS
                var legsObj = new GameObject("legs");
                legsObj.transform.localScale = new Vector3(100, 100);
                var legsSpriteRenderer = legsObj.AddComponent <SpriteRenderer>();
                var legsSpriteSheet    = legsObj.AddComponent <SpriteSheet>();
                legsSpriteRenderer.sortingOrder = 3;
                var legsSprite    = AssetHandler.LoadedAssets[DefaultAssets.SPR_LEGS];
                var legsSpriteRow = legsSprite.SliceRow(opts.LegsSpriteIndex).ToArray();
                legsSpriteSheet.SetSheet(legsSpriteRow);
                legsSpriteRenderer.sprite = legsSpriteSheet.WalkSouth[1];
                legsObj.transform.parent  = playerObj.transform;

                // Chest
                var chestObj = new GameObject("chest");
                chestObj.transform.localScale = new Vector3(100, 100);
                var chestSpriteRenderer = chestObj.AddComponent <SpriteRenderer>();
                var chestSpriteSheet    = chestObj.AddComponent <SpriteSheet>();
                chestSpriteRenderer.sortingOrder = 4;
                var chestSprite    = AssetHandler.LoadedAssets[DefaultAssets.SPR_CHESTS];
                var chestSpriteRow = chestSprite.SliceRow(opts.ChestSpriteIndex).ToArray();
                chestSpriteSheet.SetSheet(chestSpriteRow);
                chestSpriteRenderer.sprite = chestSpriteSheet.WalkSouth[1];
                chestObj.transform.parent  = playerObj.transform;

                // Head
                var headObj = new GameObject("head");
                headObj.transform.localScale = new Vector3(100, 100);
                var headSpriteRenderer = headObj.AddComponent <SpriteRenderer>();
                var headSpriteSheet    = headObj.AddComponent <SpriteSheet>();
                headSpriteRenderer.sortingOrder = 5;
                var headSprite    = AssetHandler.LoadedAssets[DefaultAssets.SPR_HEADS];
                var headSpriteRow = headSprite.SliceRow(opts.HeadSpriteIndex).ToArray();
                headSpriteSheet.SetSheet(headSpriteRow);
                headSpriteRenderer.sprite = headSpriteSheet.WalkSouth[1];
                headObj.transform.parent  = playerObj.transform;

                playerObj.transform.parent = UnityExtensions.GetEntitiesContainer().transform;

                // This gotta be in the end
                playerObj.transform.position = opts.Position.ToUnityPosition();

                var playerWrapper = new PlayerWrapper()
                {
                    PlayerObject = playerObj,
                    EntityType   = EntityType.PLAYER,
                    MoveSpeed    = opts.Speed,
                    Position     = opts.Position,
                    UID          = opts.UserId,
                };

                if (opts.IsMainPlayer)
                {
                    playerWrapper.Behaviour = playerObj.AddComponent <PlayerBehaviour>();
                    playerWrapper.SessionId = UnityClient.Player.SessionId;
                    UnityClient.Player      = playerWrapper;
                }
                else
                {
                    playerWrapper.Behaviour = playerObj.AddComponent <LivingEntityBehaviour>();
                }

                playerWrapper.Behaviour.SpriteSheets.Add(spriteSheet);
                playerWrapper.Behaviour.SpriteSheets.Add(headSpriteSheet);
                playerWrapper.Behaviour.SpriteSheets.Add(legsSpriteSheet);
                playerWrapper.Behaviour.SpriteSheets.Add(chestSpriteSheet);

                playerWrapper.Behaviour.Entity = playerWrapper;

                UnityClient.Map.UpdateEntityPosition(playerWrapper, null, opts.Position);
            }
        }