anyone no what the problem is?
in the eventreceiver
Code: Select all
if(event.EventType == EET_KEY_INPUT_EVENT && event.KeyInput.PressedDown == true &&
event.KeyInput.Key == KEY_SPACE && lvlcollision==true)
{
jump=1;
jumping=true;
}
Code: Select all
camrot=cam->getRotation();
vector3df vector = cam->getPosition();
vector=SideCollision(vector);
vector=vector3df(vector.X,vector.Y+jump+3.5,vector.Z);
vector3df groundlvl=LevelCollision(vector);
if(lvlcollision==true) {vector.Y=groundlvl.Y+6.5;jump=0;}
else if(lvlcollision==false) jump=jump-.01;
cam->setPosition(vector3df(vector.X,vector.Y,vector.Z));
player->node->setRotation(vector3df(0,camrot.Y,0));
player->node->setPosition(vector3df(vector.X,vector.Y-6.5,vector.Z));
Code: Select all
vector3df game::LevelCollision(vector3df pos) {
if(jumping==true && jump>0) {return pos;}
else {
vector3df point=vector3df(0,0,0);
line3d<f32> line;
triangle3d<f32> tri;
line.start=pos;
line.end=vector3df(pos.X,pos.Y-7,pos.Z);
if(sncl->getCollisionPoint(line,tris,point,tri)) {lvlcollision=true;jumping=false;}
else {lvlcollision=false;}
return point;}
}
vector3df game::SideCollision(vector3df pos) {
vector3df point;
line3d<f32> line;
triangle3d<f32> tri;
pos=vector3df(pos.X,pos.Y-3.5,pos.Z);
for(int i=0;i<5;++i) {
line.start=pos;
if(i==0) {line.end=vector3df(pos.X+3,pos.Y,pos.Z);}
else if(i==1) {line.end=vector3df(pos.X-3,pos.Y,pos.Z);}
else if(i==2) {line.end=vector3df(pos.X,pos.Y,pos.Z+3);}
else if(i==3) {line.end=vector3df(pos.X,pos.Y,pos.Z-3);}
else if(i==4) {line.end=vector3df(pos.X,pos.Y+5,pos.Z);}
if(sncl->getCollisionPoint(line,tris,point,tri)) {
if(i==0) {pos.X=point.X-3;}
else if(i==1) {pos.X=point.X+3;}
else if(i==2) {pos.Z=point.Z-3;}
else if(i==3) {pos.Z=point.Z+3;}
else if(i==4) {pos.Y=point.Y-5;}
}
else {lvlcollision=false;}}
return pos;
}