Third-Person Spaceship Shooter

Hi,



I’m having a problem with the controls of my craft. My friend developed the part of controls, so I’m having more difficulty. In the method simpleUpdate () we made Node player (which contains the spaceship and Spatial Camera cam) make it go forward.



I would like to rotate the Node player with WASD controls (Up, Left, Down, Right) and make it keep going forward in the new direction.



Here’s the code we have:

(Sorry for the English GoogleTranslator, we’re desperate, this is a job for college next Tuesday and challenges, as well as the programming language are great for us)



Thanks and sorry if I can not find my question in another post on the forum.



public void simpleUpdate(float tpf) {

Vector3f vecCam;

vecCam = cam.getDirection();

player.move((vecCam).mult((float)speed));

}



public void onAnalog(String name, float value, float tpf) {

direction.set(cam.getDirection()).normalizeLocal();

if (name.equals(“rotateUp”)) {

player.rotate(angleIncrement, 0, 0);

}



}

As I didn’t understand a word he said, he’s looks like Brazilian, and I’m one. I’ll try to help him by speaking in portuguese.



Velho, não entendi o que você disse. Poderia tentar explicar com calma qual é o problema? Não deu para entender o que você quer.



Você quer que quando a pessoa aperte W a câmera gire para cima, e A para o lado esquerdo, por exemplo? Caso seja isso, porque você não usa as setas do teclado? Na FlyByCamera este é o comportamento dela. Caso queira mudar somente as teclas, tente mudar o mapeamento com o InputManager. Ajuste a a velocidade de rotação com setRotationSpeed()



Caso você queira que a câmera siga a nave à uma certa distância, você pode usar um CharacterControl e uma ChaseCamera para resolver seu problema, mas aí para olhar para os lados, seria necessário que o jogador utilizasse o mouse também. Isso também pode ser mudado, só basta mudar os mapeamentos.



Espero ter ajudado.

Just in case it’s not portuguese…



I think they are trying to rotate the camera based on key presses. In which case they should look at the code for FlyCam.java, the function rotateCamera().

Eu tenho uma nave, a câmera deve ficar sempre atrás desta nave, por isso eu fiz uma câmera CameraNode. A nave deve sempre seguir para a frente, sozinha, e o que quero é mudar a sua direção quando pressionada as teclas. A dúvida é que, rotacionando o Node que contém o Spatial spaceship e a CameraNode cam nada acontece. Rotacionando o Spatial, somente ele rotaciona. E a câmera não consigo rotacionar, e nem sei se funcionará.



Não sei se está claro, um pouco mais do código ajudaria? Preciso desenvolver este game para um trabalho da faculdade, para amanhã e estou apanhando há um bom tempo. Muito obrigado, e obrigado por reconhecer minha nacionalidade shirkit.

I am Brazilian, but also in English follows:



I have a ship and the camera should always be behind this ship, so I did a camera CameraNode. The ship should always go forward, and what I want is to change its direction when a key is pressed. The question is, rotating the Node that contains the spaceship and Spatial CameraNode cam nothing happens. Rotating Spatial, it only rotates. And the camera can not rotate, and do not know whether it will work.



Do not know if it is clear, a little more code would help? Need to develop this game for a college work for tomorrow and I am picking up a long time. Thank you, and thank you for recognizing my nationality shirkit.

@allysonsouza você deveria usar então uma ChaseCamera (https://wiki.jmonkeyengine.org/legacy/doku.php/jme3:advanced:making_the_camera_follow_a_character?s[]=chasecamera). Com ela, você simplifica o processo inteiro de deixar a câmera seguindo a nave em 3a pessoa.



Agora, no simpleUpdate você sempre move o spatial da nave para frente, e se o player apertar um botão, você então aplica uma rotação na direção desejada. Lembre-se de deixar tudo independente de framerate, usando o valor “tpf” para multiplicar as coisas.



No próximo post que você fizer, adicione um @shirkit para que eu receba um email quando você responder, assim posso vir aqui mais rápido.

Valeu @shirkit, vou testar com uma ChaseCamera e a noite posto os resultados obtidos!

@shirkit, o resultado do trabalho (desculpe não postar antes).

Eu estava tentando mudar para ChaseCam quando meu amigo resolveu com CameraNode e Quaternions, na verdade ainda não vi como ele resolveu, mas tá ai um primeiro vídeo do que fizemos: