public override void Update() { GameObject coll = Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position), "obj_player"); if (coll != null) { if (Room.FindObject("obj_fairy") == null && Room.FindObject("obj_boss") == null) { if (!HasPlayedSound) { Room.Sounds.PlaySound(levelCompleteSound); HasPlayedSound = true; } Room nextRoom = new Room(Room.Engine); //find the room number if (Room.CurrentFileName.Substring(0, 12).Equals("Levels/level")) { int endInd = Room.CurrentFileName.IndexOf('.'); string numStr = Room.CurrentFileName.Substring(12, endInd - 12); int num = Convert.ToInt32(numStr); nextRoom.Load("Levels/level" + (num + 1) + ".json"); Room.Engine.ChangeRoom(nextRoom); } } } base.Update(); }
/*public void ChangeHitbox(Rectangle rect) * { * Hitbox = rect; * }*/ public override void Update() { GameObject coll = Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position), "obj_player"); if (coll != null) { ((PlayerObject)coll).Damage(1); } base.Update(); }
public override void Update() { if (cooldown > 0) { cooldown--; } if (animationindex == -10) { goingUp = true; } if (animationindex == 14) { goingUp = false; } if (goingUp) { animationindex++; } else { animationindex--; } Vector2 vel = Velocity; PlayerObject reimu = (PlayerObject)Room.FindObject("reimu"); if (moving) { if (facingRight) { vel.X = MoveSpeed; } else { vel.X = -MoveSpeed; } if ((Math.Pow(Position.X - reimu.Position.X, 2) + Math.Pow(Position.Y - reimu.Position.Y, 2)) < (400 * 400)) { if (cooldown <= 0) { moving = false; } } } else { Rectangle hitbox = reimu.GetHitbox(); Vector2 size = new Vector2(hitbox.Width, hitbox.Height); Vector2 playerPos = reimu.Position + (size / 2); Vector2 fairyPos = Position + (size / 2); /*Vector2 fairyOnScreenPos = fairyPos - Room.ViewOffset; * Vector2 playerRelativePos = playerPos - fairyOnScreenPos;*/ float dir = (float)Math.Atan2(playerPos.Y - Position.Y, playerPos.X - Position.X); ProjectileObject proj = new ProjectileObject(Room, fairyPos, dir, 3, 1, "obj_player"); proj.TimeToLive = 1000; proj.Sprite.Change(BulletSprite); proj.Sprite.Angle = dir; proj.Sprite.Size = new Vector2(16, 16); proj.Sprite.Origin = proj.Sprite.Size / 2; proj.Sprite.Offset = -(new Vector2(Sprite.Size.X / 2, Sprite.Size.Y / 2 + (Sprite.Size.Y - Sprite.Size.X) / 2)); Room.GameObjectList.Add(proj); Room.Sounds.PlaySound(ShootSound); moving = true; cooldown = 60; } Velocity = vel; if (Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position, new Vector2(1, 0)), "obj_block") != null) { facingRight = false; } if (Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position, new Vector2(-1, 0)), "obj_block") != null) { facingRight = true; } if (Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position, new Vector2(0, 1)), "obj_block") != null && !(Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position, new Vector2(-1, 1)), "obj_block") != null)) { facingRight = true; } if (Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position, new Vector2(0, 1)), "obj_block") != null && !(Room.FindCollision(PlatformerMath.AddVectorToRect(GetHitbox(), Position, new Vector2(1, 1)), "obj_block") != null)) { facingRight = false; } base.Update(); }