【发布时间】:2017-07-27 13:26:23
【问题描述】:
我用 Tiled 做了一张地图。它的每一块都是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 确实如此!
-
在你的代码中,我猜 face 是一个全局变量?通常,使用全局变量并不好,因为当您编写软件时,可能会不清楚哪些函数正在更改该全局变量。稍后您可能想记住该全局变量是如何更改的(以防出现错误),祝您好运,将其追溯到这些函数。相反,您可以轻松地返回。
-
@KeithBecker 好吧,面对的是 Player 类的私有变量,根本不是全局变量(如果我明白你在说什么)
-
@James 哦,是的,那没关系