|
|
|
Autor |
Mensagem |
welgomes
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 |
|
|
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
|
|
Tentei fazer umas gambiarras com esses códigos mas não consegui
|
|
Seg Fev 02, 2015 1:41 pm |
|
|
welgomes
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 |
|
|
BielziimSM
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:
| | HideObject('Button0'); |
No OnCollision ou OnInteract do CuboArea:
| | ShowObject('Button0'); |
E No botão:
| | 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 |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
|
Consegui.
No MainLoop do mapa acrescenta
| |
//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 |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
Seg Fev 02, 2015 4:35 pm |
|
|
BielziimSM
Usuário
Registrado: 15/12/13 Mensagens: 190
|
|
|
|
Será que posso usar só esse comando para todos cube áreas?
Tentei adicionando uma linha:
| | 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 |
|
|
welgomes
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 |
|
|
|
|
|
|
|
|