PSP-NEWS - PS4, PS3, PS VITA e PSP
A gerência da PSP-NEWS agora tem um novo projeto, estamos dedicados a criar jogos para dispositivos móveis. Podem visitar a nossa página em http://www.foryouplay.com/ e transferir os nossos jogos.

Obrigado!

Participe do fórum, é rápido e fácil

PSP-NEWS - PS4, PS3, PS VITA e PSP
A gerência da PSP-NEWS agora tem um novo projeto, estamos dedicados a criar jogos para dispositivos móveis. Podem visitar a nossa página em http://www.foryouplay.com/ e transferir os nossos jogos.

Obrigado!
PSP-NEWS - PS4, PS3, PS VITA e PSP
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

PS4, PSP, PS VITA, PSN, PS3, ONLINE, SONY, NINTENDO, XBOX, PC


Você não está conectado. Conecte-se ou registre-se

[Lua] #3 Aula de programação

4 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1[Lua] #3 Aula de programação Empty [Lua] #3 Aula de programação Qua 25 Fev - 9:59:47

DarK_SharK

DarK_SharK
Admin & Fundador
Admin & Fundador

Nesta nova aula vou ensinar as Colisions, muita gente tem dúvidas quanto a isso, mas servem para quê? Para fazer uma colisão entre 2 ou mais objectos, como por exemplo, num homebrew queres evitar que a tua personagem passe por cima de uma casa, fazes uma colision e ela não consegue passar mais por cima.

Código:
--Cores
verde=Color.new(0,255,0)
branco = Color.new(255,255,255)

--Personagem 1
personagem1 = Image.createEmpty(32,32)
personagem1:clear(branco)

--Bloco
bloco1 = Image.createEmpty(32,32)
bloco1:clear(verde)

--Local da Personagem 1 - Variaveis
Personagem = { x = 30, y = 100 }

--Variáveis
personagemAltura = 32 --y
personagemLargura = 32 --x

Esta primeira parte, apenas é para preencher de variaveis e a criação de personagens, neste caso não usamos imagens, mas sim o Image.createEmpty que cria uma forma à tua escolha. personagem1:clear(COR) aqui é onde a cor da forma é colocado, no exemplo é branco.

Personagem = { x = 30, y = 100 } as variáveis x e y são sempre muito importantes em cada homebrew, esta permite indicar um local onde que a Personagem deve iniciar.

personagemAltura e personagemLargura funciona para definir exactamente a altura e a largura para mais tarde as colisions sejam exactas.

Código:
--Colisions
Bloco = {}
Bloco[1] = { x = 100, y = 80, Altura = bloco1:height(), Largura = bloco1:width() }
Bloco[2] = { x = 300, y = 30, Altura = bloco1:height(), Largura = bloco1:width() }
Bloco[3] = { x = 200, y = 58, Altura = bloco1:height(), Largura = bloco1:width() }

--Mover a Personagem (Simples)
function moverPersonagem()
pad = Controls.read()
if pad:left() then
Personagem.x = Personagem.x - 1
end
if pad:right() then
Personagem.x = Personagem.x + 1
end
if pad:up() then
Personagem.y = Personagem.y - 1
end
if pad:down() then
Personagem.y = Personagem.y + 1
end
end

--Conclusão da Colision
function fimColision(object)
if (Personagem.x + personagemLargura > object.x) and (Personagem.x < object.x + object.Largura) and (Personagem.y + personagemAltura > object.y) and (Personagem.y < object.y + object.Altura) then
Personagem.x = oldx
Personagem.y = oldy
end
end

Agora vem as colisões, neste exemplo dei o nome de Bloco, mas podia ser um nome qualquer. Nesta parte é para defenir os locais onde os blocos devem estar, e umas comparações de variáveis. Em seguida está o movimento da personagem, isto serve para poderes movimentar a ta personagem. ( Quanto mais x ou y tiver, mais rápido anda, valor negativo = esquerda, baixo; valor positivo= direita, cima)

A Conclusão da Colision, é feita através neste caso por uma function, o nome (object) é simplesmente uma variável para substituir a nossa colisão. Em seguida à as variáveis if (se), só para tentares perceber:

if (Personagem.x + personagemLargura > object.x)
Se Personagem.x com personagemLargura for maior que então (them) Personagem.x = oldx

Código:
--Fim
while true do

--Variáveis Final
oldx = Personagem.x
oldy = Personagem.y
screen:clear()

--Function Movimento
moverPersonagem()

--Finalizar cada fimColison com os Blocos
fimColision(Bloco[1])
fimColision(Bloco[2])
fimColision(Bloco[3])

--Mostrar Personagem no ecrã
screen:blit(Personagem.x,Personagem.y,personagem1)

--Mostrar Blocos no ecrã
for a = 1,3 do
screen:blit(Bloco[a].x,Bloco[a].y,bloco1)
end

screen.waitVblankStart()
screen.flip()
end

Nesta parte final é só para confirmar functions, colocar as imagens no ecrã.
Em primeiro vem a conformação das variáveis reveladas na fimColision.
Em seguida coloca-se cada bloco criado em cada fimColision.
Depois o screen:blit par a Personagem e Bloco para aparecer no ecrã

http://www.psp-news.org

2[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Sáb 28 Fev - 21:30:48

D0UGL45

D0UGL45
Moderador
Moderador

Parabéns, essa aula está ótima como sempre. Wink

Aqui já deu certo, agora só falta incorporar em um homebrew.

http://d0ugl45-r0x.blogspot.com

3[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Dom 1 Mar - 18:21:13

Rafix

Rafix
USER MESTRE

D0UGL45 escreveu:Parabéns, essa aula está ótima como sempre. Wink

Aqui já deu certo, agora só falta incorporar em um homebrew.

Isso do colisionis normalmente é sempre usado em qualquer Homebrew...senão os personagens saem do ecrã e tal...

Abraço!

http://anime-kami.com

4[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Seg 2 Mar - 13:38:24

D0UGL45

D0UGL45
Moderador
Moderador

Rafix escreveu:
D0UGL45 escreveu:Parabéns, essa aula está ótima como sempre. Wink

Aqui já deu certo, agora só falta incorporar em um homebrew.

Isso do colisionis normalmente é sempre usado em qualquer Homebrew...senão os personagens saem do ecrã e tal...

Abraço!
Lol, disso eu sei, Razz

Eu já fiz o codigo funcionar, agora só falta fazer ajustes para juntar esse script com o de um homebrew já pronto.

http://d0ugl45-r0x.blogspot.com

5[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Seg 30 Mar - 13:30:27

O, 12Pedro

O, 12Pedro
USER MESTRE

contudo,

como é que faço para em vez de aparecer uma forma qualquer na personagem, aparecer uma imagem de uma personagem??

Parabens SharK

6[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Seg 30 Mar - 13:42:27

DarK_SharK

DarK_SharK
Admin & Fundador
Admin & Fundador

fazes

personagem1 = Image.load
Em vez de criares uma imagem, só muda isto.

http://www.psp-news.org

7[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Seg 30 Mar - 14:27:18

O, 12Pedro

O, 12Pedro
USER MESTRE

sim tudo bem, mas a consola nao tem a imagem.. ela vei ler o codigo, depois vai buscar a imagem mas vai dar erro porque nao a tem..

como é isto??

8[Lua] #3 Aula de programação Empty Re: [Lua] #3 Aula de programação Seg 30 Mar - 15:43:08

DarK_SharK

DarK_SharK
Admin & Fundador
Admin & Fundador

O, 12Pedro escreveu:sim tudo bem, mas a consola nao tem a imagem.. ela vei ler o codigo, depois vai buscar a imagem mas vai dar erro porque nao a tem..

como é isto??

Lê isto.
http://www.psp-news.org/tutoriais-em-lua-f42/lua-imagens-t7308.htm

http://www.psp-news.org

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos