diff --git a/Project/Enemy.cc b/Project/Enemy.cc index b89b615e88ef8a28f5177fdc01d3681e6b6ee542..447100211c4fbccb33c253332d1b9bdc608b13c1 100644 --- a/Project/Enemy.cc +++ b/Project/Enemy.cc @@ -2,8 +2,8 @@ #include <iostream> Enemy::Enemy(float width, float height, float x_pos, float y_pos, float movement_speed) -:enemy_size{width, height}, enemy_pos{x_pos, y_pos}, enemy{enemy_size}, movement_speed{movement_speed}, type{"enemy"}, -spawn_x_pos{x_pos}, distance{}, move_right{false} +:enemy_size{width, height}, enemy_pos{x_pos, y_pos}, enemy{enemy_size}, movement_speed{movement_speed}, movement_speed_y{movement_speed}, type{"enemy"}, +spawn_x_pos{x_pos}, distance{}, move_right{false}, falling{true} {} void Enemy::update(sf::Time & delta, sf::RenderWindow & window) @@ -27,6 +27,20 @@ bool Enemy::check_collision(Block* b, std::string const& type, Player const & p) { move_right = true; } + if(enemy_pos.y <= b->get_pos().y-40) //landar på något + { + std::cout << "kollisision" << std::endl; + enemy_pos.y = b->get_pos().y-40; + movement_speed_y = movement_speed; + falling = false; + //on_ground = true; + } + } + else + { + falling = true; + + } if(enemy.getGlobalBounds().intersects(p.get_shape().getGlobalBounds())) { @@ -36,6 +50,7 @@ bool Enemy::check_collision(Block* b, std::string const& type, Player const & p) destruct = true; } } + return destruct; } @@ -49,7 +64,27 @@ void Enemy::move(sf::Time & _delta) else { enemy_pos.x -= distance; + //std::cout << "här" << std::endl; } - + if (falling) + { + //std::cout << "falling" << std::endl; + float gravity = 1.82; + movement_speed_y = movement_speed_y + (gravity * (_delta.asMicroseconds() / 10000.0f)); + float distance_y = movement_speed_y * (_delta.asMicroseconds() / 1000000.0f); + enemy_pos.y += distance_y; + /*if(enemy_pos.y < 0 || enemy_pos.y > 718) + { + movement_speed_y = movement_speed; + falling = false; + }*/ + } + /*else if(enemy_pos.y < spawn_y_pos) + { + velocity_y = -velocity_y; + falling = true; + }*/ } + + diff --git a/Project/Enemy.h b/Project/Enemy.h index 3803c5b54f1b3313e34cc612e0bcbeb5e82f91d4..5ce25ca9f7ffac9ca0888bd361529d3f11f7cd2e 100644 --- a/Project/Enemy.h +++ b/Project/Enemy.h @@ -21,10 +21,12 @@ private: sf::Vector2f enemy_pos{}; sf::RectangleShape enemy{}; float movement_speed{}; + float movement_speed_y{}; std::string type{}; float spawn_x_pos{}; float distance{}; bool move_right{}; + bool falling{}; }; #endif diff --git a/Project/Enemy.o b/Project/Enemy.o index 582f91b86d34df455796d1b3c02e05cffbc637a0..b33681d4ee6583d7fcdb2f3df5ce28d313fc3ca2 100644 Binary files a/Project/Enemy.o and b/Project/Enemy.o differ diff --git a/Project/game b/Project/game index de5401da35dfd5ecb9e0e7a5b81cd63ed6762578..e2e0a2c6e3c5b2ae3641e2213716b09610778b9f 100755 Binary files a/Project/game and b/Project/game differ diff --git a/Project/main.cc b/Project/main.cc index 734b7590565de43524843e133a4b0a6248ccd079..a15022ea4105c8a11eb53fce31fce87c0e1dcc46 100644 --- a/Project/main.cc +++ b/Project/main.cc @@ -17,8 +17,8 @@ int main() std::vector<Block*> blocks{}; std::vector<Enemy*> enemies{}; - enemies.push_back(new Enemy{40,50,800,718, 50.0f}); - enemies.push_back(new Enemy{40,50,900,718, 0.0f}); + enemies.push_back(new Enemy{40,50,900,218, 50.0f}); + enemies.push_back(new Enemy{40,50,300,218, 0.0f}); blocks.push_back(new Indestructable_block{50, 0, 718}); //size, x-pos, y-pos. Color: Red //BEGIN blocks.push_back(new Indestructable_block{50, 974, 718}); //size, x-pos, y-pos. Color: Blue //END blocks.push_back(new Indestructable_block{50, 150, 718}); //size, x-pos, y-pos. Color: Green diff --git a/Project/main.o b/Project/main.o index fc66666683c2929ddd7d8b780e9831f30cd84a3a..fa78db3315a0013e78d443a95a348965bad4990b 100644 Binary files a/Project/main.o and b/Project/main.o differ