我正在做的是用一条直线的精灵扫描一个区域,我来回旋转20度
当我点击我的动作按钮时,我想在精灵的旋转方向上射击子弹
我通过做
来获得角度sprite->getRotation();
我的单位是可用的,让我们说它是(0,0)
我猜我需要在线上找到一个点,但我不知道它背后的数学。
这甚至可能吗?
答案 0 :(得分:2)
鉴于您知道子弹的速度(像素/秒),我假设您将其称为v
。横向屏幕需要s
秒。并且x
表示子弹在轴x
上的位置(与y
变量相同),您可以使用这个简单的三角函数来实现两个变量:
x = 0; // initial position. You say that it start at (0,0)
y = 0;
for (int i = 0; i < s; i++) {
sleep(1); // look in unistd.h
x += v*cos(angle); // include math.h
y += v*sin(angle); // angle in radian, of course
// draw your sprite here, at (x, y)
}