我真的很喜欢c ++而且非常糟糕,但我正在为我的大学项目制作太空入侵者游戏。我对外星人的移动系统遇到了麻烦,以及如何让外星人在一条线上产生(一旦他们到达屏幕的一侧,他们就会向下移动然后穿过)。
首先,这是我用来移动外星人运动的代码
for (int aly = 0; aly < 2; aly++) // Change the 35 to number of desired aliens
{
theAliens.push_back(new cAliens);
theAliens[aly]->setSpritePos({ (100, 50) + 200 });
theAliens[aly]->setSpriteTranslation({ 0, 0 });
theAliens[aly]->setTexture(theTextureManager->getTexture("alien"));
theAliens[aly]->setSpriteDimensions(theTextureManager->getTexture("ship")->getTWidth(), theTextureManager->getTexture("alien")->getTHeight());
}
我可以让外星人向左走,然后向下移动,但由于某种原因,他们不能向右移动,我评论出了线路&#34; AlienVelocity.x * + 1&#34;,我认为那样会他们刚刚让他们走得很好,因为&#34; -1&#34;让他们离开...
为了让外星人在一条线上产生,我已经制作了一个阵列并且只设置了2个外星人来产生,仅用于测试目的。
- (nullable NSTouchBarItem *)touchBar:(NSTouchBar *)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier
在第二行的旁边,我放了&#34; + 200+,因为我认为这只会让下一个外星人+200点,但显然不是。我不确定如何解决这个问题......
答案 0 :(得分:0)
if (currentSpritePos.x < 975 || currentSpritePos.x > 0)
{
this->AlienVelocity.x = this->AlienVelocity.x*-1;
}
此代码表示每当外星人在0到975之间时,反转速度。我相信这与你想要的完全相反。这意味着他们应该来回走动,不要在屏幕上移动。交换比较标志。
对于向下移动,取当前的y位置并向其添加行长度。这应该在速度反转时完成 - 在相同的if语句中。
从这些变化开始,看看你能否弄清楚其余的变化。