barra de vida com stringer

 
   3D Game Builder - Índice » Programação
barra de vida com stringer
Autor Mensagem
ricardo3dgb
Novato
Novato


Registrado: 15/12/09
Mensagens: 55

barra de vida com stringer
como faço uma barra de vida com [color=orange]stringer[/color]?eu seu que temos de alterar a escala dela sempre que formos atingidos mas quando ela ficar pequena demais tipo escala "0" qual script usar procurei mas não achei voces podem me ajudar?...



_________________
.... ..... ...... .....
Sáb Dez 19, 2009 4:20 pm Exibir perfil de usuários
Edirlei
Administrador
Administrador


Registrado: 15/03/08
Mensagens: 760

O que é "stringer"?
Sáb Dez 19, 2009 7:34 pm Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Re: barra de vida com stringer
A nova versão possui nos Gui Objects um novo objeto chamado image. Logo, logo, o Edirlei deve lançar o pacote que vai corrigir bugs nos gui objects. Quando sair, você pode criar um object image e aplicar materiais nele. Esses materiaias poderiam ser várias texturas, cada uma com uma variação de cor diferente. Essa mudança poderia ser feita em função do valor de uma variável global que a controlasse, e a mudança de material poderia ser feita com a função: SetObjectMaterial


Declaration:
procedure SetObjectMaterial(ObjectName : String; MaterialName : String);


Seria assim, se o valor da variável fosse 1, usaria o material 1, se fosse 2, usaria o material 2 (ou por intervalos, se o valor estivesse entre 1 e 9, material 1, entre 10 e 19, material 2) e assim por diante. Quanto mais valores e materiais, melhor seria o resultado.
Antes desse novo recurso, o Mililo conseguiu fazer uma barra de energia legal no jogo dele, ele poderia te dar uma luz também! Very Happy

Abraço.

_________________
Lemos
http://alemdanimacao.zip.net/
Dom Dez 20, 2009 12:28 am Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Re: barra de vida com stringer
Um outro modo seria criar um label e após ele colocar barrinhas verticais ("i" Maiúsculo). Essaas barrinhas iriam aumentando em quantidade. Essa mudança poderia ser feita em função do valor de uma variável global que a controlasse, por meio da função: SetLabelText


Set label text.

Declaration:
procedure SetLabelText(ObjectName : String; Text : String);


A cada mudança, as barrinhas seria acrescentadas. Eu só sei fazer isso por script longo, isto é, variável 1, 1 barrinha, variável 2, 2 barrinhas, mas talvez exista uma forma mais fácil

Abraço.



_________________
Lemos
http://alemdanimacao.zip.net/
Dom Dez 20, 2009 12:36 am Exibir perfil de usuários
Mililo
Usuário
Usuário


Registrado: 05/12/08
Mensagens: 366
Localização: Santo Antônio de Pádua / RJ

Lemos gostei dessa sua idéia de usar os 'I' como barra de vida, daí fiz um código resumido para isso.

OnCreate:, claro que você deve troca numero pela quantidade de vida(recomendo uns 30 para testar), e pode trocar o nome se quiser... e deve criar mais vars dependendo de quantos objetos irão ter vida...
Código:
WriteGlobalVar('Vida', numero);


MainLoop do mapa ou OnLoop de algum objeto:
Essa é a função, você não precisa mudar nada nela, mas se quiser pode mudar o nome 'CreateLifeBar':
Código:
function CreateLifeBar(num:integer):string
begin
var i:integer;
var source:string;
SetLength(source, num);
for i:=1 to não do
begin
source[i]:='I';
end;
result := source;
end;

Agora vem o código para adicionar a vida ao label, e claro, o nome do label pode ser o que você quiser, e o da globalvar também, não esquece de criar o label no mapa!!!, e se tiver mudado o nome da fução mude aqui também:
Código:
SetLabelText('Vida', CreateLifeBar(ReadGlobalVar('Vida')))

E aqui é um código usado só para teste, ele diminui a vida pressionando Q e aumenta pressionando W(o comando ord() retorna o código ascii da letra, é só ler na 'ScriptReference'):
Código:
if iskeypress(ord('Q')) then
WriteGlobalVar('Vida', ReadGlobalVar('Vida')-1)
else
if iskeypress(ord('W')) then
WriteGlobalVar('Vida', ReadGlobalVar('Vida')+1);


Agora você já pode testar o jogo... Vai aparecer uma barra de vida que você pode diminuir ou amentar pressionando Q ou W, provavelmente isso vai acontecer muito rápido dependendo do seu FramesPerSecond... mas é só um teste.

Se quiser adicionar um código de GameOver é simples:
Código:
if ReadGlobalVar('Vida')<=0 then
begin
// código de game over
end;

Dom Dez 20, 2009 1:53 pm Exibir perfil de usuários
ricardo3dgb
Novato
Novato


Registrado: 15/12/09
Mensagens: 55

ah desculpe Edirlei é sprite.... Embarassed Laughing



_________________
.... ..... ...... .....
Dom Dez 20, 2009 2:17 pm Exibir perfil de usuários
   3D Game Builder - Índice » Programação
Página 1 de 1