我想要的是箭头从不同的x和y速度的初始位置(60,60)拍摄,并且弓射出的角度将根据用户触摸屏幕的位置而改变。
箭头在速度和重力方面完美地移动,但是我如何获得箭头的角度,比如它是否以45度角射击开始,当y = 0时箭头是180度?当重力开始使箭头慢慢指向下方时? 精灵也会从中心移动箭头图像。
答案 0 :(得分:2)
arctan(y/x)
计算arctangeant。 (实际上我认为它被称为atan()
而不是arctan()
?)。
然而,使用atan()
计算arctangent时存在一些模糊性:
atan(y/x)
的结果仅限于-90°,90°[。 我不知道目标C,但大多数语言都有atan2(x,y)
函数:
atan(y/x)
和x
均为正数时,y
相同的内容,x
和/或y
为负时返回正确的结果,实际上,Objective C确实有atan2()
函数。如果我是你,我会查找文档。
答案 1 :(得分:1)
角度为arctan(y/x)
,水平指向右方向为0,垂直方向为90°。注意,这是坐标系具有0°=直接向东的家;确保增加或减去箭头指向的角度。
答案 2 :(得分:1)
关键是箭头应指向它,使其与行进的曲线相切。因此,如果箭头的路径是(x(t),y(t)),则箭头应指向与矢量相同的方向(x'(t),y'(t)),其中x'(t)是x(t)的导数。如果你有x(t)和y(t),这可能是最简单的。
另一种看待它的方法是x'(t)只是速度的x分量。因此,如果你有速度分量vx(t)和vy(t),那么箭头应指向与矢量相同的方向(vx(t),vy(t))