Como posso melhorar meu código.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como posso melhorar meu código.

Mensagem por 7hiagomp em Sab 07 Jun 2014, 22:02

TOPICO ATUALIZADO.
como ninguém respondeu ainda, gostaria de deixar claro que eu NAO QUERO UMA ENGINE PRONTA, estou a procura de ajuda de verdade, se você me der uma dica eu vou estudar sobre, você não precisa resolver o problema pra mim, mas por favor me diga apenas onde posso encontrar a solução.  obrigado.


Galera eu estou no momento desenvolvendo um jogo que a mecânica principal consiste em uma garra que pega caixas e as move. A mecânica principal já funciona, mas ainda é possível bugá-la.  Os bugs são;

Os bugs, ou melhor, abusos de bugs que podem ocorrer;

> Eu gostaria que quando ao ser carregada se a caixa colidisse com qualquer objeto ela caísse da garra, como se o player tivesse soltado a barra de espaço.  (Existe um comando para simular que o player soltou o espaço quando isso acontecer, sem que ele de fato tenha feito isso?)
> se o player tirar uma caixa que está embaixo de uma pilha maior que duas caixas, as caixas ficam voando.
> O player pode pegar uma caixa quando anda para os lados  - corrigido.
> O player pode, quando não impedido pela colisão, pegar mais de 1 caixa. -corrigido
> Se o player soltar uma caixa e apertar espaço bem rapidamente, a caixa cai e ignora a colisão com os sólidos abaixo. -corrigido

minha experiência pelo que podem ver é iniciante What a Face

obj_garra;

CREATE:

Código:

// posicao da garra
global.posy = 0
global.posx = 0
global.request = false //o player apertou espaço e quer pegar uam caixa.

step:

Código:
if (global.start = true)
{
if (keyboard_check(vk_space))
   {
    global.request = true
    sprite_index = spr_garra
    image_index = 1
    image_speed = 0
   }
    else if (keyboard_check_released(vk_space))
        {
         global.request = false
         global.granted = false
         sprite_index = spr_garra
         image_index = 0
         image_speed = 0
         }
    }

ojb_caixa
Create:

Código:
global.granted = false // o player [b]pode[/b] pegar uma caixa
contato = false;
caixa = 0

STEP:

Código:
if (global.request == true) && (contato == true)
   {
    global.granted = true
   }

if (global.granted = true) && (contato == true)
    {
     y = global.posy
     x = global.posx
     }
     else if(not place_free(x, y + vspeed))
        {
          contato = false
          move_contact_solid(270, 10);
          gravity = 0;
          vspeed = 0;
        }
        else
          gravity = 2;
 
if (keyboard_check_released(vk_space))
   {
    contato = false
   }  

colisão = garra:

Código:
//aqui eu pus uma checagem de proximidade de 50px entre os objetos garra e caixa.
if (x > global.posx - 50) && (x < global.posx + 50) && (y > global.posy - 50) && (y < global.posy + 50)
{
 contato = true
}

valeu.

7hiagomp

Número de Mensagens : 124
Idade : 31
Data de inscrição : 21/04/2014
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como posso melhorar meu código.

Mensagem por -Flash em Ter 10 Jun 2014, 20:48

Tenta por isso no código:
Código:
keyboard_clear(key)
no lugar de key você poe a tecla pressionada

-Flash

Número de Mensagens : 16
Data de inscrição : 08/06/2014
Reputação : 20
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como posso melhorar meu código.

Mensagem por 7hiagomp em Ter 10 Jun 2014, 21:02

Obrigado flash mas infelizmente isso não funcionou. A questão é que quando a caixa colide com objeto (que são outras caixas ou a parte externa do cenário) o lugar que ela cai ela continua encostado nesse mesmo objeto, e isso impossibilita o player de pegar a caixa uma vez que ela tenha caído.

7hiagomp

Número de Mensagens : 124
Idade : 31
Data de inscrição : 21/04/2014
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como posso melhorar meu código.

Mensagem por manobrother em Ter 10 Jun 2014, 21:28

Olha cara eu não sou expert nessas coisas mas na primeira duvida eu acho que voce devia de alguma forma anular o código de carregar a caixa.(desculpe mas nao posso te ajudar mais)

Já o segundo acho que devia pôr gravidade nas caixas ai elas cairiam

manobrother

Número de Mensagens : 206
Idade : 16
Data de inscrição : 31/10/2013
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Como posso melhorar meu código.

Mensagem por Conteúdo patrocinado Hoje à(s) 10:32


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum