タイルでマップを作成しました。それのすべての単一のタイルは32x32 px
を測定するので、私の主人公スプライトもそうです。タイルでタイルを移動する
私のクラスPlayer.cpp
には、Left/Right/Up/Down
に行くかどうかを決定するdeltaY/X
を計算する関数がいくつかあり、それらを更新関数で使用します。これまでの私のコードです
:
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
があります。私はその面接がグローバル変数であると推測していますか?通常、グローバル変数を使用するのは良いことではありません。なぜなら、ソフトウェアを書くときにどの関数がグローバル変数を変更しているのかが不明確になる可能性があるからです。グローバル変数がどのように変化しているのか(バグの場合)、それらの関数に戻って幸運を覚えておきたいかもしれません。代わりに、あなたは十分に簡単に直面することができます。 –