基于一个角度的射击子弹

时间:2013-07-17 21:35:17

标签: c++ math cocos2d-iphone cocos2d-x trigonometry

我正在做的是用一条直线的精灵扫描一个区域,我来回旋转20度

当我点击我的动作按钮时,我想在精灵的旋转方向上射击子弹

我通过做

来获得角度
sprite->getRotation();

我的单位是可用的,让我们说它是(0,0)

我猜我需要在线上找到一个点,但我不知道它背后的数学。

这甚至可能吗?

1 个答案:

答案 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)
}