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
welgomes
Usuário
Usuário


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

Então no simples momento de apertar a tecla para interagir com o objeto que se está colidindo o código executa inúmeras vezes.
Use as funções SetWaitKeyUp(), IsKeyPress() e GetWaitKeyIsUp para garantir que o código irá rodar uma única vez.


Dom Fev 01, 2015 1:15 am Exibir perfil de usuários
BielziimSM
Usuário
Usuário


Registrado: 15/12/13
Mensagens: 190

Tentei fazer umas gambiarras com esses códigos mas não consegui Mad
Seg Fev 02, 2015 1:41 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


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

Vixi! Eu também tentei e deu esse mesmo problema, vou tentar pensar em outra coisa, se achar a solução eu posto.
Seg Fev 02, 2015 3:33 pm Exibir perfil de usuários
BielziimSM
Usuário
Usuário


Registrado: 15/12/13
Mensagens: 190

Criei uma solução alternativa, Criei 1 Botão o Objeto que e uma madeira e um CuboArea!

No OnCreate do mapa coloquei:
Código:
HideObject('Button0');


No OnCollision ou OnInteract do CuboArea:
Código:
ShowObject('Button0');


E No botão:
Código:
WriteGlobalVar('acumulador', ReadGlobalVar('acumulador') + 1);
        SetLabelText('Label1',(ReadGlobalVar('acumulador')));
        ExplodeObject('Tronco0', 3, 30);
        SetObjectPosition('CuboArea0', 50, 50 ,50);
        HideObject('Button2');
       


Funcionou certinho ! Mas no caso terei que criar um botão para cada madeira a ser coletada pelo caso do comando SetObjectPosition e o ExplodeObject ao que se refere ao tronco e o cubo área, então tenho que criar vários botões e em cada eles vão deletar e mover os objetos por exemplo: tronco1 , CuboArea1 .
Queria poder reutilizar esse botão para todos os troncos.
Tem como ativar um comando "If" para que se tiver colidindo com tal objeto ou em tal posição ex: x de 20 a 30, y de 0 a 2, z de 3 a 10! seria possível algo assim?
Seg Fev 02, 2015 3:58 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


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

Consegui.
No MainLoop do mapa acrescenta

Código:

//Se estiver colidindo com o 'cubo área'
if GetCollidedObject2() = 'CuboArea0' then
begin
    //SE APERTOU A TECLA 'ENTER'
    if IsKeyPress(ENTER) and GetWaitKeyIsUp then
    begin
        //ACUMULA MAIS 1
        WriteGlobalVar('acumulador', ReadGlobalVar('acumulador') + 1);

        //MOSTRA NA TELA
        SetLabelText('Label1', ReadGlobalVar('acumulador'));
             
        SetWaitKeyUp(ENTER);
    end;       
end;


Não esquece de apagar o código de acumular do OnInteract do objeto 'cubo área'.


Seg Fev 02, 2015 4:25 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/

O nome do arquivo é VariavelAcumuladoraExemplo2.rar


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


Registrado: 15/12/13
Mensagens: 190

Será que posso usar só esse comando para todos cube áreas?
Tentei adicionando uma linha:
Código:
if GetCollidedObject2() = 'CuboArea1' then


Mas não funcionou. Vou ter de criar vários códigos desse, um para cada cuboarea?
Seg Fev 02, 2015 4:36 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


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

O que você esta tentando fazer agora?
Coletar troncos?
Se for isso acho que o Dantas postou um exemplo de coletar argolas (ou moedas não lembro) e dá para aproveitar o script dele.
Seg Fev 02, 2015 4:45 pm Exibir perfil de usuários
   3D Game Builder - Índice » Programação Ir à página Anterior  1, 2, 3, 4  Próximo
Página 2 de 4