两个物体A(x1, y1)、B(x2, y2),将物体A旋转至面向目标,如何求该角度?
已知物体A的原角度
开发游戏时遇到的一个问题,希望得到大家帮助
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
已知物体A的原角度
开发游戏时遇到的一个问题,希望得到大家帮助
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这里有一个例子,子弹朝向鼠标:
http://gamemechanicexplorer.com/#bullets-3
如果子弹是A,鼠标是B,那么角度就是
atan2 函数是 atan(n) 的一个复杂的封装,很常用。
我理解的是,既然能“面向目标”,那么这里的物体 A 不仅有位置信息,也有朝向信息。当前的A的朝向这里没有给出,假设为
$$ \vec{a} = (x_a, y_a) $$
假设旋转后的方向为
$$ \vec{a'} $$
则由图很容易得出,
$$ \vec{a'} = (x_2 - x_1, y_2 - y_1) $$
问题是求向量a和向量a'的夹角。点积就可以算出来了。
$$ cos<\vec{a}, \vec{a'}> = \frac{\vec{a} · \vec{a'} }{ |\vec{a}| · |\vec{a'}|} $$
$$ = \frac{x_a(x_2 - x_1) + y_a(y_2 - y_1)}{\sqrt{x_a^2+y_a^2}\times\sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}} $$
个人理解是这样,如有错误请指出,谢谢> <