第 4 次射击声明在 SFML 游戏中不起作用

4th Shooting statement not working in SFML game

我目前正在使用 SFML 2.0 创建游戏。基本上它是一个自上而下的射手,我对下面的陈述有困难。按下 space 栏时会射出一支箭。有四个语句取决于玩家精灵 (archSprite) 面对的方式。这是由这个函数

计算出来的source.y决定的
enum DirectionKeys { Up, Left, Down, Right};

sf::Vector2i source(0, 0);
int getCellY(DirectionKeys direction)
{
    return (direction*64);
}

我遵循声明

的逻辑
int dir = source.y/64;

将找出精灵面对我使用的精灵表的方向 0 = 向上 1 = 向左 2 = 向下 3 = 向右 这句话除了向右射击之外的所有内容都正确射击 谁能弄清楚为什么我的方向箭头右边是向下射击而箭头没有旋转?就好像射门权的声明一起被忽略了。任何人都可以请教吗?

#include "Game.h"
#include "Tilemap.h"
#include <SFML\Graphics.hpp>
#include <iostream>



 if(keypress == sf::Keyboard::Space && keyPressed)
 {
 int tblt = this->_game_data.curr_bullet;
 this->_arr_bullet_data[tblt].active        = true;

 //every 100th bullet it is set to the up rotation 
 int dir = source.y/64;

 if (dir == 0)
 {
    _arr_bullet_spr[tblt].rotate(90);
    this->_arr_bullet_data[tblt].startpos     = this->archSprite.getPosition() + sf::Vector2f(64,-42);
    this->_arr_bullet_data[tblt].direction  = sf::Vector2f(0,-1);
 }
 else if (dir == 1)
 {
    _arr_bullet_spr[tblt].rotate(360);
    this->_arr_bullet_data[tblt].startpos     = this->archSprite.getPosition() + sf::Vector2f(-22,0);
    this->_arr_bullet_data[tblt].direction  = sf::Vector2f(-1,0);
 }
 else if (dir = 2)
 {
    _arr_bullet_spr[tblt].rotate(270);
    this->_arr_bullet_data[tblt].startpos     = this->archSprite.getPosition() + sf::Vector2f(0,96);
    this->_arr_bullet_data[tblt].direction  = sf::Vector2f(0,1);
 }
 else if (dir = 3)
 {
    _arr_bullet_spr[tblt].setRotation(180);
    this->_arr_bullet_data[tblt].startpos = this->archSprite.getPosition() + sf::Vector2f(0,0);
    this->_arr_bullet_data[tblt].direction  = sf::Vector2f(1,0);
 }

 this->_arr_bullet_spr[tblt].setPosition(this>_arr_bullet_data[tblt].startpos);
 this->_game_data.curr_bullet++;
 }

非常感谢

if(dir = 2)if(dir = 3)必须分别是if(dir == 2)if(dir == 3)