|
|
|
Autor |
Mensagem |
BielziimSM
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 |
|
|
welgomes
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 |
|
|
BielziimSM
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
|
|
Seg Fev 02, 2015 5:24 pm |
|
|
kleiton157
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:
| | 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 |
|
|
welgomes
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 é.
|
|
Seg Fev 02, 2015 9:45 pm |
|
|
welgomes
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
| |
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 |
|
|
welgomes
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
| |
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 |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
Ter Fev 03, 2015 11:19 am |
|
|
|
|
|
|
|
|