Опять вопрос косит под ECS. Есть программа, условно пока-что передвижение в пространстве на кастомной карте. Но вот проблема, что-бы игрок оставался в поле зрения мы передвигаем карту, так вот, что-бы не перерисовывать карту каждый раз когда мы дёргаемся, мы передвигаем контейнер с картой. Но вот не задача судари, контейнер оставляет за собой след, который упирается в любую пикчу.
Скрытый текст
local gui = require('gui')local event = require('event')local fs= require('filesystem')local elements ={}-- Будещее...local camera ={x=1,y=1}--Вроде не нужно, но этоже еще в разработке)local player ={x=50,y=25,facing='Right'}-- информация об игрокеlocal image = require('image')local images ={}-- Вперёд в будущее (по тексту)local key = require('keyboard')
images['Brick']= image.load('/Brick.pic')-- будущее настало
images['Man Left']= image.load('/Man.pic')
images['Man Right']= image.flipHorizontally(image.load('Man.pic'))
images['Man Up']= image.load('/Mann.pic')
images['Man Down']= image.flipVertically(image.load('Mann.pic'))-- Заранее подгружаем пикчи что-бы не грузить диск по любомму требованию
wk = gui.workspace(1,1,160,50)local bg = wk:addChild(gui.panel(1,1,160,50,0xFFFFFF))-- Задний фонlocal text = wk:addChild(gui.text(20,20,0x989898,'0 0'))local data = fs.readTable('/Test.map')-- {[1]={[1]='Brick'},X=1,Y=1} --Картаlocal map = wk:addChild(gui.container(1,1,160,50))-- Наш пациент, контейнерlocal playerpic = wk:addChild(gui.image(50,25,images['Man Right']))local a=0for x=1,160do-- потом карта будет сама определять свой размер, исходя из файлы картыfor y=1,50do
a = a +1
pcall(function()-- Второе будущее
elements[a]= map:addChild(gui.image(x,y,images[data[x][y]]))-- Спавн элементов карты, координаты и что за элемент там хранится, в будущем будет колайды (можно ли уперется в объект (пол и тумбочка)), а также делаем так,что-бы мы могли в будущем управлять компонентами карты запихивая в "элементы"(карты)end)endendwhiletruedo
e1,e2,e3,e4,e5,e6=event.pull(0.01)
text.text = tostring(e3)..' '..tostring(e4)
playerpic:remove()-- Дабы не рисовать супер линий игрокомif key.isKeyDown(30)then-- Aif player.x >20then
player.facing ='Left'
player.x = player.x -2else
map.localX = map.localX-2endendif key.isKeyDown(32)then-- Dif player.x <140then
player.facing ='Right'
player.x = player.x +2else
map.localX = map.localX+2endendif key.isKeyDown(17)then-- Wif player.y >10then
player.y = player.y -1
player.facing ='Up'else
map.localY = map.localY-1endendif key.isKeyDown(31)then-- Sif player.y <40then
player.y = player.y +1
player.facing ='Down'else
map.localY = map.localY+1endendlocal playerpic = wk:addChild(gui.image(player.x,player.y,images['Man '..player.facing]))-- показываем игрока, снова
wk:draw()end
wk:draw()
wk:start()
И результат:
На вторую пикчу не хватило бюджета, но на игрока оно тоже стопорит закраску, игнорируя текст.
Опять вопрос косит под ECS. Есть программа, условно пока-что передвижение в пространстве на кастомной карте. Но вот проблема, что-бы игрок оставался в поле зрения мы передвигаем карту, так вот, что-бы не перерисовывать карту каждый раз когда мы дёргаемся, мы передвигаем контейнер с картой. Но вот не задача судари, контейнер оставляет за собой след, который упирается в любую пикчу.
И результат:
На вторую пикчу не хватило бюджета, но на игрока оно тоже стопорит закраску, игнорируя текст.
Изменено пользователем OlesheПоделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах