ProdutosNewsComprarDownloadsDownloadsDownloadsTutoriaisSuporteNão disponívelGaleriaForumContato  

DarkBASIC Pro
Versão de Avaliação
Patch 5.4
USB Dongle
Forum
Indique
Lista de Email
  Diário Antigo
Outros Produtos
Cartography Shop
DarkMatter
Curso 3D Studio
Combinados
Local DBPro Sites
Italy
UK

Proposta: Explicar como usar os comandos de mouse para mover a câmera.

A "Visão por Mouse" é uma característica que você já viu em muitos jogos. Esta característica permite você mover seu mouse para manipular a câmera como se fosse a visão de sua cabeça. Esta é uma técnica muito mais eficiente para mudar sua visão do que através do teclado.

Sync On
Sync Rate 30
Hide mouse
Backdrop on
Set camera range 1,5000

Fog on
Fog distance 4000
Fog color RGB(128,128,128)
Color Backdrop RGB(128,128,128)

Rem Cria Matriz
Make matrix 1,10000,10000,20,20

Rem Texturiza Matriz
Load image "grass09.bmp",1
Prepare matrix texture 1,1,1,1
Fill matrix 1,0,1

rem Randomiza a matriz
randomize matrix 1,125
X#=5000
Z#=5000

Rem Loop Principal
Do
OldCamAngleY# = CameraAngleY#
OldCamAngleX# = CameraAngleX#
CameraAngleY# = WrapValue(CameraAngleY#+MousemoveX()*0.2)
CameraAngleX# = WrapValue(CameraAngleX#+MousemoveY()*0.2)

Rem  Controla a entrada para a câmera
If Upkey()=1
XTest# = Newxvalue(X#,CameraAngleY#,10)
ZTest# = Newzvalue(Z#,CameraAngleY#,10)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
X#=XTest#
Z#=ZTest#
Endif
Endif

If Downkey()=1
XTest# = Newxvalue(X#,Wrapvalue(CameraAngleY#-180),10)
ZTest# = Newzvalue(Z#,Wrapvalue(CameraAngleY#-180),10)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
X#=XTest#
Z#=ZTest#
Endif
Endif

Yrotate camera CurveAngle(CameraAngleY#,OldCamAngleY#,24)
Xrotate camera CurveAngle(CameraAngleX#,OldCamAngleX#,24)

Y# = Get ground height(1,X#,Z#)
Position Camera X#,Y#+50,Z#

Rem Atualiza Tela
Sync
Loop

Você irá notar que nós estamos utilizando o mesmo código do último tutorial. Este código será implementado de acordo com o progresso dos comandos até que este torne-se um jogo praticável.

OldCamAngleY# = CameraAngleY#
OldCamAngleX# = CameraAngleX#
CameraAngleY# = WrapValue(CameraAngleY#+MousemoveX()*0.2)
CameraAngleX# = WrapValue(CameraAngleX#+MousemoveY()*0.2)

Neste ponto em nosso loop principal nós estamos armazenando os ângulos Y e X do eixo de rotação de nossa câmera nas variáveis "OldCamAngle". Após estes valores serem armazenados nós continuamos a inserir novos valores para as variáveis "CameraAngle". Nós estamos utilizando o comando "WrapValue" para guardar nosso ângulo com limite de 360 graus. Para mudar o valor das variáveis "CameraAngle", nós adicionamos o valor retornado com os comandos "MouseMove", multiplicado por um valor de ajuste de "0.2". Os comandos "MouseMoveX" e MouseMoveY()" retornam o número de unidade que o mouse movimentou desde a última vez que o mouse foi checado pelo movimento. Se você mover o mouse muito rapidamente para cima, baixo, esquerda ou direita, o valor retornado será muito maior do que se seu movimento fosse feito vagarosamente. O valor é baseado no tamanho de exibição que seu programa está usando. Movendo seu mouse em uma velocidade média, o valor retornado equilibra-se, normalmente, entre 8 e 16. Se novos valores forem adicionados para os ângulos de câmera, sua rotação de câmera será maior para ser útil. Para normalizar este valor nós multiplicamos o valor por 0.2 e isto irá criar um valor que é mais aceitável para rotação.

Yrotate camera CurveAngle(CameraAngleY#,OldCamAngleY#,24)
Xrotate camera CurveAngle(CameraAngleX#,OldCamAngleX#,24)
Y# = Get ground height(1,X#,Z#)
Position Camera X#,Y#+50,Z#

Após processar todas as entradas do teclado e dos comandos do mouse, nós rotacionamos a câmera utilizando os comandos de rotação da câmera. Nós usamos o comando "CurveAngle" para criar uma transição entre o antigo e o pretendido ângulo da câmera. O primeiro parâmetro neste comando é o novo ângulo que nós desejamos rotacionar a câmera. O segundo parâmetro é o ângulo atual da câmera. O terceiro parâmetro é a velocidade que nós desejamos rotacionar do ângulo antigo ao ângulo novo. O comando "CurveAngle" modifica o valor baseado na curva e então o valor usado para rotacionar é algo entre o antigo e o novo ângulo da câmera. Para um efeito interessante da câmera, tente modificar estas duas linhas de código.

OldCamAngleY# = CameraAngleY#
OldCamAngleX# = CameraAngleX#

para,

OldCamAngleY# = Camera Angle Y()
OldCamAngleX# = Camera Angle X()

utilizando os comandos "Ângulo da Câmera".

Promoção de Lançamento

Clique aqui para comprar o 
DBPro R$220,00

Clique aqui para comprar o 
DBPro para Universitários R$150,00


clique aqui para comprar o Upgrade a partir da versão clássica por R$150,00

Nova pagina 1

Esta é a barra de navegação para explorar todos os tutoriais da série "A Caça Aos Monstros" 

1.1   1.2   1.3   1.4   1.5   2.1   2.2   2.3   2.4   2.5   3.1   3.2   3.3   3.4   3.5   3.6   3.7   3.8   3.9   3.10   3.11   3.12   3.13   3.14