Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Dark GDK / Problems With First Person Movement.

Author
Message
DeeMIncGaming
15
Years of Service
User Offline
Joined: 30th Jun 2009
Location:
Posted: 1st Jul 2009 07:59 Edited at: 3rd Jul 2009 11:33
Need Help with fps movement
DeeMIncGaming
15
Years of Service
User Offline
Joined: 30th Jun 2009
Location:
Posted: 1st Jul 2009 08:42
K.I am creating a practice fps so that i can get the basic funcions of an fps down. so im having problems with my code...when i move my gun offsets itself by a small ammount in the opposite direction that i move. here is my code.


// Dark GDK - The Game Creators - www.thegamecreators.com

// the wizard has created a very simple project that uses Dark GDK
// it contains the basic code for a GDK application

// whenever using Dark GDK you must ensure you include the header file
#include "DarkGDK.h"

float camx,camy,camz,gunx,guny,gunz;
float waggle = 0;
float waggle2 = 0;
float ocamax,ocamay,ocamaz,camax,camay;
float gundist = 20.0;
float pspeed = 3;

//Stats//
float stamina = 100,maxstamina = 100;
float armor = 0,maxarmor = 100,atimer = 0;
float health = 100,maxhealth = 100,htimer = 0;
//X Stats X//
int gun = 1;
int gunhair = 1;
int gunimg = 2;
int hsign = 13;
int asign = 14;
int ssign = 15;
bool bluestate = false;
bool armoron = false;
char* guntext = "Assault Rifle";
//GameText//
char* gametext = "";
float gtimer = 0;
//X GameText X//

void UpdateCamStats();
void UpdateGunStats();

// the main entry point for the application is this function
void DarkGDK ( void )
{
dbMakeCamera(1);
dbPositionCamera(1,0,32,0);

dbMakeMatrix(1,640,640,10,10);

dbLoadImage ("bitmaps/ARhair.bmp",1);
dbLoadImage ("bitmaps/ARimg.bmp",2);
dbLoadImage ("bitmaps/Phair.bmp",3);
dbLoadImage ("bitmaps/Pimg.bmp",4);
dbLoadImage ("bitmaps/SGhair.bmp",5);
dbLoadImage ("bitmaps/SGimg.bmp",6);
dbLoadImage ("bitmaps/ARhair2.bmp",7);
dbLoadImage ("bitmaps/ARimg2.bmp",8);
dbLoadImage ("bitmaps/Phair2.bmp",9);
dbLoadImage ("bitmaps/Pimg2.bmp",10);
dbLoadImage ("bitmaps/SGhair2.bmp",11);
dbLoadImage ("bitmaps/SGimg2.bmp",12);
dbLoadImage ("bitmaps/Hsign.bmp",13);
dbLoadImage ("bitmaps/Asign.bmp",14);
dbLoadImage ("bitmaps/Ssign.bmp",15);
dbLoadImage ("bitmaps/Hsign2.bmp",16);
dbLoadImage ("bitmaps/Asign2.bmp",17);
dbLoadImage ("bitmaps/Ssign2.bmp",18);
dbLoadImage ("bitmaps/Gunfire.png",19,0);
dbLoadObject ("models/mp5.x",1);
dbFixObjectPivot ( 1 );
dbDisableObjectZDepth ( 1 );
dbSetObjectCollisionOff ( 1 );
dbLoadObject ("models/Colt.x",2);
dbFixObjectPivot ( 2 );
dbDisableObjectZDepth ( 2 );
dbSetObjectCollisionOff ( 2 );
dbLoadObject ("models/Shotgun.x",3);
dbFixObjectPivot ( 3 );
dbDisableObjectZDepth ( 3 );
dbSetObjectCollisionOff ( 3 );
dbLoadObject ("models/healthpak.x",4);
dbLoadObject ("models/armorpak.x",5);
//Gunfire//
dbMakeObjectBox ( 6, 4 , 4, 0 );
dbTextureObject ( 6 , 19 );
dbSetObjectLight ( 6 , 1 );
dbSetObjectEmissive ( 6 , 0x00646464 );
dbSetObjectAmbience ( 6 , 0x00FFFFFF );
dbFadeObject ( 6, 8000 );
dbSetObjectTransparency ( 6 , 1 );
dbHideObject ( 6 );
dbSetObjectCollisionOff ( 6 );
//X Gunfire X//
dbScaleObject (1,5000,5000,5000);
dbScaleObject (2,5000,5000,5000);
dbScaleObject (3,5000,5000,5000);
dbScaleObject (4,100,100,100);
dbScaleObject (5,100,100,100);
dbMakeObjectSphere (4,4);
dbHideObject (2);
dbHideObject (3);
dbPositionObject (4,0,0,640);
dbPositionObject (5,640,0,640);
dbSetObjectCollisionOn (4);
dbSetObjectCollisionOn (5);
// turn on sync rate and set maximum rate to 60 fps
dbSyncOn ( );
dbSyncRate ( 60 );
dbHideMouse();

// our main loop
while ( LoopGDK ( ) )
{
UpdateCamStats();
UpdateGunStats();
dbSetObjectCollisionOn(gun);
pspeed = 3;
if (dbShiftKey() && health > 0 && armoron == false) health-=0.25;
else if (dbShiftKey() && health > 0 && armor > 0 && armoron == true) armor-=0.5;

if (dbControlKey() && stamina > 0){
pspeed *= 1.5;
waggle += 0.25;
waggle2 += 0.125;
stamina -= 0.5;}
else if (dbControlKey()==0 && stamina < maxstamina){
stamina +=.5;}

//Health//
if (dbObjectHit(gun,4)==1 && health <= (maxhealth - 20))
{
dbHideObject (4);
dbSetObjectCollisionOff (4);
htimer = 120;
health += 20;
gametext = "Picked Up Health";
gtimer = 180;}
if (htimer > 0) htimer--;
if (htimer <= 0) {
dbShowObject (4);
dbSetObjectCollisionOn (4);}
//X Health X//
//Armor//
if (dbObjectHit(gun,5)==1 && armor <= (maxarmor - 20))
{
dbHideObject (5);
dbSetObjectCollisionOff (5);
armoron = true;
atimer = 120;
armor += 20;
gametext = "Picked Up Armor";
gtimer = 180;}
if (atimer > 0) atimer--;
if (atimer <= 0) {
dbShowObject (5);
dbSetObjectCollisionOn (5);}
if (armor <= 0) armoron = false;
//X Armor X//

if (dbKeyState(48) && bluestate == false) {
bluestate = true;
gunimg += 6;
gunhair += 6;
hsign += 3;
asign += 3;
ssign += 3;}
if (dbKeyState(19) && bluestate == true) {
bluestate = false;
gunimg -= 6;
gunhair -= 6;
hsign -= 3;
asign -= 3;
ssign -= 3;}
if (dbKeyState(3)){
gun = 2;
guntext = "Pistol";
gundist = 25.0f;
dbShowObject (2);
dbHideObject (1);
dbHideObject (3);
if (bluestate == false){
gunimg = 4;
gunhair = 3;}
else if (bluestate == true){
gunimg = 10;
gunhair = 9;}}
if (dbKeyState(2)){
gun = 1;
guntext = "Assult Rifle";
gundist = 20.0f;
dbShowObject (1);
dbHideObject (2);
dbHideObject (3);
if (bluestate == false){
gunimg = 2;
gunhair = 1;}
else if (bluestate == true){
gunimg = 8;
gunhair = 7;}}
if (dbKeyState(4)){
gun = 3;
guntext = "Shotgun";
gundist = 20.0f;
dbShowObject (3);
dbHideObject (1);
dbHideObject (2);
if (bluestate == false){
gunimg = 6;
gunhair = 5;}
else if (bluestate == true){
gunimg = 12;
gunhair = 11;}}


dbPositionMouse ( dbScreenWidth()/2 , dbScreenHeight()/2 );
if ( dbUpKey() || dbKeyState( 17 ) == 1 )
{
dbMoveCamera ( 1 , pspeed );
waggle += 0.5f;
waggle2 += 0.25f;
}
if ( dbDownKey() || dbKeyState( 31 ) == 1 )
{
dbMoveCamera ( 1 , -pspeed );
waggle += 0.5f;
waggle2 += 0.25f;
}

if ( dbLeftKey() || dbKeyState( 30 ) == 1 )
{
dbYRotateCamera ( 1 , dbCameraAngleY( 1 ) -90 );
dbMoveCamera ( 1 , pspeed );
dbYRotateCamera ( 1 , dbCameraAngleY( 1 ) +90 );
waggle += 0.25;
waggle2 += 0.125;
}

if ( dbRightKey() || dbKeyState( 32 ) == 1 )
{
dbYRotateCamera ( 1 , dbCameraAngleY( 1 ) + 90 );
dbMoveCamera ( 1 , pspeed );
dbYRotateCamera ( 1 , dbCameraAngleY( 1 ) -90 );
waggle += 0.25;
waggle2 += 0.125;
}

ocamax = dbCameraAngleX(1);
ocamay = dbCameraAngleY(1);
ocamaz = dbCameraAngleZ(1);
camay =dbWrapValue((dbCameraAngleY(1) + dbMouseMoveX()*0.4f));
camax =dbWrapValue((dbCameraAngleX(1) + dbMouseMoveY()*0.4f));
if ( camax > 80 && camax <180 ) camax = 80;
if ( camax < 270 && camax > 180 ) camax = 270;

dbYRotateCamera (1,dbCurveAngle(camay,ocamay,6));
dbXRotateCamera (1,dbCurveAngle(camax,ocamax,6));
dbPositionCamera(dbCameraPositionX(1),32,dbCameraPositionZ(1));

dbSetObjectToCameraOrientation (gun);
dbSetObjectToCameraOrientation (6);
dbPositionObject (6,camx,camy,camz);
dbPositionObject (gun,camx,camy,camz);

dbMoveObjectRight( gun , 15.0 + sin (waggle2/2.0f)/2.0f);
dbMoveObject( gun , gundist );
dbMoveObjectDown( gun , 15.0f + cos (waggle/2.0f)/2.0f);

dbMoveObjectRight ( 6 , 2.5f + sin ( waggle2 / 2.0f ) / 8.0f );
dbMoveObject ( 6 , 8 );
dbMoveObjectDown ( 6 , 2.0f + cos ( waggle / 2.0f ) / 8.0f );

waggle += 0.10f;

if (dbMouseClick()){
dbShowObject ( 6 );
dbRollObjectLeft (6 ,(float)(rand()%360));
dbShowLight ( 1 );
dbPositionLight ( 1 , dbObjectPositionX ( 6 ) , dbObjectPositionY ( 6 ), dbObjectPositionZ ( 6 ) );}
if (!dbMouseClick()){
dbHideObject ( 6 );
dbHideLight (1);}
// update the screen
dbSprite (2,dbScreenWidth()-dbSpriteWidth(2),0,gunimg);
dbSprite (1,(dbScreenWidth()/2)-(dbSpriteWidth(1)/2),(dbScreenHeight()/2)-(dbSpriteHeight(1)/2),gunhair);
dbSprite (3,0,dbScreenHeight()-dbSpriteHeight(3),ssign);
dbSprite (4,0,dbSpriteY(3)-dbSpriteHeight(4),asign);
dbSprite (5,0,dbSpriteY(4)-dbSpriteHeight(5),hsign);
dbText (dbScreenWidth()-dbTextWidth(guntext),0+dbSpriteHeight(2),guntext);
//Stamina Bar//
dbBox (dbSpriteX(3)+dbSpriteWidth(3)+5,(dbSpriteY(3)+(dbSpriteWidth(3)/2))-5,(dbSpriteX(3)+dbSpriteWidth(3)+5)+maxstamina,(dbSpriteY(3)+(dbSpriteWidth(3)/2))+5,dbRGB(0,0,0),dbRGB(0,0,0),dbRGB(0,0,0),dbRGB(0,0,0));
dbBox (dbSpriteX(3)+dbSpriteWidth(3)+5,(dbSpriteY(3)+(dbSpriteWidth(3)/2))-5,(dbSpriteX(3)+dbSpriteWidth(3)+5)+stamina,(dbSpriteY(3)+(dbSpriteWidth(3)/2))+5,dbRGB(255,255,0),dbRGB(255,255,0),dbRGB(255,255,0),dbRGB(255,255,0));
//X Stamina Bar X//
//Armor Bar//
dbBox (dbSpriteX(4)+dbSpriteWidth(4)+5,(dbSpriteY(4)+(dbSpriteWidth(4)/2))-5,(dbSpriteX(4)+dbSpriteWidth(4)+5)+maxarmor,(dbSpriteY(4)+(dbSpriteWidth(4)/2))+5,dbRGB(0,0,0),dbRGB(0,0,0),dbRGB(0,0,0),dbRGB(0,0,0));
dbBox (dbSpriteX(4)+dbSpriteWidth(4)+5,(dbSpriteY(4)+(dbSpriteWidth(4)/2))-5,(dbSpriteX(4)+dbSpriteWidth(4)+5)+armor,(dbSpriteY(4)+(dbSpriteWidth(4)/2))+5,dbRGB(0,0,255),dbRGB(0,0,255),dbRGB(0,0,255),dbRGB(0,0,255));
//X Armor Bar X//
//Health Bar//
dbBox (dbSpriteX(5)+dbSpriteWidth(5)+5,(dbSpriteY(5)+(dbSpriteWidth(5)/2))-5,(dbSpriteX(5)+dbSpriteWidth(5)+5)+maxhealth,(dbSpriteY(5)+(dbSpriteWidth(5)/2))+5,dbRGB(0,0,0),dbRGB(0,0,0),dbRGB(0,0,0),dbRGB(0,0,0));
dbBox (dbSpriteX(5)+dbSpriteWidth(5)+5,(dbSpriteY(5)+(dbSpriteWidth(5)/2))-5,(dbSpriteX(5)+dbSpriteWidth(5)+5)+health,(dbSpriteY(5)+(dbSpriteWidth(5)/2))+5,dbRGB(255,0,0),dbRGB(255,0,0),dbRGB(255,0,0),dbRGB(255,0,0));
//X Health Bar X//
//GameText//
dbText(20,20,gametext);
if (gtimer > 0) gtimer --;
if (gtimer <= 0) gametext = "";
//X GameText X//

dbSetTextFont ("Halo3");

dbSync ( );
}

// return back to windows
return;
}
void UpdateCamStats(){
camx = dbCameraPositionX(1);
camy = dbCameraPositionY(1);
camz = dbCameraPositionZ(1);
dbSetCurrentCamera(1);}
void UpdateGunStats(){
gunx = dbObjectPositionX(gun);
guny = dbObjectPositionY(gun);
gunz = dbObjectPositionZ(gun);}

i need help to get any further. Also the gunflash does the exact same thing. but in opposite of the gun.

Login to post a reply

Server time is: 2024-10-01 05:55:28
Your offset time is: 2024-10-01 05:55:28