#include "PacmanCyan.h" //#include "Pacman.h" #include "core/CoreIncludes.h" #include "BulletDynamics/Dynamics/btRigidBody.h" namespace orxonox{ RegisterClass(PacmanCyan); PacmanCyan::PacmanCyan(Context* context) : PacmanGhost(context){ RegisterObject(PacmanCyan); this->target_x=0; this->target_z=15; this->lastPlayerPassedPoint=Vector3(70,10,-135); } /** @brief Method for creating a ghost through XML. */ void PacmanCyan::XMLPort(Element& xmlelement, XMLPort::Mode mode) { SUPER(PacmanCyan, XMLPort, xmlelement, mode); } void PacmanCyan::tick(float dt) { SUPER(PacmanGhost, tick, dt); this->actuelposition = this->getPosition(); //Stop, if target arrived if((abs(this->actuelposition.x - this->target_x)<0.5) && (abs(this->actuelposition.z - this->target_z)<0.5)){ this->ismoving = false; } //Move, if ghost hasn't arrived yet if(this->ismoving){ if(!(abs(this->actuelposition.z-target_z)<0.5)) { velocity = Vector3(0,0,-sgn(this->actuelposition.z-this->target_z)); move(dt, actuelposition, velocity); } if(!(abs(this->actuelposition.x-target_x)<0.5)){ velocity = Vector3(-sgn(this->actuelposition.x-this->target_x),0,0); move(dt, actuelposition, velocity); } } //Check on which position the ghost has arrived and set new target else{ while(lockmove){}; lockmove = true; Vector3 cyanPos=Vector3(this->target_x, 10, this->target_z); lockmove=false; //NEVER FORGET THIS ONE !!!!!!! } } void PacmanCyan::nextMove( Vector3 cyanPosP, Vector3 playerPos){ Vector3 nextTarget; nextTarget = getShortestPath(cyanPosP, playerPos); setNewTargetGhost(nextTarget); } }