Trinity Infinity
Details

pick up item 0.1.1

作者:Yanting
void pickitem010(int a, int tm){

   float k;

   float tempvec[3];

   float temppos[3];

   float tempata[3];

   game.getItemLoc(tempvec,a);                                                     //get the loction of item a

   //DEBUG(("tempvec=(%f,%f)",tempvec[0],tempvec[1]));                             //debug the loction of item a

   mathVecSubtract( tempata ,tempvec , myState , 3 );                              //caculate the vector heading to item a

   mathVecSubtract( tempvec ,tempvec , myState , 3 );                              //caculate the vector from me to item a

   //DEBUG(("tempvec=(%f,%f)",tempvec[0],tempvec[1]));                             //debug the vector from me to item a

   k=mathVecNormalize( tempvec, 3 );                                               //get length of the vector from me to item a

                                                                                   //Normalize the vector from me to item a

   switch (a){

       case 0:

       case 1:

               k = (k - 0.158) ;

               break;

       case 2:

       case 3:

               k = (k - 0.149) ;

               break;

       case 4:

       case 5:

               k = (k - 0.135) ;

               break;                                                              //length of the vector - the distance to dock item a from

   }                                                                              

   

   //DEBUG(("tempvec=(%f,%f)",tempvec[0],tempvec[1]));                             //debug the normalized the vectorfrom me to item a

   for (i = 0;i <= 2;i++){

           temppos[i] = myState[i] + tempvec[i] * k * (1 + 0.5 * mathSquare(k));                     //caculate where I can dock the item        

   }                                                              

   //DEBUG(("k=%f", k));                                                           //debug the remaining distanse to go

   //DEBUG(("target=(%f,%f)",temppos[0],temppos[1]));                              //debug the position where I can dock the item

   api.setAttitudeTarget(tempata);                                                 //head to item a

   api.setPositionTarget(temppos);                                                 //go to the position where I can dock the item

   

   if(t>=tm){

       if(game.dockItem()){                                                        //end the function if succeeded in docking

           flag++;

           //

           DEBUG(("%d",t));

           //

           t=0;

       }

   }

}

//need myState

//need t = 0 in last step
————————————————————————————————————————————————————————————————————————————————————————————
Contact us
yamu@trinity.unimelb.edu.au