Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 3, 2014, 2:35:54 PM (10 years ago)
Author:
fvultier
Message:

Steuerung funktioniert

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/pickupsFS14/src/modules/jump/JumpShip.cc

    r10005 r10017  
    4949        //isFireing = false;
    5050        //damping = 10;
    51         left = false;
    52         right = false;
    53 
     51        leftPressed = false;
     52        rightPressed = false;
     53        upPressed = false;
     54        downPressed = false;
     55
     56        yScreenPosition = 0;
     57        yVelocity = 0;
    5458    }
    5559
    5660    void JumpShip::tick(float dt)
    5761    {
    58 
    59         Vector3 pos = getPosition();
     62        Vector3 movement(0,0,0);
     63        Vector3 shipPosition = getPosition();
    6064
    6165        /*
     
    9599        if (isFireing)
    96100            ControllableEntity::fire(0);
    97 
     101                */
    98102        // Camera
    99         WeakPtr<Camera> camera = this->getCamera();
    100         if (camera != NULL)
    101         {
    102             camera->setPosition(Vector3(-pos.z, -posforeward, 0));
    103             camera->setOrientation(Vector3::UNIT_Z, Degree(90));
    104         }
    105 
    106 
    107 
     103
     104
     105
     106
     107            /*
    108108        // bring back on track!
    109109        if(pos.y != 0)
     
    121121        */
    122122
    123         if (left == true)
    124         {
    125                 pos += Vector3(100 + pos.y, 0, 0) * dt;
    126                 left = false;
    127         }
    128         else if (right == true)
    129         {
    130                 right = false;
    131         }
    132 
    133         setPosition(pos);
    134 
     123        // Berechne Bewegung anhand der Eingabe
     124        if (leftPressed == true)
     125        {
     126                movement -= Vector3(xVelocity, 0, 0);
     127                leftPressed = false;
     128        }
     129        else if (rightPressed == true)
     130        {
     131                movement += Vector3(xVelocity, 0, 0);
     132                rightPressed = false;
     133        }
     134
     135        if (upPressed == true)
     136        {
     137                //movement += Vector3(0, xVelocity, 0);
     138                yVelocity = ySpeedAfterJump;
     139                upPressed = false;
     140        }
     141        else if (downPressed == true)
     142        {
     143                movement -= Vector3(0, 0, 0);
     144                downPressed = false;
     145        }
     146
     147        movement += Vector3(0, yVelocity, 0);
     148        yVelocity -= yAcceleration;
     149
     150        // Skalierung der Bewegung je nach vergangener Zeit
     151        movement *= dt;
     152
     153        // Verschiebe das Schiff um den berechneten Vektor movement und verhindere Verlassen des Bildschrims
     154        shipPosition.x = clamp(shipPosition.x + movement.x, -xBoundary, xBoundary);
     155                shipPosition.y += movement.y;
     156
     157        setPosition(shipPosition);
     158
     159        // Bildschirmposition kann nur nach oben verschoben werden
     160        if (shipPosition.y > yScreenPosition)
     161        {
     162                yScreenPosition = shipPosition.y;
     163        }
     164
     165        // Kameraposition nachfuehren
     166        if (camera == NULL)
     167        {
     168                camera = getCamera();
     169        }
     170        if (camera != NULL)
     171        {
     172
     173            camera->setPosition(Vector3(-shipPosition.x, yScreenPosition-shipPosition.y, 100));
     174            //camera->setOrientation(Vector3::UNIT_Z, Degree(180));
     175        }
    135176
    136177        SUPER(JumpShip, tick, dt);
     
    146187    void JumpShip::moveFrontBack(const Vector2& value)
    147188    {
     189        if (value.y < 0)
     190        {
     191                downPressed = true;
     192        }
     193        else if (value.y > 0)
     194        {
     195                upPressed = true;
     196        }
    148197        //lastTimeLeft = 0;
    149198        //desiredVelocity.x = -value.x * speed;
     
    152201    void JumpShip::moveRightLeft(const Vector2& value)
    153202    {
    154         if (value.y < 0)
    155         {
    156                 left = true;
    157         }
    158         else if (value.y > 0)
    159         {
    160                 right = true;
     203        if (value.x < 0)
     204        {
     205                leftPressed = true;
     206        }
     207        else if (value.x > 0)
     208        {
     209                rightPressed = true;
    161210        }
    162211        //lastTimeFront = 0;
Note: See TracChangeset for help on using the changeset viewer.