Conectar-se
Quem está conectado
27 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 26 Visitantes

junior rodrigues

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 08/12/2010
Número de Mensagens : 174
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://inventaku.forumeiros.com/

Como Fazer uma UMA mira a Laser ?

em Seg 26 Set 2011, 10:00
Como Fazer uma UMA mira a laser tipo a do resident evil 4 ou 5 em um jogo de top dow e quando a mira a lazer encostar em um bloco ela si limite ate la ? ( fase isso com o draw ) Flw
Atenção não utilizo o mouse nesse jogo ( o personagem ando e gira com as setas )
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Como Fazer uma UMA mira a Laser ?

em Seg 26 Set 2011, 11:36
É o seguinte: você tem uma direção e quer determinar uma distância com precisão. Você vai criar um script que pegue uma distância máxima e vá diminuido, até chegar na distância correta. Ou seja, um loop.

Pra diminuir o número de iterações, você NÃO VAI reduzindo essa distância de um em um. Você vai dividir por dois e checar se, nessa distância, o laser atinge o objetivo ou não. Se sim, reduz, se não, aumenta.
create:
variável1: distância máxima (tipo a diagonal da tela, por exemplo)
variável2: metade da variável 1
tiro:
variável3: distância atual (=variável 1)
variável4: tanto atual pra ser retirado (=variável2)
repete um monte (até variável4 ser menor ou igual a precisão desejada){
se collision_line(no ângulo e medida)
variável3-=variável4
senão
variável3+=variável4
de qualquer forma, divide por 2 a variável4
}

É, eu também não gosto de simplesmente dividir por 2. Mas já fiz muitos testes do tipo "se colidir, reduz 2/3 e se não colidir, aumenta 1/3" e a velocidade pra atingir o resultado depende da posição do objeto. Dividir por 2 foi a única que não dependia de nada. Em alguns casos é mais lenta que outras alternativas, mas em outros, é mais rápida, portanto pra se ter certeza do número de iterações, só dividindo por 2, mesmo...
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum