public override void Collision(Box box) { if (box is Bullet) { Bullet bul = box as Bullet; if (!bul.Enemy) Damage(bul.Damage); box.Destroy(); Trigger(); } }
public override void Collision(Box box) { if (box is Player) { p = box as Player; if (p.Fall & p.Position.Y < Position.Y - 120) { p.OnPlatform(); ON = true; zanizh = Zanizh(); if (zanizh < 5) { p.Position.Y += 5; } } } }
public override void Collision(Box box) { //Взял монетку if (box is Coin) { Coin d = box as Coin; d.Nominal = 0; box.Destroy(); World.Objects.Add(new BonusTake((int)box.Position.X, (int)box.Position.Y)); } //Потрогал другой робот if (box is StupidRobot) { Damage(1); } //Подорвался на бомбе if (box is Explosion) { Explosion exp = box as Explosion; if (exp.Damage != 0) Damage(exp.Damage); } }
public override void Collision(Box box) { }
/// <summary> /// Добавление объекта в очередь на создание /// </summary> /// <param name="newobject"></param> public static void NewObject(Box newobject) { Spool.Add(newobject); }
/// <summary> /// Установка объекта слежения камеры и установка первоначальной позиции камеры /// </summary> /// <param name="obj"></param> public void SetTrackingObject(Box obj) { TrackingObject = obj; }
/// <summaru> /// Конструктор экрана, с указанными размерами. /// Делается после загрузки карты (устанавливаются границы для движения камеры). /// </summary> /// <param name = "x">Координата X</param> /// <param name = "y">Координата Y</param> /// <param name = "width">Ширина видимого экрана</param> /// <param name = "height">Высота видимого экрана</param> public Screen(Box trackingObject, int x, int y, int width, int height) { TrackingObject = trackingObject; RightMapPixelPixel = World.Width * TileSize - 1; BottomMapPixel = World.Height * TileSize - 1; RightLimit = World.Width * TileSize - width; BottomLimit = World.Height * TileSize - height; CameraCenter.X = width / 2; CameraCenter.Y = height / 2; viewport = new Viewport(x, y, width, height); BackShiftX = width / 2 - Width / 2; BackShiftY = height / 2 - Height / 2; PhantomColor = 255; CameraReal.X = trackingObject.Center().X - CameraCenter.X; CameraReal.Y = trackingObject.Center().Y - CameraCenter.Y; Camera = CameraReal; }
/// <summaru> /// Конструктор экрана. Размеры устанавливаются на весь экран. /// Делается после загрузки карты (устанавливаются границы для движения камеры). /// </summary> public Screen(Box trackingObject) { TrackingObject = trackingObject; RightMapPixelPixel = World.Width * TileSize - 1; BottomMapPixel = World.Height * TileSize - 1; RightLimit = World.Width * TileSize - Width; BottomLimit = World.Height * TileSize - Height; CameraCenter.X = Width / 2; CameraCenter.Y = Height / 2; viewport = new Viewport(0, 0, Width, Height); BackShiftX = 0; BackShiftY = 0; PhantomColor = 255; CameraReal.X = trackingObject.Center().X - CameraCenter.X; CameraReal.Y = trackingObject.Center().Y - CameraCenter.Y; Camera = CameraReal; }
/// <summary> /// Проверка на коллиюию с указанным объектом /// </summary> /// <param name="CompareObject">Проверяемый объект</param> /// <returns></returns> public void CollisionTest(Box CompareObject) { if (this == CompareObject | !CollisionTests) return; Rectangle o1 = new Rectangle((int)Position.X + SpaceSide, (int)Position.Y + SpaceTop, Width - SpaceSide * 2, Height - SpaceTop); Rectangle o2 = new Rectangle((int)CompareObject.Position.X + CompareObject.SpaceSide, (int)CompareObject.Position.Y + CompareObject.SpaceTop, CompareObject.Width - CompareObject.SpaceSide * 2, CompareObject.Height - CompareObject.SpaceTop); if (o1.Intersects(o2)) Collision(CompareObject); }
/// <summary> /// Действие при коллизиях с указанным объекта /// </summary> /// <param name="box">Объект, с которым произошло столкновение</param> public abstract void Collision(Box box);