Ativar um comando através de variavel
Ir à página Anterior  1, 2, 3, 4  Próximo
 
   3D Game Builder - Índice » Programação
Ativar um comando através de variavel
Autor Mensagem
BielziimSM
Usuário
Usuário


Registrado: 15/12/13
Mensagens: 190

Coletar troncos ,no meu caso é chegou perto do tronco ,apertou enter coleta +1 ,destrói o objeto do tronco e joga o cubo area pra fora do mapa!mas queria deixar o mais simplificado possível os scripts porque se não terei de criar linhas e mais linhas de scripts , se tenho 20 troncos no mapa terei de colocar 20 scripts desse ultimo que você me mandou!


Seg Fev 02, 2015 4:49 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Daria para simplificar com matriz ou vetores, mas a linguagem não dá suporte.
Ou com associação dinâmica de evento, um objeto chamado TNotifyEvent da linguagem Delphi, mas o 3DGB não dá suporte.

O mais próximo disso é fazer uma gambiarra (adaptação técnica).
Cria os objetos com mesmo nome e enumerados:
Tronco0, Tronco1, Tronco2, Tronco3, etc.

Depois faz um for (laço) que conta até o número total de troncos e vai tentando acessar os objetos pelo nome.

Posta o arquivo de modelagem do seu tronco, quero baixar e fazer uns testes aqui com essa gambiarra.
Seg Fev 02, 2015 5:06 pm Exibir perfil de usuários
BielziimSM
Usuário
Usuário


Registrado: 15/12/13
Mensagens: 190

Ta ai o download do tronco: http://www.4shared.com/rar/21rDDgPxba/Tronco.html?

A ideia minha era essa, o cubo área executar o script e o tronco só de enfeite e ao final do script que é adicionar +1 a variável executar um comando para destruir o tronco que é o ExplodeObject, mas se tu quiser tentar de outra forma usando só o tronco pode tentar Very Happy



Seg Fev 02, 2015 5:24 pm Exibir perfil de usuários
kleiton157
Usuário
Usuário


Registrado: 06/05/11
Mensagens: 1170
Localização: Na cáducarai

Amigo, pensei duas maneiras de fazer isso.

A primeira é destruir o objeto(ou move-lo) ao apertar o botão, no caso fica assim no oncolision do cubo:
Código:
if iskeypress(G) then
begin
writeglobalvar('acumulador',readglobalvar('acumulador')+1);
setobjectposition('tronco',0,-99,0); //---- aqui você pode colocar uma posição pra que ele apareça em outro lugar, ou coloca abaixo do solo.
Setobjectposition('cuboarea',0,getobjectpositiony('cuboarea'),0); ou mesmo lugar que o tronco. Se for fazer isso, lembre se de diminuir a posição Y pra ele ficar no solo;
end;


Desse jeito, esse único tronco pode ser usado várias vezes pois ele vai trocando de lugar...

Se quiser, da pra colocar uns 5 troncos no mapa e colocar pra quando for coletado ele mude a posição de forma aleatória, assim usa esses 5 troncos infinitas vezes...

_________________
________________________________________
- É nescessário ver além do que os olhos mostram
Seg Fev 02, 2015 6:09 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Eu consegui fazer, só que tem um bug bem chato que é um verdadeiro enigma.
Na última lenha soma muito mais do que 1.
E o mais estranho é que mesmo coletando em ordem diferente quando chega no último soma errado.
=\

Queimando os miolos para descobrir o que é.
Mad


Seg Fev 02, 2015 9:45 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Desisto, não tem jeito, na última lenha, soma errado, então tem que esconder ela em um lugar que o jogador não pode pegar, rs.
É bruxaria, P.Q.P.

Segue o código
Código:

if Copy(GetCollidedObject2(), 0, 5) = 'Lenha' then
begin
    //MOSTRA O NOME DA LENHA QUE PEGOU
    SetLabelText('Label1', GetCollidedObject2());
   
    //AFUNDA LENHA ESCONDENDO-A DEBAIXO DO TERRENO   
    SetOBjectPosition(GetCollidedObject2(), GetObjectPositionX(GetCollidedObject2()), -10, GetObjectPositionZ(GetCollidedObject2()));
   
    //SOMA +1 NO ACUMULADOR E MOSTRA NA TELA
    WriteGlobalVar('acumulador', ReadGlobalVar('acumulador') + 1);
    SetLabelText('Label0', ReadGlobalVar('acumulador'));         
   
    //BARRA SIMPLES DE PONTOS
    WriteGlobalVar('pontos', ReadGlobalVar('pontos') + '.');
    SetLabelText('Label2', ReadGlobalVar('pontos'));       
end;


Depois eu subo o projeto.
Seg Fev 02, 2015 10:59 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Nossa que loucura.

Eu comecei o jogo com uma lenha abaixo do terreno, evitando o jogador de pegar.
Não deu certo.

Então no OnCreate do mapa eu escondi uma lenha
Código:

HideObject('Lenha3');


Então funcionou.
E para garantir eu inseri mais uma lenha no mapa e continuou funcionando, só o Edirlei para explicar essa bruxaria, hehe.
Seg Fev 02, 2015 11:15 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Baixe em
http://wsantos.eti.br/3d_game_builder/

Nome do arquivo
ColetarLenha.rar
Ter Fev 03, 2015 11:19 am Exibir perfil de usuários
   3D Game Builder - Índice » Programação Ir à página Anterior  1, 2, 3, 4  Próximo
Página 3 de 4