我已经完成了平铺平面地图。它的每一个瓷砖都会测量32x32 px
,我的主角精灵也是如此。平铺移动平铺
在我的课Player.cpp
,我有一些函数计算deltaY/X
决定你是否要Left/Right/Up/Down
然后你在更新函数中使用它们。
这是我到目前为止的代码:
void Player::moveX(int moveDirection) {
deltaX = moveDirection * PlayerConstants::WALK_SPEED;
playAnimation(deltaX > 0 ? "WalkRight" : "WalkLeft");
facing = deltaX > 0 ? DIRECTION ::RIGHT : DIRECTION::LEFT;
}
void Player::moveY(int moveDirection) {
deltaY = moveDirection * PlayerConstants::WALK_SPEED;
playAnimation(deltaY < 0 ? "WalkUp" : "WalkDown");
facing = deltaY < 0 ? DIRECTION ::UP : DIRECTION::DOWN;
}
void Player::update(float elapsedTime) {
_x += deltaX * elapsedTime;
_y += deltaY * elapsedTime;
AnimatedSprite::update(elapsedTime);
}
步行速度是0.1
现在。
任何猜测如何通过瓷砖来移动它的瓷砖?
是'moveDirection'的值是-1还是1? – travisjayday
@travisjayday确实是! – James
在你的代码中,我猜这是一个全局变量?通常,使用全局变量并不好,因为当你编写软件时,可能会变得不清楚哪些函数正在改变这个全局变量。您稍后可能想记住全局变量是如何变化的(如果出现错误),祝您好运将它追溯到这些函数。相反,你可以轻松地返回。 –