// checks Overlap against any other AABB when called public bool CheckOverlap(AABBCollider other) { if (min.x > other.max.x) { return(false); } if (max.x < other.min.x) { return(false); } if (min.y > other.max.y) { return(false); } if (max.y < other.min.y) { return(false); } if (min.z > other.max.z) { return(false); } if (max.z < other.min.z) { return(false); } return(true); }
public Backpacker(SpriteSheet spriteSheet, int index) : base() { m_actionManager = new SingleActionManager(); m_sprite = new Sprite(Globals.TheGame, spriteSheet, Transform); m_sprite.Origin = new Vector2(0.5f, 1.0f); m_collider = new AABBCollider(this, new AABB(m_sprite)); m_currentState = BackpackerState.Idle; }
public static AABBCollider MakeBoxCenter(float _x, float _y, float _width, float _height) { AABBCollider box = new AABBCollider(); box.x1 = _x - _width / 2; box.x2 = _x + _width / 2; box.y1 = _y - _height / 2; box.y2 = _y + _height / 2; return(box); }
public static AABBCollider MakeBoxTLCorner(float _x, float _y, float _width, float _height) { AABBCollider box = new AABBCollider(); box.x1 = _x; box.x2 = _x + _width; box.y1 = _y - _height; box.y2 = _y; return(box); }
private void InitAABBColliders() { { ColliderCategory colliderCategory = ColliderCategory.Actor | ColliderCategory.Player; ColliderCategory collidesWith = ColliderCategory.Terrain | ColliderCategory.Bullet | ColliderCategory.Trigger; AABBCollider playerCollider = new AABBCollider(null, "PlayerCollider", new Vector2(0), 0.6f, 2.0f, colliderCategory, collidesWith); AABBColliders.Add("PlayerCollider", playerCollider); } { ColliderCategory colliderCategory = ColliderCategory.Actor | ColliderCategory.Creature; ColliderCategory collidesWith = ColliderCategory.Terrain | ColliderCategory.Bullet | ColliderCategory.Trigger; AABBCollider playerCollider = new AABBCollider(null, "TurretCollider", new Vector2(0), 0.75f, 0.8f, colliderCategory, collidesWith); AABBColliders.Add("TurretCollider", playerCollider); } }
public void Initialize(Entity owner) { playerSprite = owner.GetComponent <AnimatedSprite>(); Vector2 extension = new Vector2(playerSprite.Width * 0.5f, playerSprite.Height); playerCollider = new AABBCollider(extension); playerCollider.IsStatic = false; //playerCollider.RemoveFromActiveColliders(); playerCollider.Initialize(owner); this.owner = owner; Gravity = new Vector2(0, -9.8f); }
private void InitDirtBlocks() { ShaderInfo.Material dirtMaterial; dirtMaterial.Emissive = new Color(50, 45, 40, 255); dirtMaterial.Diffuse = new Color(100, 150, 100, 255); dirtMaterial.Specular = new Color(255, 255, 255, 255); dirtMaterial.Shininess = 0.8f; TileLightingInfo dirtLighting = new TileLightingInfo("DirtTilesNormal", "DirtTextureNormal", dirtMaterial); int x = 0; int y = 0; const int spriteSize = 16; const int spacing = 2; foreach (Facing f in (Facing[])Enum.GetValues(typeof(Facing))) { for (int i = 0; i < 3; i++) { int startX = (spacing / 2) + (spriteSize + spacing) * x; int startY = (spacing / 2) + (spriteSize + spacing) * y; Renderable r = new Renderable(null, "DirtBlockNone", "DirtTiles", new Vector2(7.5f), new Vector2(0), new Vector2(1), 16, 16, startX, startY, 0.1f); r.Drawable.ShaderInfo = dirtLighting; r.DrawBatched = true; ColliderCategory colliderCategory = ColliderCategory.Terrain; ColliderCategory collidesWith = ColliderCategory.All & ~ColliderCategory.Trigger; AABBCollider c = new AABBCollider(null, "DirtBlock" + i, new Vector2(0), 0.5f, 0.5f, colliderCategory, collidesWith); Entity e = new Entity(); e.Components.Add(r); e.Components.Add(c); AddBlock(Material.Dirt, Shape.Block, f, e); x++; if (x > 6) { x = 0; y++; } } } }
public bool CollisionX(AABBCollider _other) { return(_other.x2 >= x1 && _other.x1 <= x2); }
public Entity SelectEntity(int i) { Entity e = new Entity(); switch (i) { case (0): { e = new Entity(true, "Block"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Block", "Dirt", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; AABBCollider c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain); e.Components.Add(r); e.Components.Add(c); } break; case (1): { e = new Entity(true, "Grass"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; AABBCollider c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain); e.Components.Add(r); e.Components.Add(c); } break; case (2): { e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, -0.3f); e.Components.Add(r); e.Components.Add(p); } break; case (3): { e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(32, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, -0.5f); e.Components.Add(r); e.Components.Add(p); } break; case (4): { e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(64, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, 0.5f); e.Components.Add(r); e.Components.Add(p); } break; case (5): { e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(96, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, 0.5f); e.Components.Add(r); e.Components.Add(p); } break; case (6): { e = new Entity(true, "Platform"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, 0.5f, -0.3f); e.Components.Add(r); e.Components.Add(p); } break; case (7): { e = new Entity(true, "Emptyblock"); e.Tags.Add("Terrain"); ShaderInfo.Material material; material.Emissive = new Color(0, 0, 0, 255); material.Diffuse = new Color(100, 150, 100, 255); material.Specular = new Color(255, 255, 255, 255); material.Shininess = 0.8f; LightingInfo lighting = new LightingInfo("DirtNormal", material); Renderable r = new Renderable(e, "Block", "Dirt", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); r.Drawable.ShaderInfo = lighting; e.Components.Add(r); } break; } e.Position = new Vector2(position.X, position.Y); return(e); }
public bool Collision(AABBCollider other) { return(CollisionX(other) && CollisionY(other)); }
public bool CollisionY(AABBCollider other) { return(other.y2 > y1 && other.y1 < y2); }
/*public Vector2 BoxCenter * { * get * { * return new Vector2((x1 - x2) / 2, (y1 - y2) / 2); * } * }*/ public bool CollisionX(AABBCollider other) { return(other.x2 > x1 && other.x1 < x2); }
public LevelEditor() { indicator = new Entity(); entities = new List <Entity>(); index = 0; editing = false; gridLock = false; Entity e = new Entity(true, "Block"); e.Tags.Add("Terrain"); Renderable r = new Renderable(e, "Block", "testSheet", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); AABBCollider c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain); e.Components.Add(r); e.Components.Add(c); entities.Add(e); e = new Entity(true, "Block"); e.Tags.Add("Terrain"); r = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain); e.Components.Add(r); e.Components.Add(c); entities.Add(e); e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); r = new Renderable(e, "Slock", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, -0.3f); e.Components.Add(r); e.Components.Add(p); entities.Add(e); e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(32, 0, 1, 30, Animation.OnEnd.Loop, 0); p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, -0.3f); e.Components.Add(r); e.Components.Add(p); entities.Add(e); e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(64, 0, 1, 30, Animation.OnEnd.Loop, 0); p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, 0.3f); e.Components.Add(r); e.Components.Add(p); entities.Add(e); e = new Entity(true, "Slope"); e.Tags.Add("Terrain"); r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(96, 0, 1, 30, Animation.OnEnd.Loop, 0); p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, 0.3f); e.Components.Add(r); e.Components.Add(p); entities.Add(e); e = new Entity(true, "Platform"); e.Tags.Add("Terrain"); r = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, 0.5f, -0.3f); e.Components.Add(r); e.Components.Add(p); entities.Add(e); e = new Entity(true, "Emptyblock"); e.Tags.Add("Terrain"); r = new Renderable(e, "Block", "testSheet", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f); r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0); e.Components.Add(r); entities.Add(e); }
private void Start() { coll1 = box1.GetComponent <AABBCollider>(); coll2 = box2.GetComponent <AABBCollider>(); }
public FatZombie() { m_physics = new PhysicsComponent(Globals.TheGame, Transform); m_sprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_phat", 1, 12), Transform); m_sprite.Origin = new Vector2(0.5f, 1); m_loot = Loot.GenerateLoot(12); ObjectState.BeginAction = delegate() { m_actionManager.StartNew(m_full); }; ObjectState.StandbyAction = delegate() { m_actionManager.Stop(); m_sprite.SetFrame(0); }; ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); }; m_collider = new AABBCollider(this, new AABB(m_sprite)); Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); }); m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP); m_impactBox = new AABB(new Transform(Transform, true), new Vector2(72, 67)); m_impactBox.Transform.Position = new Vector2(13, -70); m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 10); m_hitAnimation = new HitAnimation(World.baseEffect); m_measurer = new AABBMeasurer(new AABB(new Transform(Transform, true), new Vector2(50, 50))); m_full = new SpriteSheetAnimation(m_sprite, 0, 1, 0.7f, -1); m_noHead1 = new SpriteSheetAnimation(m_sprite, 2, 3, 0.7f, -1); m_noHead2 = new SpriteSheetAnimation(m_sprite, 4, 5, 0.7f, -1); m_noRightArm = new SpriteSheetAnimation(m_sprite, 6, 7, 0.7f, -1); m_noLeftArm = new SpriteSheetAnimation(m_sprite, 8, 9, 0.7f, -1); m_noShoulders = new SpriteSheetAnimation(m_sprite, 10, 11, 0.7f, -1); m_actionManager = new SingleActionManager(); m_actionManager.StartNew(m_full); //_projections = new BodyPart[] //{ // null, // new BodyPart(this, new Vector2(0, -55), "bp_fatshoulders"), // new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-30, -100), "bp_fathead2"), // new BodyPart(this, new Vector2(-30, -115), "bp_fathead1"), //}; //_destroyProjections = new BodyPart[] { // new BodyPart(this, new Vector2(0, -45), "bp_fatupperb"), // new BodyPart(this, new Vector2(0, -10), "bp_fatlowerb"), //}; m_bodyParts = new ParticleSystem(Globals.TheGame, 7); m_head1 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead1"), new Transform(Transform, true)); m_head1.Transform.Position = new Vector2(-30, -110); m_bodyParts.AddParticle(m_head1); m_head2 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead2"), new Transform(Transform, true)); m_head2.Transform.Position = new Vector2(-30, -100); m_bodyParts.AddParticle(m_head2); m_shoulders = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatshoulders"), new Transform(Transform, true)); m_shoulders.Transform.Position = new Vector2(0, -80); m_bodyParts.AddParticle(m_shoulders); m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armL.Transform.Position = new Vector2(-15, -75); m_bodyParts.AddParticle(m_armL); m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armR.Transform.Position = new Vector2(-15, -75); m_bodyParts.AddParticle(m_armR); m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatupperb"), new Transform(Transform, true)); m_upperB.Transform.Position = new Vector2(15, -65); m_bodyParts.AddParticle(m_upperB); m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatlowerb"), new Transform(Transform, true)); m_lowerB.Transform.Position = new Vector2(15, -27); m_bodyParts.AddParticle(m_lowerB); /// ///Hit events /// m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit); m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit); /// /// Health events /// m_destructible.AddHealthEvent(7, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noHead1); m_head1.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(6, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noHead2); m_head2.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(5, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noRightArm); m_armR.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(4, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noLeftArm); m_armL.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(3, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noShoulders); m_shoulders.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(0, false, new MethodAction(delegate() { m_upperB.Pop(-1.1f, 500, true); m_lowerB.Pop(-1.1f, 500, true); ObjectState.Destroy(); })); ObjectState.Begin(); }
public bool CollisionY(AABBCollider _other) { return(_other.y2 >= y1 && _other.y1 <= y2); }
// public Tpl_PogoZombie() // : base(typeof(PogoZombie), "e_pz") //{ // _hp = 3; // _speed = 2.4f; // _jumpForce = 25; // _appearanceRate = 30; //} public PogoZombie() : base() { m_jumpForce = Globals.Random.Next(-JumpForceInterval, JumpForceInterval + 1) + JumpForce; m_sprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_pogo", 1, 8), Transform); m_sprite.Origin = new Vector2(0.5f, 1.0f); m_physics = new PhysicsComponent(Globals.TheGame, Transform); m_loot = Loot.GenerateLoot(12); m_currentFrame = 0; ObjectState.BeginAction = delegate() { m_sprite.SetFrame(m_currentFrame); }; ObjectState.StandbyAction = delegate() { m_sprite.SetFrame(m_currentFrame + 1); }; ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); }; m_collider = new AABBCollider(this, new AABB(m_sprite)); Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); }); m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, 4); m_hitAnimation = new HitAnimation(World.baseEffect); m_impactBox = new AABB(new Transform(Transform, true), new Vector2(20, 60)); m_impactBox.Transform.Position = new Vector2(5, -54); m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 5); m_measurer = new AABBMeasurer(m_impactBox); //_projections = new BodyPart[] { // null, // new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"), // new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"), //}; //_destroyProjections = new BodyPart[] //{ // new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"), // new BodyPart(this, new Vector2(10, -50), "bp_pogostick"), // new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb") //}; /// /// Body parts /// m_bodyParts = new ParticleSystem(Globals.TheGame, 6); m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true)); m_head.Transform.Position = new Vector2(7, -97); m_bodyParts.AddParticle(m_head); m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armR.Transform.Position = new Vector2(-20, -70); m_bodyParts.AddParticle(m_armR); m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true)); m_lowerB.Transform.Position = new Vector2(0, -40); m_bodyParts.AddParticle(m_lowerB); m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true)); m_upperB.Transform.Position = new Vector2(0, -65); m_bodyParts.AddParticle(m_upperB); m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armL.Transform.Position = new Vector2(-20, -70); m_bodyParts.AddParticle(m_armL); m_pogoStick = new BodyPart(TextureLibrary.GetSpriteSheet("bp_pogostick"), new Transform(Transform, true)); m_pogoStick.Transform.Position = new Vector2(-6, -40); m_bodyParts.AddParticle(m_pogoStick); /// ///Hit events /// m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit); m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit); /// /// Health events /// m_destructible.AddHealthEvent(3, false, new MethodAction(delegate() { m_currentFrame = 2; m_sprite.SetFrame(m_currentFrame); m_head.Pop(-1.1f, 800, true); })); m_destructible.AddHealthEvent(2, false, new MethodAction(delegate() { m_currentFrame = 4; m_sprite.SetFrame(m_currentFrame); m_armL.Pop(-1.1f, 800, true); })); m_destructible.AddHealthEvent(1, false, new MethodAction(delegate() { m_currentFrame = 6; m_sprite.SetFrame(m_currentFrame); m_armR.Pop(-1.1f, 800, true); })); m_destructible.AddHealthEvent(0, false, new MethodAction(delegate() { m_upperB.Pop(-1.1f, 800, true); m_lowerB.Pop(-1.1f, 800, true); m_pogoStick.Pop(-1.1f, 200, true); ObjectState.Destroy(); })); ObjectState.Begin(); }
public BasicZombie() : base() { m_physics = new PhysicsComponent(Globals.TheGame, Transform); m_sprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_base", 1, 8), Transform); m_sprite.Origin = new Vector2(0.5f, 1.0f); m_loot = Loot.GenerateLoot(4); ObjectState.BeginAction = delegate() { m_actionManager.StartNew(m_full); }; ObjectState.StandbyAction = delegate() { m_actionManager.Stop(); m_sprite.SetFrame(0); }; ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); }; m_collider = new AABBCollider(this, new AABB(m_sprite)); Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); }); m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP); m_impactBox = new AABB(new Transform(Transform, true), new Vector2(22, 42)); m_impactBox.Transform.Position = new Vector2(13, -44); m_measurer = new AABBMeasurer(m_impactBox); m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 5); m_hitAnimation = new HitAnimation(World.baseEffect); m_full = new SpriteSheetAnimation(m_sprite, 0, 1, 0.5f, -1); m_noHead = new SpriteSheetAnimation(m_sprite, 2, 3, 0.5f, -1); m_noLeftArm = new SpriteSheetAnimation(m_sprite, 4, 5, 0.5f, -1); m_noRightArm = new SpriteSheetAnimation(m_sprite, 6, 7, 0.5f, -1); m_actionManager = new SingleActionManager(); //Transform headTransform = new Transform(Transform, true //_projections = new BodyPart[] { // null, // new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"), // new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"), // new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"), // new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb") //}; /// /// Body Parts /// m_bodyParts = new ParticleSystem(Globals.TheGame, 5); m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true)); m_head.Transform.Position = new Vector2(5, -50); m_bodyParts.AddParticle(m_head); m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armL.Transform.Position = new Vector2(5, -30); m_bodyParts.AddParticle(m_armL); m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armR.Transform.Position = new Vector2(-5, -30); m_bodyParts.AddParticle(m_armR); m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true)); m_upperB.Transform.Position = new Vector2(0, -30); m_bodyParts.AddParticle(m_upperB); m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true)); m_lowerB.Transform.Position = new Vector2(0, -10); m_bodyParts.AddParticle(m_lowerB); /// ///Hit events /// m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit); m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit); /// /// Health events /// m_destructible.AddHealthEvent(3, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noHead); m_head.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(2, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noLeftArm); m_armL.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(1, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noRightArm); m_armR.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(0, false, new MethodAction(delegate() { m_upperB.Pop(-1.1f, 500, true); m_lowerB.Pop(-1.1f, 500, true); ObjectState.Destroy(); })); ObjectState.Begin(); }
public void AddCollider(AABBCollider collider) { m_colliders.Add(collider); }