示例#1
0
 // Use this for initialization
 void Awake()
 {
     charController = GetComponent <HumanCharacterController>();
 }
示例#2
0
        public override void SetUp()
        {
            base.SetUp();

            //this.Context.Map = BinTileMapSerializer.Load("editor.map");

            /*if (File.Exists("landscape.map"))
             * {
             *  this.Context.Map = BinTileMapSerializer.Load("landscape.map");
             * }
             * else
             * {
             *  this.GenerateTerrain();
             *  BinTileMapSerializer.Save("landscape.map", this.Context.Map);
             * }*/
            this.Context.Map.SaveToImage(this.Graphics, "map.png");

            this.characters.GetOrAdd("Cat", (name) => new Character(name)
            {
                JumpPower     = 500f,
                WalkSpeed     = 400f,
                RunSpeed      = 500f,
                ClimbSpeed    = 300f,
                WalkMaxSpeed  = 150f,
                RunMaxSpeed   = 250f,
                ClimbMaxSpeed = 100f,
                WaterModifier = 0.4f,
                SwimPower     = 200f,
                Sprite        = Store.Instance.Sprites <NamedAnimatedSpriteSheetTemplate>("Base", "player.cat"),
                Bounds        = new RectangleF(Point2.Zero, new Size2(8, 16)),
            });

            this.characters.GetOrAdd("Bear", (name) => new Character(name)
            {
                JumpPower     = 400f,
                WalkSpeed     = 300f,
                RunSpeed      = 400f,
                ClimbSpeed    = 300f,
                WalkMaxSpeed  = 100f,
                RunMaxSpeed   = 150f,
                ClimbMaxSpeed = 100f,
                WaterModifier = 0.4f,
                SwimPower     = 200f,
                Sprite        = Store.Instance.Sprites <NamedAnimatedSpriteSheetTemplate>("Base", "player.bear"),
                Bounds        = new RectangleF(Point2.Zero, new Size2(8, 16)),
            });

            this.characters.GetOrAdd("Pig", (name) => new Character(name)
            {
                JumpPower     = 450f,
                WalkSpeed     = 350f,
                RunSpeed      = 450f,
                ClimbSpeed    = 300f,
                WalkMaxSpeed  = 125f,
                RunMaxSpeed   = 175f,
                ClimbMaxSpeed = 100f,
                WaterModifier = 0.4f,
                SwimPower     = 200f,
                Sprite        = Store.Instance.Sprites <NamedAnimatedSpriteSheetTemplate>("Base", "player.pig"),
                Bounds        = new RectangleF(Point2.Zero, new Size2(8, 16)),
            });

            this.characters.GetOrAdd("Girl", (name) => new Character(name)
            {
                JumpPower     = 450f,
                WalkSpeed     = 350f,
                RunSpeed      = 450f,
                ClimbSpeed    = 300f,
                WalkMaxSpeed  = 125f,
                RunMaxSpeed   = 175f,
                ClimbMaxSpeed = 100f,
                WaterModifier = 0.4f,
                SwimPower     = 200f,
                Sprite        = Store.Instance.Sprites <NamedAnimatedSpriteSheetTemplate>("Base", "player.girl"),
                Bounds        = new RectangleF(Point2.Zero, new Size2(12, 20)),
            });

            this.characters.GetOrAdd("Worm", (name) => new Enemy(name)
            {
                WalkSpeed     = 270f,
                RunSpeed      = 270f,
                WalkMaxSpeed  = 25f,
                RunMaxSpeed   = 25f,
                WaterModifier = 0.4f,
                Sprite        = Store.Instance.Sprites <NamedAnimatedSpriteSheetTemplate>("Base", "enemy.worm"),
                Bounds        = new RectangleF(Point2.Zero, new Size2(17, 18)),
            });

            var controller = new HumanCharacterController();

            controller[HumanActions.Jump]        = new KeyboardAction(Keys.Space);
            controller[HumanActions.Swim]        = new KeyboardAction(Keys.Space);
            controller[HumanActions.WalkLeft]    = new KeyboardAction(Keys.A);
            controller[HumanActions.WalkRight]   = new KeyboardAction(Keys.D);
            controller[HumanActions.RunModifier] = new OrAction(new KeyboardAction(Keys.LeftShift), new KeyboardAction(Keys.RightShift));
            controller[HumanActions.Squat]       = new KeyboardAction(Keys.S);

            this.player            = new CharacterObject(this.Context);
            this.player.Character  = this.characters["Cat"];
            this.player.Controller = controller;
            if (this.Context.Spawn.Any())
            {
                var random = new Random();
                var spawn  = random.Choice(this.Context.Spawn);
                this.player.Position3D = new Vector3(spawn.World.X, spawn.World.Y, 0.5f);
            }
            else
            {
                this.player.Position3D = new Vector3(0, 0, 0.5f);
            }
            this.player.IsGravityEnabled = !this.godMode;
            this.Context.AddObject(this.player);
            this.Context.AttachLightSource(this.player, new Light
            {
                RelativePosition = new Vector2(this.player.Bounds.Width / 2, this.player.Bounds.Height / 2),
                Colour           = Color.Yellow
            });

            var enemy = new CharacterObject(this.Context);

            enemy.Character        = this.characters["Worm"];
            enemy.Controller       = new EnemyController();
            enemy.Position3D       = this.player.Position3D;
            enemy.IsGravityEnabled = true;
            enemy.Direction        = CharacterObject.Facing.Right;
            this.Context.AddObject(enemy);

            /*var npc = new CharacterObject(this.Context);
             * npc.Character = this.characters["Bear"];
             * npc.Controller = new ComputerController();
             * npc.Position3D = new Vector3(1280, startY, 0.5f);
             * npc.IsGravityEnabled = true;
             * npc.Direction = CharacterObject.Facing.Right;
             * this.Context.AddObject(npc);
             * this.Context.AttachLightSource(npc, new Light
             * {
             *  RelativePosition = new Vector2(this.player.Bounds.Width / 2, this.player.Bounds.Height / 2),
             *  Colour = Color.White
             * });*/
        }