Monkey Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.


O fórum brasileiro de desenvolvimento de jogos na plataforma Monkey
 
InícioÚltimas imagensProcurarRegistarEntrar
Entrar
Nome de usuário:
Senha:
Entrar automaticamente: 
:: Esqueci-me da senha
Últimos assuntos
» A pagina fica sempre em branco.
Problemas com seno e cosseno Icon_minitime3/9/2011, 11:27 por vinians

» [PROJETO] Space Quest
Problemas com seno e cosseno Icon_minitime3/9/2011, 11:18 por vinians

» Mais uma banana no sitie...
Problemas com seno e cosseno Icon_minitime3/9/2011, 09:34 por vinians

» [Site] Inauguração do nosso site de desenvolvimento XCreator Minigames
Problemas com seno e cosseno Icon_minitime1/9/2011, 17:05 por vinians

» [PROJETO] PacMonkey
Problemas com seno e cosseno Icon_minitime30/8/2011, 16:22 por vinians

» [PROJETO] [APRENDIZADO] Rocks
Problemas com seno e cosseno Icon_minitime19/8/2011, 16:15 por vinians

» [seção críticas e sugestões] Editar tópicos
Problemas com seno e cosseno Icon_minitime19/8/2011, 16:02 por vinians

» Tabela - Arquivos de áudio compatíveis - HTML5
Problemas com seno e cosseno Icon_minitime16/8/2011, 14:43 por vinians

» Bom dia,Monkey Brasil!
Problemas com seno e cosseno Icon_minitime16/8/2011, 14:09 por GMLucas

Palavras-chaves
parte
Procurar
 
 

Resultados por:
 
Rechercher Pesquisa avançada
Parceiros
Fórum grátis


Compartilhe | 
 

 Problemas com seno e cosseno

Ver o tópico anterior Ver o tópico seguinte Ir para baixo 
AutorMensagem
CaDU


Membro
Mensagens : 14
Data de inscrição : 06/08/2011

Parâmetros
Advertências:
Problemas com seno e cosseno Left_bar_bleue0/0Problemas com seno e cosseno Empty_bar_bleue  (0/0)

Problemas com seno e cosseno Empty
MensagemAssunto: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime8/8/2011, 13:20

Estava explorando a ferramenta na tentativa de criar um jogo simples estilo Asteroids quando me deparei com problemas no movimento do player.

O código está aparentemente correto, até mesmo confirmei o algoritmo de deslocamento com exemplos na internet, porém como podem ver no link abaixo a nave não está se comportando como deveria:

Monkey Asteroids

Segue o fonte do projeto:
Código:
Import mojo

Function Main()
   New monkeyAsteroids
End

Class monkeyAsteroids Extends App
   Function degToRad(angle:Float)
      angle *= (3.14159265 / 180)
      Return angle
   End

   Field playerX:Float
   Field playerY:Float
   Field playerAngle:Float
   Field playerThrust:Float
   Field playerXSpeed:Float
   Field playerYSpeed:Float
   Field playerFrame:Int
   Field playerSprite:Image
      
   Method OnCreate()
      SetUpdateRate 60
      playerX = DeviceWidth / 2
      playerY = DeviceHeight / 2
      playerAngle = 0
      playerThrust = 0.5
      playerXSpeed = 0
      playerYSpeed = 0
      playerFrame = 0
      playerSprite = LoadImage("spPlayer.png", 2, Image.MidHandle)
   End
   
   Method OnUpdate()
      
      If KeyDown(KEY_LEFT)
         playerAngle += 5
      Endif
      
      If KeyDown(KEY_RIGHT)
         playerAngle -= 5
      Endif
      
      If KeyDown(KEY_UP)
         playerFrame = 1
         playerXSpeed += playerThrust * math.Sin(degToRad(playerAngle))
         playerYSpeed += playerThrust * math.Cos(degToRad(playerAngle))   
      Else
         playerFrame = 0
      Endif
      
      If playerXSpeed > 8
         playerXSpeed = 8
      End

      If playerYSpeed > 8
         playerYSpeed = 8
      End
      
      If playerXSpeed < -8
         playerXSpeed = -8
      End

      If playerYSpeed < -8
         playerYSpeed = -8
      End
      
      playerX += playerXSpeed
      playerY -= playerYSpeed
      
      If playerX < -64
         playerX = DeviceWidth + 64
      Endif
      
      If playerX > DeviceWidth + 64
         playerX = -64
      Endif
      
      If playerY < -64
         playerY = DeviceHeight + 64
      Endif
      
      If playerY > DeviceHeight + 64
         playerY = -64
      Endif
   End
   
   Method OnRender()
      Cls 0, 0, 0
      SetColor(255, 255, 255)
      SetBlend(0)
      DrawText("Monkey Asteroids by Carlos Mahnke", DeviceWidth / 2, 16, 0.5, 0)
      DrawText("Setas direcionais: Movimento  | ?: Tiro", DeviceWidth / 2, 32, 0.5, 0)
      DrawImage(playerSprite, playerX, playerY, playerAngle, 1, 1, playerFrame)
   End
End

Grato pela atenção!
Ir para o topo Ir para baixo
MonkeyBR
MonkeyBR

Administrador
Mensagens : 34
Data de inscrição : 04/08/2011
Localização : Rio

Parâmetros
Advertências:
Problemas com seno e cosseno Left_bar_bleue0/0Problemas com seno e cosseno Empty_bar_bleue  (0/0)

Problemas com seno e cosseno Empty
MensagemAssunto: Re: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime8/8/2011, 13:28

Carlos Mahnke escreveu:
Estava explorando a ferramenta na tentativa de criar um jogo simples estilo Asteroids quando me deparei com problemas no movimento do player.

O código está aparentemente correto, até mesmo confirmei o algoritmo de deslocamento com exemplos na internet, porém como podem ver no link abaixo a nave não está se comportando como deveria:

Monkey Asteroids

Segue o fonte do projeto:
Código:
Import mojo

Function Main()
   New monkeyAsteroids
End

Class monkeyAsteroids Extends App
   Function degToRad(angle:Float)
      angle *= (3.14159265 / 180)
      Return angle
   End

   Field playerX:Float
   Field playerY:Float
   Field playerAngle:Float
   Field playerThrust:Float
   Field playerXSpeed:Float
   Field playerYSpeed:Float
   Field playerFrame:Int
   Field playerSprite:Image
      
   Method OnCreate()
      SetUpdateRate 60
      playerX = DeviceWidth / 2
      playerY = DeviceHeight / 2
      playerAngle = 0
      playerThrust = 0.5
      playerXSpeed = 0
      playerYSpeed = 0
      playerFrame = 0
      playerSprite = LoadImage("spPlayer.png", 2, Image.MidHandle)
   End
   
   Method OnUpdate()
      
      If KeyDown(KEY_LEFT)
         playerAngle += 5
      Endif
      
      If KeyDown(KEY_RIGHT)
         playerAngle -= 5
      Endif
      
      If KeyDown(KEY_UP)
         playerFrame = 1
         playerXSpeed += playerThrust * math.Sin(degToRad(playerAngle))
         playerYSpeed += playerThrust * math.Cos(degToRad(playerAngle))   
      Else
         playerFrame = 0
      Endif
      
      If playerXSpeed > 8
         playerXSpeed = 8
      End

      If playerYSpeed > 8
         playerYSpeed = 8
      End
      
      If playerXSpeed < -8
         playerXSpeed = -8
      End

      If playerYSpeed < -8
         playerYSpeed = -8
      End
      
      playerX += playerXSpeed
      playerY -= playerYSpeed
      
      If playerX < -64
         playerX = DeviceWidth + 64
      Endif
      
      If playerX > DeviceWidth + 64
         playerX = -64
      Endif
      
      If playerY < -64
         playerY = DeviceHeight + 64
      Endif
      
      If playerY > DeviceHeight + 64
         playerY = -64
      Endif
   End
   
   Method OnRender()
      Cls 0, 0, 0
      SetColor(255, 255, 255)
      SetBlend(0)
      DrawText("Monkey Asteroids by Carlos Mahnke", DeviceWidth / 2, 16, 0.5, 0)
      DrawText("Setas direcionais: Movimento  | ?: Tiro", DeviceWidth / 2, 32, 0.5, 0)
      DrawImage(playerSprite, playerX, playerY, playerAngle, 1, 1, playerFrame)
   End
End

Grato pela atenção!
Amigão, ta ficando legal seu jogo! Creio que o problema é que você esta convertendo de Graus para Radianos sendo que o Monkey já está em graus!
Flws!
Ir para o topo Ir para baixo
https://monkeybrasil.forumeiros.com
CaDU


Membro
Mensagens : 14
Data de inscrição : 06/08/2011

Parâmetros
Advertências:
Problemas com seno e cosseno Left_bar_bleue0/0Problemas com seno e cosseno Empty_bar_bleue  (0/0)

Problemas com seno e cosseno Empty
MensagemAssunto: Re: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime8/8/2011, 13:33

Todas as referências que consultei pra confirmar o algoritmo do movimento da nave utilizam a conversão pra radiano.

Confesso que sou ruim com matemática então não sei bem qual a finalidade disso, em todo caso usando em graus também não funciona ou fica até pior =/
Ir para o topo Ir para baixo
MonkeyBR
MonkeyBR

Administrador
Mensagens : 34
Data de inscrição : 04/08/2011
Localização : Rio

Parâmetros
Advertências:
Problemas com seno e cosseno Left_bar_bleue0/0Problemas com seno e cosseno Empty_bar_bleue  (0/0)

Problemas com seno e cosseno Empty
MensagemAssunto: Re: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime8/8/2011, 14:06

Amigo, fiz algumas alterações na matemática do código e funcionou veja:
Código:

Import mojo

Function Main()
  New monkeyAsteroids
End

Class monkeyAsteroids Extends App
  Function degToRad(angle:Float)
      angle *= (3.14159265 / 180)
      Return angle
  End

  Field playerX:Float
  Field playerY:Float
  Field playerAngle:Float
  Field playerThrust:Float
  Field playerXSpeed:Float
  Field playerYSpeed:Float
  Field playerFrame:Int
  Field playerSprite:Image
     
  Method OnCreate()
      SetUpdateRate 60
      playerX = DeviceWidth / 2
      playerY = DeviceHeight / 2
      playerAngle = 0
      playerThrust = 0.2
      playerXSpeed = 0
      playerYSpeed = 0
      playerFrame = 0
      playerSprite = LoadImage("spPlayer.png", 2, Image.MidHandle)
  End
 
  Method OnUpdate()
     
      If KeyDown(KEY_LEFT)
        playerAngle -= 5
      Endif
     
      If KeyDown(KEY_RIGHT)
        playerAngle += 5
      Endif
     
      If KeyDown(KEY_UP)
        playerFrame = 1
        playerXSpeed += playerThrust * math.Cos(playerAngle)
        playerYSpeed += playerThrust * math.Sin(playerAngle) 
      Else
        playerFrame = 0
      Endif
     
      If playerXSpeed > 8
        playerXSpeed = 8
      End

      If playerYSpeed > 8
        playerYSpeed = 8
      End
     
      If playerXSpeed < -8
        playerXSpeed = -8
      End

      If playerYSpeed < -8
        playerYSpeed = -8
      End
     
      playerX += playerXSpeed
      playerY += playerYSpeed
     
      If playerX < -64
        playerX = DeviceWidth + 64
      Endif
     
      If playerX > DeviceWidth + 64
        playerX = -64
      Endif
     
      If playerY < -64
        playerY = DeviceHeight + 64
      Endif
     
      If playerY > DeviceHeight + 64
        playerY = -64
      Endif
  End
 
  Method OnRender()
         Local x2, y2
      Cls 0, 0, 0
      SetColor(255, 255, 255)
      SetBlend(0)
      DrawText("Monkey Asteroids by Carlos Mahnke", DeviceWidth / 2, 16, 0.5, 0)
      DrawText("Setas direcionais: Movimento  | ?: Tiro", DeviceWidth / 2, 32, 0.5, 0)
         x2 = playerX + Cos(playerAngle) * 10
         y2 = playerY + Sin(playerAngle) * 10
         DrawLine(playerX, playerY, x2, y2)
      SetColor(255, 0, 0)
         DrawCircle(x2, y2, 4)
'      DrawImage(playerSprite, playerX, playerY, playerAngle, 1, 1, playerFrame)
  End
End
Obs. Substitui a nave por um representante primitivo pois nao tinha a nave. Aqui deu certo!
Flws!
Ir para o topo Ir para baixo
https://monkeybrasil.forumeiros.com
CaDU


Membro
Mensagens : 14
Data de inscrição : 06/08/2011

Parâmetros
Advertências:
Problemas com seno e cosseno Left_bar_bleue0/0Problemas com seno e cosseno Empty_bar_bleue  (0/0)

Problemas com seno e cosseno Empty
MensagemAssunto: Re: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime8/8/2011, 14:31

Funcionou mesmo, o seu só estava indo pro lado errado a princípio (quando atualizei no meu a nave andava pra trás XP).

Versão funcional:
Monkey Asteroids

Fonte atualizado:
Código:
Import mojo

Function Main()
  New monkeyAsteroids
End

Class monkeyAsteroids Extends App
  Field playerX:Float
  Field playerY:Float
  Field playerAngle:Float
  Field playerThrust:Float
  Field playerXSpeed:Float
  Field playerYSpeed:Float
  Field playerFrame:Int
  Field playerSprite:Image
     
  Method OnCreate()
      SetUpdateRate 60
      playerX = DeviceWidth / 2
      playerY = DeviceHeight / 2
      playerAngle = 0
      playerThrust = 0.5
      playerXSpeed = 0
      playerYSpeed = 0
      playerFrame = 0
      playerSprite = LoadImage("spPlayer.png", 2, Image.MidHandle)
  End
 
  Method OnUpdate()
     
      If KeyDown(KEY_LEFT)
        playerAngle += 5
      Endif
     
      If KeyDown(KEY_RIGHT)
        playerAngle -= 5
      Endif
     
      If KeyDown(KEY_UP)
        playerFrame = 1
        playerXSpeed -= playerThrust * math.Sin(playerAngle)
        playerYSpeed -= playerThrust * math.Cos(playerAngle) 
      Else
        playerFrame = 0
      Endif
     
      If playerXSpeed > 8
        playerXSpeed = 8
      End

      If playerYSpeed > 8
        playerYSpeed = 8
      End
     
      If playerXSpeed < -8
        playerXSpeed = -8
      End

      If playerYSpeed < -8
        playerYSpeed = -8
      End
     
      playerX += playerXSpeed
      playerY += playerYSpeed
     
      If playerX < -64
        playerX = DeviceWidth + 64
      Endif
     
      If playerX > DeviceWidth + 64
        playerX = -64
      Endif
     
      If playerY < -64
        playerY = DeviceHeight + 64
      Endif
     
      If playerY > DeviceHeight + 64
        playerY = -64
      Endif
  End
 
  Method OnRender()
      Cls 0, 0, 0
      SetColor(255, 255, 255)
      SetBlend(0)
      DrawText("Monkey Asteroids by Carlos Mahnke", DeviceWidth / 2, 16, 0.5, 0)
      DrawText("Setas direcionais: Movimento  | ?: Tiro", DeviceWidth / 2, 32, 0.5, 0)
      DrawImage(playerSprite, playerX, playerY, playerAngle, 1, 1, playerFrame)
  End
End
Ir para o topo Ir para baixo
MonkeyBR
MonkeyBR

Administrador
Mensagens : 34
Data de inscrição : 04/08/2011
Localização : Rio

Parâmetros
Advertências:
Problemas com seno e cosseno Left_bar_bleue0/0Problemas com seno e cosseno Empty_bar_bleue  (0/0)

Problemas com seno e cosseno Empty
MensagemAssunto: Re: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime8/8/2011, 14:37

Show! Agora funcionou mesmo. Gostei da nave! Que venham os asteroides heheehe
Tópico Resolvido. Trancado.
Ir para o topo Ir para baixo
https://monkeybrasil.forumeiros.com
Conteúdo patrocinado



Problemas com seno e cosseno Empty
MensagemAssunto: Re: Problemas com seno e cosseno   Problemas com seno e cosseno Icon_minitime

Ir para o topo Ir para baixo
 

Problemas com seno e cosseno

Ver o tópico anterior Ver o tópico seguinte Ir para o topo 
Página 1 de 1

Permissões neste sub-fórumNão podes responder a tópicos
Monkey Brasil :: Perguntas e Respostas-