So you aren’t projecting your 3d x,y,z movement to 2d x,y movement correctly. If you took a “top down” view of your movement vector the 2d x,y projection would have a magnitude of 1 regaurdles of the pitch, even if your ship is pointing straight up or down. The quickest answer is to factor in the pitch for your x,y movement
def spaceCraftSpeedUpTask( self, task ):
dt = globalClock.getDt()
self.vel = self.origVel + ( self.accel * dt )
dist = self.vel
correction = math.pi / 2
angleX = math.radians( self.mSpaceShipModel.getH( ) )
angleY = math.radians( self.mSpaceShipModel.getH( ) )
angleZ = math.radians( self.mSpaceShipModel.getP( ) )
dx = dist * math.cos( correction - angleX ) * math.cos( angleZ )
dy = dist * -math.sin( correction - angleY ) * math.cos( angleZ )
dz = dist * -math.sin( angleZ )
self.mSpaceShipModel.setPos( Vec3( self.mSpaceShipModel.getX( ) - dx, self.mSpaceShipModel.getY( ) - dy, self.mSpaceShipModel.getZ( ) - dz ) )
self.origVel = self.vel
return Task.cont
I’ve downloaded your game.
Wow.
Good graphics
Martin