|
|
|
Autor |
Mensagem |
ricardo3dgb
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 |
|
|
Edirlei
Administrador
Registrado: 15/03/08 Mensagens: 760
|
|
|
Sáb Dez 19, 2009 7:34 pm |
|
|
Lemos
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!
Abraço.
_________________ Lemos
http://alemdanimacao.zip.net/
|
|
Dom Dez 20, 2009 12:28 am |
|
|
Lemos
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 |
|
|
Mililo
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...
| | 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':
| | 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:
| | 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'):
| | 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:
| | if ReadGlobalVar('Vida')<=0 then
begin
// código de game over
end; |
|
|
Dom Dez 20, 2009 1:53 pm |
|
|
ricardo3dgb
Novato
Registrado: 15/12/09 Mensagens: 55
|
|
|
|
ah desculpe Edirlei é sprite....
_________________ .... ..... ...... ..... |
|
Dom Dez 20, 2009 2:17 pm |
|
|
|
|
|
|
|
|