Beispiel #1
0
void Caracter::setDir (Vec2f dir) {
    //anims[currentAnimIndex]->setCurrentTile(0);
    if (isMoving())
        anims[currentAnimIndex]->stop();
    float angleRadians = dir.getAngleBetween(Vec2f::yAxis);
    int angle = Math::toDegrees(angleRadians);
    //Sud
    if (angle >= -10 && angle <= 10)
        currentAnimIndex = 4;
    //Sud ouest
    else if (angle > -80 && angle < -10)
        currentAnimIndex = 6;
    //Ouest
    else if (angle >= -100 && angle <= -80)
        currentAnimIndex = 7;
    //Nord ouest
    else if (angle > -170 && angle < -100)
        currentAnimIndex = 3;
    //Nors est
    else if (angle > 100 && angle < 170)
        currentAnimIndex = 2;
    //Est
    else if (angle >= 80 && angle <= 100)
        currentAnimIndex = 0;
    //Sud est
    else if (angle > 10 && angle < 80)
        currentAnimIndex = 5;
    //Nord
    else
        currentAnimIndex = 1;
    if (attacking)
        currentAnimIndex += 8;
    this->dir = dir;
    if (isMoving()) {
        anims[currentAnimIndex]->play(true);
    }
}