![]() |
|
![]() ![]() ![]() |
|
3.2 Rotação da Câmera através do Mouse
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". |
|
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 |
| Copyright © 2003 Dark Basic Software Limited. | ||
| Virtual Object Informática Ltda.® |
![]() |
![]() |