Добавляем радар (мини-карта) к уроку Heightmap Collision
В графическом редакторе вроде Paint.NET создаем изображение размером 4х4, закрашиваем его красным цветом и сохраняем в папку с контентом нашего проекта. Изображение это будем использовать для обозначеия позиции танка на мини-крте.
protectedoverridevoid Draw(GameTime gameTime) { GraphicsDevice device = graphics.GraphicsDevice; device.Clear(Color.Black); DrawModel(terrain); tank.Draw(viewMatrix, projectionMatrix); // new code Rectangle mapRect =new Rectangle(600, 10, 180, 180); Vector2 pos = Vector2.Zero; int top, left; heightMapInfo.GetPos(tank.Position, out left, out top); pos.X= mapRect.X+ left *((float)mapRect.Width/(float)heightMapInfo.XDimension); pos.Y= mapRect.Y+ top *((float)mapRect.Height/(float)heightMapInfo.ZDimension); batch.Begin(SpriteBlendMode.None, SpriteSortMode.Immediate, SaveStateMode.SaveState); batch.Draw(mapTexture, mapRect, Color.White); batch.Draw(circle, pos, circleColor); batch.End(); byte r = circleColor.R; r+=4;// скорость пульсации указателя if(r >255) r =40; circleColor =new Color(r, 0, 0); // If there was any alpha blended translucent geometry in // the scene, that would be drawn here. base.Draw(gameTime); }
Все, во время инициализации загружается новая текстура для отображения позиции танка на радаре. Вторая текстура, сама мини-карта, создается из карты высот ландшафта. В методе Draw получаем координаты танка относительно карты высот и корректируем их относительно позиции мини-карты на экране. Затем рисуем мини-карту и точку (4х4).