void Player:: Update(float time) { control(time); switch(direction) { case 0: //right dx = speed; dy = 0; break; case 1: //left dx = -speed; dy = 0; break; case 2: //down dx = 0; dy = speed; break; case 3: // up dx = 0; dy = -speed; break; default: break; } x += dx * time; y += dy * time; speed = 0; sprite.setPosition(x, y); checkCollisionWithMap(dx, dy); }
void collisionWithBricksForPlayer(Player *p, list<Entity*> &listBrick, bool &changeCourse) { for (Entity* brick : listBrick) { if (p->getRect().intersects(brick->getRect())) { checkCollisionWithMap(p, brick, changeCourse); p->lastCoordinates = { p->diraction.x, p->diraction.y }; } } }
void _Mouse:: Update(float time) { if(life) control(time); switch(direction) { case 0: //right dx = speed; dy = 0; break; case 1: //left dx = -speed; dy = 0; break; case 2: //down dx = 0; dy = speed; break; case 3: // up dx = 0; dy = -speed; break; default: break; } x += dx * time; y += dy * time; speed = 0; sprite.setPosition(x, y); checkCollisionWithMap(dx, dy); if(health <= 0) { life = false; speed = 0; } }
void Enemy::update(float time) { moveTimer += time; animation(time); if (moveTimer > 3000) { dx *= -1; moveTimer = 0; } x += dx*time; //checkCollisionWithMap(dx, 0); y += dy*time; checkCollisionWithMap(0, dy); sprite.setPosition(x + w / 2, y); if (lives <= 0) { life = false; dx = 0; dy = 0; sprite.setTextureRect(IntRect(32, 0, w, h)); } dy += 0.0015*time; };
void Player::update(sf::View * view, float time) { //функция для движения control(); switch(state) { case right: dx = speed; break; case left: dx = -speed; break; case jump: break; case down: dx = 0; break; case stay: dx = 0; break; } x += dx*time; checkCollisionWithMap(dx, 0); y += dy*time; checkCollisionWithMap(0, dy); sprite.setPosition(x + w/2, y + h/2); if(health <= 0) { life = false; } if(!isMove) { speed = 0; } if(life) { if(heroWithPick) { if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) { state = right; speed = 0.1; CurrentFrame += 0.005*time; if (CurrentFrame > 3) CurrentFrame -= 3; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 0, 34, 55)); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) { state = left; speed = 0.1; CurrentFrame += 0.005*time; if (CurrentFrame > 4) CurrentFrame -= 3; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 60, 34, 55)); } if ((sf::Keyboard::isKeyPressed(sf::Keyboard::W))&& (onGround)) { state = jump; dy = -0.7; onGround = false; } if ((sf::Keyboard::isKeyPressed(sf::Keyboard::A))&& ((sf::Keyboard::isKeyPressed(sf::Keyboard::E))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)))) { if (CurrentFrame > 3) CurrentFrame -= 2; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 251, -34, 55)); } if (((sf::Keyboard::isKeyPressed(sf::Keyboard::E))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)))&&(!sf::Keyboard::isKeyPressed(sf::Keyboard::A))) { CurrentFrame += 0.005*time; if (CurrentFrame > 2) CurrentFrame -= 2; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 251, 34, 55)); } } if(heroWithSword) { if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) { state = right; speed = 0.1; CurrentFrame += 0.005*time; if (CurrentFrame > 3) CurrentFrame -= 3; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 518, 34, 55)); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) { state = left; speed = 0.1; CurrentFrame += 0.005*time; if (CurrentFrame > 4) CurrentFrame -= 3; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 578, 34, 55)); } if ((sf::Keyboard::isKeyPressed(sf::Keyboard::W))&& (onGround)) { state = jump; dy = -0.7; onGround = false; } if ((sf::Keyboard::isKeyPressed(sf::Keyboard::A))&& ((sf::Keyboard::isKeyPressed(sf::Keyboard::E))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)))) { if (CurrentFrame > 3) CurrentFrame -= 2; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 641, -34, 55)); } if (((sf::Keyboard::isKeyPressed(sf::Keyboard::E))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)))&&(!sf::Keyboard::isKeyPressed(sf::Keyboard::A))) { CurrentFrame += 0.005*time; if (CurrentFrame > 2) CurrentFrame -= 2; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 641, 34, 55)); } } if(normalHero) { if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) { state = right; speed = 0.1; CurrentFrame += 0.005*time; if (CurrentFrame > 3) CurrentFrame -= 3; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 326, 34, 55)); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) { state = left; speed = 0.1; CurrentFrame += 0.005*time; if (CurrentFrame > 4) CurrentFrame -= 3; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 386, 34, 55)); } if ((sf::Keyboard::isKeyPressed(sf::Keyboard::W))&& (onGround)) { state = jump; dy = -0.7; onGround = false; } if ((sf::Keyboard::isKeyPressed(sf::Keyboard::A))&& ((sf::Keyboard::isKeyPressed(sf::Keyboard::E))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)))) { if (CurrentFrame > 3) CurrentFrame -= 2; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 449, -34, 55)); } if (((sf::Keyboard::isKeyPressed(sf::Keyboard::E))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Q))|| (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)))&&(!sf::Keyboard::isKeyPressed(sf::Keyboard::A))) { CurrentFrame += 0.005*time; if (CurrentFrame > 2) CurrentFrame -= 2; sprite.setTextureRect(sf::IntRect(37 *int(CurrentFrame), 449, 34, 55)); } if(state == stay) { sprite.setTextureRect(sf::IntRect(41 , 449, 34, 55)); } } } setPlayerCoordinateForView(view, x, y); dy = dy + 0.0015*time; //постоянно притягиваемся к земле }