I'm in the process of writing an RTS game (Real Time Strategy) I have no problems placing objects in my worlds. The problem come up when I try to select and move objects suck as tanks and other vehicles around the terrain, the entities float around the map ... sometimes take off into space wildly ... lol what am I doing wrong ... here is some of the code I am using ....
Code:
function selectObject()
{
if(!mouse_ent) { Selected = NULL; return; }
//if(mouse_ent.ID != ID_Human) return;
Selected = mouse_ent;
}
Code:
#define Target_X skill2
#define Target_Y skill3
#define Target_Z skill4
#define Move_Speed_X skill5
#define Move_Speed_Y skill6
#define Move_Speed_Z skill7
function moveObject()
{
var Temp1[3];
var Temp2[3];
if(!Selected) return;
Temp1[0] = mouse_pos.x;
Temp1[1] = mouse_pos.y;
Temp1[2] = 50;
vec_for_screen(Temp1,camera);
Temp2[0] = mouse_pos.x;
Temp2[1] = mouse_pos.y;
Temp2[2] = 5000;
vec_for_screen(Temp2,camera);
c_trace(Temp1,Temp2,IGNORE_PASSABLE | IGNORE_YOU);
target.z += 40;
vec_set(Selected.Target_X,target.x);
while(1)
{
// Target?
if(Selected.Target_X != 0 && Selected.Target_Y != 0 && Selected.Target_Y != 0)
{
// Turn towards the Target
vec_diff(Temp1,Selected.Target_X,Selected.x);
vec_to_angle(Selected.pan,Temp1);
// Move towards Target
if(vec_dist(Selected.x,Selected.Target_X) > 50)
{
Selected.Move_Speed_X = 4*time_step;
c_move(Selected,Selected.Move_Speed_X,nullvector,IGNORE_ME | IGNORE_PASSABLE | GLIDE);
} else {
vec_set(Selected.Target_X,nullvector);
}
}
// Set on ground
c_trace(Selected.x,vector(Selected.x,Selected.y,Selected.z-1000),IGNORE_ME | IGNORE_PASSABLE);
Selected.z -= result-40;
wait(1);
}
}
Selected is a global vector that holds the entity selected. Any help will be greatly appreciated.