Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (477)
Games in Android Showcase (107)
games submitted by our members
Games in WIP (536)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Why does my camera's forward motion 'snap' to weird yaw angles?  (Read 205 times)
0 Members and 1 Guest are viewing this topic.
Offline pixelprime

Junior Member


Medals: 3



« Posted 2014-01-11 21:43:05 »

Hi all,

I've been using this camera movement code (below) for ages now, but it has a strange bug that I've never been able to crack.

First, here's the code. The variables pitch and yaw represent the camera's yaw and pitch angles in degrees (in the 0-359 range).

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
public void moveCamForwardWithValue(float value)
   {      
      double cameraPitchInRadians = Math.toRadians(pitch);
      double cameraYawInRadians = Math.toRadians(yaw);
      float f = (float)Math.cos(cameraPitchInRadians);
     
      // prevent pitch angle from affecting forward speed
     if (!flyMode) { f = 1; }
     
      float addX = value  * f * (float)Math.sin(cameraYawInRadians);
      float addZ = value  * f * (float)Math.cos(cameraYawInRadians);
      float addY = value  * (float)Math.sin(cameraPitchInRadians);
     
      speedX -= addX;
      speedZ += addZ;
       
       if (flyMode) { speedY += addY; }
   }


What happens is that the user presses the 'forward' key (such as W) and moveCamForwardWithValue is called with a suitable input value.

Every frame the camera's position is modified by the speedX and speedZ values (and speedY if flight mode is enabled).

The camera moves forward fine, but the YAW angle it moves along doesn't always seem to be correct. Even stranger is that if I stay moving long enough, the movement 'snaps' to another yaw angle, almost as if it's eventually snapping to the yaw angle it should've been on all along.

I should add that the flyMode variable is a toggle to allow the camera to travel up / down along the pitch vector (as if flying) for debugging purposes.

I hope all of the above makes sense, please let me know if any further clarification is needed.

Tearing my hair out on this one!

Thanks Smiley
Online Drenius
« Reply #1 - Posted 2014-01-12 00:34:54 »

This code looks ok so far, could you ... maybe make a video or a more detailed explanation of your problem?
Oh, and must addX really be subtracted?
Offline zFollette

Junior Member


Exp: 2 years


I like jokes


« Reply #2 - Posted 2014-01-12 18:11:18 »

Assuming you are using LWJGL, are you calling glLoadIdentity() before you call glTranslate()?

Humor will keep you alive.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

CogWheelz (7 views)
2014-07-30 21:08:39

Riven (20 views)
2014-07-29 18:09:19

Riven (13 views)
2014-07-29 18:08:52

Dwinin (12 views)
2014-07-29 10:59:34

E.R. Fleming (32 views)
2014-07-29 03:07:13

E.R. Fleming (12 views)
2014-07-29 03:06:25

pw (42 views)
2014-07-24 01:59:36

Riven (42 views)
2014-07-23 21:16:32

Riven (29 views)
2014-07-23 21:07:15

Riven (30 views)
2014-07-23 20:56:16
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!