我正在写一个简单的塔防和我卡上有点在我的塔内有射击敌人的移动。一起在C 2D矢量(塔防)+
有了这个代码:
void Bullet::move(int x, int y, int speed)
{
Punkt delta = {(x + speed) - this->x, (y + speed) - this->y};
if (abs(delta.x) > 1 && abs(delta.y) > 1)
{
this->x += delta.x/this->speed;
this->y += delta.y/this->speed;
}
else
{
this->dead = true;
}
}
Where方法参数是目标位置和速度。它应该沿着矢量移动子弹直到它到达目标,但矢量因目标移动而改变。对于现在的子弹结束了这样的(黑塔,蓝色是子弹和红色是敌人)
我知道的问题是,我的子弹瞄准的东西已经搬到所以我的问题是 - 如何改进这个代码,使其正常工作?我不知道如何将自己的头部包裹在向量和乐观之中,所以在此先感谢您保持简单。
对于gamedev可能是一个更好的问题。 – chris
你为什么使用整数算术? 'x','子弹:: x','delta.x'和'speed'均为整数,这可能会导致意想不到的结果:如果'这个 - > speed'比'delta.x'和'增量更大。 y',即使它没有达到目标,你的子弹也会停止移动! – us2012
SDL轴是整数,我不能使用浮点数,或者我可以吗? – Deith