![]() |
|
![]() ![]() ![]() |
|
1.5 Detecção de Colisão
Pr Rem Configuração do sync Sync On Sync Rate 30 Rem Construir Cubos e colocá-los aleatoriamente For x = 1 to 5 Make object cube x,100 Position object x,Rnd(2000),0,Rnd(2000) Set object collision to boxes x Next x Rem Construir esferas Make object sphere 10,50 Position object 10,-100,0,-100 Set object collision to spheres 10 Rem loop Principal Do Rem Armazena o ângulo Y do objeto em aY# aY# = Object angle Y(10) Rem Controla a entrada para a câmera If Upkey()=1 then Move object 10,10 If Leftkey()=1 then Yrotate object 10,Wrapvalue(aY#-5) If Rightkey()=1 then Yrotate object 10,Wrapvalue(aY#+5) Rem Detecção de Colisão If Object collision(10,0)>0 then position object 10,X#,0,Z# Rem Pega a posição do jogador e armazena estes valores nas variáveis X# e Z# X# = Object position x(10) Z# = Object position z(10) Rem Pega a nova posição da câmera e armazenas estes valores nas variáveis cZ# e cX# cZ# = Newzvalue(Z#,aY#-180,100) cX# = Newxvalue(X#,aY#-180,100) Rem Posição da câmera Position Camera cX#,75,cZ# Rem Aponta a câmera para o jogador ou objeto Point camera X#,25,Z# Rem Atualiza tela Sync Loop Neste tutorial nós iremos mostar como utilizar os comandos de detecção de colisão do DarkBASIC. Nós adicionamos a detecção de colisão no código do último tutorial (Perspectiva em terceira pessoa). Set object collision to boxes x Em nosso loop onde nós criamos e colocamos objetos aleatoriamente, nós inserimos o comando "Set Object Collision To Boxes". Este comando determina o tipo de detecção de colisão para um formato de caixa (box shape) que tem a mesma forma da qual nós estamos criando. Nós estamos utilizando o loop na variável "x" para passar o número do objeto para o comando. Set object collision to spheres 10 Esta linha adiciona uma colisão parecido com o último comando de colisão exceto que o comando "Set Object Collision To Spheres" determina ao nosso jogador uma colisão do tipo esfera. Este tipo de colisão tem a mesma forma do jogador. O tipo de colisão que você dá a um objeto é uma responsabilidade sua. Tente sempre utilizar uma colisão que trabalhe melhor para o que você deseja fazer em seu programa. If Object collision(10,0)>0 then position object 10,X#,0,Z# Esta linha de código é onde todas as detecções de colisão são fornecidas. Nesta linha, se nosso jogador colidir com um dos nossos outros objetos, as variáveis X# e Z# são utilizadas para reposicionar o jogador à uma posição anterior a colisão. Note que nós colocamos esta linha após nós movermos o jogador e antes de nós armazenarmos os valores da nova posição em nossas variáveis. Fazendo isto nós podemos sempre nos assegurar que nossos valores X# e Z# nunca estão em uma posição de colisão. O comando "Object Collision" é utilizado para checar uma colisão. O primeiro valor entre parênteses deste comando é o número do primeiro objeto que nós queremos verificar o evento de colisão. O segundo número é o número do segundo objeto que nós desejamos detectar uma colisão com o primeiro objeto. Nós utilizamos um valor igual a 0 (zero) para instruir o DarkBASIC que nós queremos checar uma colisão contra qualquer outro objeto no cenário. Configurando o como 0, ele irá retornar o valor do objeto que o objeto de número 10 colide. Este comando retorna o valor igual a 0 (zero) se nenhuma colisão for detectada. Se o valor for maior que 0 (zero), um evento de colisão é detectado e nós posicionamos o objeto para onde ele estava antes de ser colidido. O outro tipo de colisão é o polígono. Este tipo de colisão você deve utilizar se você estiver colidindo com um grande objeto tal como um modelo construído como uma aplicação 3D. Agora você deve estar familiarizado com os comandos que permitem você adicionar uma detecção de colisão no DarkBASIC. Tente modificar o segundo número no comando "Object Collision" para 3. Mova em torno do espaço 3D e veja se você pode encontrar o número de colisão 3 que significa colisão com cubos. Tente modificar o objeto de colisão de cubos para esferas e vice-versa para ver a diferença entre ambos. Tente modificar a colisão de esfera para o jogador ou objeto para tipo caixa para ver as modificações entre um e outro tipo de colisão. |
|
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.® |
![]() |
![]() |