X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Ftrigger%2Fclimbable.cpp;h=42b8f60e4e17bc36821191bf1fd71a542a0faf71;hb=1f5ff04e5283398473b4ac033258b17af0ed08f0;hp=b06f177cb0f99c918395bcd7c23f2536659d411a;hpb=9478bbd584a41256bf20536e16ef950207343051;p=supertux.git diff --git a/src/trigger/climbable.cpp b/src/trigger/climbable.cpp index b06f177cb..42b8f60e4 100644 --- a/src/trigger/climbable.cpp +++ b/src/trigger/climbable.cpp @@ -26,7 +26,7 @@ namespace { const float GRACE_DX = 8; // how far off may the player's bounding-box be x-wise const float GRACE_DY = 8; // how far off may the player's bounding-box be y-wise const float ACTIVATE_TRY_FOR = 1; // how long to try correcting mis-alignment of player and climbable before giving up -const float POSITION_FIX_AX = 50; // x-wise acceleration applied to player when trying to align player and Climbable +const float POSITION_FIX_AX = 30; // x-wise acceleration applied to player when trying to align player and Climbable const float POSITION_FIX_AY = 50; // y-wise acceleration applied to player when trying to align player and Climbable } @@ -57,7 +57,7 @@ Climbable::~Climbable() } } -void +void Climbable::update(float /*elapsed_time*/) { if (!climbed_by) return; @@ -91,8 +91,9 @@ Climbable::event(Player& player, EventType type) activate_try_timer.stop(); } else { if (type == EVENT_ACTIVATE) activate_try_timer.start(ACTIVATE_TRY_FOR); - if (player.get_bbox().p1.x < get_bbox().p1.x - GRACE_DX) player.add_velocity(Vector(POSITION_FIX_AX,0)); - if (player.get_bbox().p2.x > get_bbox().p2.x + GRACE_DX) player.add_velocity(Vector(-POSITION_FIX_AX,0)); + // the "-13" to y velocity prevents Tux from walking in place on the ground for horizonal adjustments + if (player.get_bbox().p1.x < get_bbox().p1.x - GRACE_DX) player.add_velocity(Vector(POSITION_FIX_AX,-13)); + if (player.get_bbox().p2.x > get_bbox().p2.x + GRACE_DX) player.add_velocity(Vector(-POSITION_FIX_AX,-13)); if (player.get_bbox().p1.y < get_bbox().p1.y - GRACE_DY) player.add_velocity(Vector(0,POSITION_FIX_AY)); if (player.get_bbox().p2.y > get_bbox().p2.y + GRACE_DY) player.add_velocity(Vector(0,-POSITION_FIX_AY)); } @@ -105,7 +106,7 @@ Climbable::event(Player& player, EventType type) } bool -Climbable::may_climb(Player& player) +Climbable::may_climb(Player& player) { if (player.get_bbox().p1.x < get_bbox().p1.x - GRACE_DX) return false; if (player.get_bbox().p2.x > get_bbox().p2.x + GRACE_DX) return false;