protected override void Initialize() { city = new City(this); effect = new BasicEffect(this.GraphicsDevice); cam = new Camera(this); cam.LookAt(MathHelper.ToDegrees(MathHelper.PiOver4), 0.05f, 1000.0f, new Vector3(11f, 0f, -7.5f), Vector3.Forward, Vector3.Up); base.Initialize(); }
public void Draw(Camera camera) { this.citybuilder.Scale = new Vector3(1.0f, 1.5f, 1.0f); this.effect.Texture = this.texture; this.effect.TextureEnabled = true; this.effect.World = this.citybuilder.CreateWorldMatrix(); this.effect.View = camera.View; this.effect.Projection = camera.Projection; foreach (EffectPass pass in effect.CurrentTechnique.Passes) { pass.Apply(); this.citybuilder.Draw(); } }
public void Fire(Camera cam) { if (ammocount > 0) { Projectile bullet = projectiles[ammocount--]; bullet.Position = cam.GetTarget; Vector3 dir = cam.GetTarget - cam.GetPosition; dir.Normalize(); bullet.SetDirection(dir); float angle = (float)Math.Atan2(-dir.X, dir.Y); bullet.Rotation_X = -90f; bullet.Rotation_Y = MathHelper.ToDegrees(cam.Angle_Y); this.bullets.Add(bullet); this.sound.Play(); } }
public bool isColliding(List<BoundingBox> boxes, Camera cam, Vector3 playerDimensions) { BoundingBox cameraBox = new BoundingBox( new Vector3(cam.GetPosition.X - (playerDimensions.X / 2), cam.GetPosition.Y - (playerDimensions.Y), cam.GetPosition.Z - (playerDimensions.Z / 2)), new Vector3(cam.GetPosition.X + (playerDimensions.X / 2), cam.GetPosition.Y, cam.GetPosition.Z + (playerDimensions.Z / 2)) ); foreach (BoundingBox box in boxes) { if (box.Contains(cameraBox) != ContainmentType.Disjoint) { return true; } } return false; }
public bool isColliding(BoundingBox box, Camera cam, Vector3 playerDimensions) { BoundingBox cameraBox = new BoundingBox( new Vector3(cam.GetPosition.X - (playerDimensions.X / 2), cam.GetPosition.Y - (playerDimensions.Y), cam.GetPosition.Z - (playerDimensions.Z / 2)), new Vector3(cam.GetPosition.X + (playerDimensions.X / 2), cam.GetPosition.Y, cam.GetPosition.Z + (playerDimensions.Z / 2)) ); return box.Contains(cameraBox) != ContainmentType.Disjoint; }
public Face DetermineSide(BoundingBox box, int radius, Camera cam) { Vector3 down = cam.GetPosition + new Vector3(0, -radius, 0); Vector3 up = cam.GetPosition + new Vector3(0, radius, 0); Vector3 left = cam.GetPosition + new Vector3(-radius, 0, 0); Vector3 right = cam.GetPosition + new Vector3(radius, 0, 0); Vector3 forward = cam.GetPosition + new Vector3(0, 0, -radius); Vector3 backward = cam.GetPosition + new Vector3(0, 0, radius); Ray downRay = new Ray(cam.GetPosition, down); Ray upRay = new Ray(cam.GetPosition, up); Ray leftRay = new Ray(cam.GetPosition, left); Ray rightRay = new Ray(cam.GetPosition, right); Ray frontRay = new Ray(cam.GetPosition, forward); Ray backRay = new Ray(cam.GetPosition, backward); float? downI = downRay.Intersects(box); float? upI = upRay.Intersects(box); float? leftI = leftRay.Intersects(box); float? rightI = rightRay.Intersects(box); float? frontI = frontRay.Intersects(box); float? backI = backRay.Intersects(box); if (downI != null && downI.Value < 0.01f) return Face.BOTTOM; if (upI != null && upI.Value < 0.01f) return Face.TOP; if (frontI != null && frontI.Value < 0.01f) return Face.FRONT; if (backI != null && backI.Value < 0.01f) return Face.BACK; if (leftI != null && leftI.Value < 0.01f) return Face.LEFT; if (rightI != null && rightI.Value < 0.01f) return Face.RIGHT; return Face.NONE; }