- Timestamp:
- May 26, 2010, 4:28:14 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/rocket2/src/modules/weapons/RocketController.cc
r6956 r6966 1 1 /* 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 * ORXONOX - the hottest 3D action shooter ever to exist 3 * > www.orxonox.net < 4 * 5 * 6 * License notice: 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License 10 * as published by the Free Software Foundation; either version 2 11 * of the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21 * 22 * Author: 23 * Gabriel Nadler, Originalfile: Oli Scheuss 24 * Co-authors: 25 * ... 26 * 27 */ 28 28 29 29 #include "RocketController.h" … … 39 39 /** 40 40 @brief 41 41 Constructor. 42 42 */ 43 43 RocketController::RocketController(BaseObject* creator) : Controller(creator) … … 46 46 COUT(5)<< "RocketController constructed\n"; 47 47 48 49 this->rocket = new SimpleRocket(this);50 this->rocket ->setController(this);51 this->setControllableEntity(dynamic_cast<ControllableEntity*> ( rocket));52 this-> haha=0;48 49 this->rocket_ = new SimpleRocket(this); 50 this->rocket_->setController(this); 51 this->setControllableEntity(dynamic_cast<ControllableEntity*> (this->rocket_)); 52 this->counter_=0; 53 53 } 54 54 … … 56 56 /** 57 57 @brief 58 58 The controlling happens here. This method defines what the controller has to do each tick. 59 59 @param dt 60 60 The duration of the tick. 61 61 */ 62 62 void RocketController::tick(float dt) 63 63 { 64 haha++;64 counter_++; 65 65 66 //if (haha<30)this->rocket->setVelocity(rocket->getVelocity()*1.03); 67 if (this->target_) { 66 if (this->target_ && this->rocket_->hasFuel()) { 68 67 this->setTargetPosition(); 69 68 this->moveToTargetPosition(); 70 69 } 71 if (haha>500) rocket->setDestroy();;72 70 71 73 72 } 74 73 … … 94 93 { 95 94 this->target_ = target; 96 CCOUT(4) << "got target" << endl;97 95 } 98 96 … … 101 99 if (!this->getControllableEntity()) 102 100 return; 103 float dx = target.x-this->getControllableEntity()->getPosition().x; 104 float dy = target.y-this->getControllableEntity()->getPosition().y; 105 COUT(4)<<"\n diff: "; 106 COUT(4)<<target-this->getControllableEntity()->getPosition() << endl; 107 //COUT(0)<<"\n 2D view: "; 108 /* COUT(0)<<this->getControllableEntity()->getPosition().x; 109 COUT(0)<<" "; 110 COUT(0)<<this->getControllableEntity()->getPosition().y; 111 COUT(0)<<" "; 112 COUT(0)<<this->getControllableEntity()->getPosition().z; 113 COUT(0)<<"\n";*/ 101 114 102 Vector2 coord = get2DViewdirection(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target); 115 float distance = (target - this->getControllableEntity()->getPosition()).length(); 116 //Vector3D diff =target-this->rocket->getPosition(); 117 COUT(4) << "viewdirection: "<< coord << endl; 118 //COUT(0)<<" "; 119 //COUT(0)<<coord.y; 103 float distance = (target - this->getControllableEntity()->getWorldPosition()).length(); 104 105 106 if (distance > 1000&&this->getControllableEntity()->getVelocity().squaredLength()<160000) 107 this->getControllableEntity()->setAcceleration(this->rocket_->getOrientation()*Vector3(-20,-20,-20)); 108 if (distance <1000) this->rocket_->setAcceleration(0,0,0); 109 120 110 this->getControllableEntity()->rotateYaw(-sgn(coord.x)*coord.x*coord.x); 121 111 this->getControllableEntity()->rotatePitch(sgn(coord.y)*coord.y*coord.y); 122 // this->getControllableEntity()->rotateYaw(10);123 // this->getControllableEntity()->rotatePitch(0);124 //this->getControllableEntity()->rotatePitch(rotation.getPitch().valueRadians());125 //this->getControllableEntity()->rotateYaw(rotation.getYaw().valueRadians());126 //this->getControllableEntity()->moveUpDown(coord.y);127 //this->getControllableEntity()->moveRightLeft(coord.x);128 //this->getControllableEntity()->rotatePitch(coord);129 // if (this->target_ || distance > 10)130 // {131 // // Multiply with 0.8 to make them a bit slower132 //this->getControllableEntity()->rotateYaw(coord.x );133 // this->getControllableEntity()->rotatePitch(coord.y);134 // }135 112 } 136 113
Note: See TracChangeset
for help on using the changeset viewer.