Сегодня мы поговорим о спрайтах. В Сцене есть 2 вида спрайтов: TGLHUDSrite и TGLSprite.
TGLHUDSrite (Heads-Up Display) Это спрайты предназначенные для отображения поверх всех объектов сцены (если такое возможно). Они похожи на простые картинки с той лишь разницей что участвуют в иерархии , а значит могут быть перекрыты другим объектом. С помощью них в играх чаще всего отображают: Здоровье/Жизни Время Способности Прицел Карта, план или радар Всевозможные меню
Для примера мы сделаем свой прицел. И так создаем новый проект, размещаем пару объектов и сам TGLHUDSrite. Пример моей иерархии
Работать с ними очень просто, вот пример кода по загрузке и расположении по центру экрана GLHUDSprite1.Material.Texture.Disabled:=false; GLHUDSprite1.Material.Texture.Image.LoadFromFile('target.jpg'); GLHUDSprite1.Position.X:=GLSceneViewer1.Width/2; GLHUDSprite1.Position.y:=GLSceneViewer1.Height/2; В результате мы получим нечто подобное этому.
Хочу еще сказать что, можно грузить в спрайты и png , если предварительно подключить к проекту модули TPNGImage.
TGLSprite Это обычные спрайты работать с ними так же как и с HUD спрайтами , но в отличии от HUD они могут располагаться в пространстве как простой объект. Кстати у обоих видов спрайтов есть возможность сделать прозраные элементы. Пример: Material.Texture.ImageAlpha := tiaSuperBlackTransparent; Material.Texture.TextureMode := tmReplace; \\Мод для самой текстуры Material.BlendingMode:= bmTransparency; Черный цвет исчезнет, а взамен него получим прозрачный участок.
Еще интересная особенность это то что, они всегда повёрнуты лицом к наблюдателю (камере), т.е. если вы посмотрите с верху то он так же отобразиться как и сбоку. Помните Hexen или Duke Nukem 3D , там так сделаны были монстры и многие объекты , сколько не ходи во круг да около сзади не зайдешь )
Как пример покажу свою небольшую игрушку , в ней используются 2 вида спрайта. Как вы видите от того что, камера наклонена спрайты не изменились.
|