[SFML2] Skakanie w platformówce 2D
Ostatnio zmodyfikowano 2015-12-01 16:06
qest43 Temat założony przez niniejszego użytkownika |
[SFML2] Skakanie w platformówce 2D » 2015-11-30 18:57:39 Mam taki kod na skakanie postaci: if( statistic.onGround ) { statistic.currentJumpSpeed = statistic.jumpSpeed; statistic.currentFallSpeed = statistic.fallSpeed; statistic.currentJumpAmount = statistic.jumpAmount; statistic.ableToJump = true; }
statistic.onGround = false;
if( sf::Keyboard::isKeyPressed( sf::Keyboard::W ) && statistic.ableToJump && !statistic.jumping || sf::Keyboard::isKeyPressed( sf::Keyboard::W ) && statistic.currentJumpAmount > 0 && statistic.currentJumpSpeed <= 0 ) { statistic.currentJumpSpeed = statistic.jumpSpeed; if( statistic.currentJumpAmount == statistic.jumpAmount && !statistic.falling ) { statistic.currentFallSpeed = statistic.fallSpeed; statistic.jumping = true; } else if( statistic.currentJumpAmount != statistic.jumpAmount && statistic.currentJumpAmount > 0 ) { statistic.currentFallSpeed = statistic.fallSpeed; statistic.jumping = true; } statistic.currentJumpAmount--; }
if( !statistic.jumping ) gravity(); else jump();
void Entity::gravity() { if( statistic.velocity.y == 0 ) statistic.falling = true; if( statistic.falling ) { statistic.currentFallSpeed += statistic.fallAcceleration; if( statistic.currentFallSpeed > statistic.maxFallSpeed ) statistic.currentFallSpeed = statistic.maxFallSpeed; statistic.velocity.y += statistic.currentFallSpeed; } }
void Entity::jump() { statistic.currentJumpSpeed -= statistic.jumpAcceleration; if( statistic.currentJumpSpeed < 0 ) { statistic.currentJumpSpeed = 0; statistic.falling = true; statistic.ableToJump = false; statistic.jumping = false; } statistic.velocity.y -= statistic.currentJumpSpeed; statistic.onGround = false; }
class Statistic { public: sf::Vector2f velocity, mousePosition, playerPosition; float moveSpeed; int jumpAmount, currentJumpAmount; float jumpSpeed, currentJumpSpeed, jumpAcceleration; float currentFallSpeed, maxFallSpeed, fallSpeed, fallAcceleration; bool falling, ableToJump, jumping, onGround; bool collision; int collisionDamage; float currentHitPoints, maxHitPoints; bool isDead; float fireProtection, poisonProtection; std::vector < std::shared_ptr < Bullet > > bullet; };
Wydaje mi się on trochę zawiły, macie jakieś rady jak to lepiej rozwiązać? |
|
DejaVu |
» 2015-12-01 16:06:19 Jeżeli działa to jest ok. Rozważanie przez osoby trzecie czy da się coś napisać lepiej nie ma większego sensu. |
|
« 1 » |