被疫情困在家无聊翻翻以前的文章,发现好黑历史啊,虽然是刚学unity的时候写的,后面学习了DX11并且补了3D数学,发现这些问题都是小case了O(∩_∩)O。
在我最近制作的小游戏中,需要实现防御塔面向小兵的功能。(即物体A需要面向物体B)
这很容易让人想到Unity中自带的LookAt()函数,可惜Unity自带的LookAt()函数是3D的,如果把他用在2D游戏上,一样会让物体绕X轴和Y轴旋转,这不是我们想要的效果。
既然不能用LookAt()函数,比较朴素或者说比较常用的算法(至少我是这样想到的)就是,既然我们拥有了物体A和物体B的位置,那我们肯定就能算出它们的X轴差长度和Y轴差长度,之后把他抽象成直角三角形,利用反三角函数得出我们需要绕Z轴旋转的角度(在2D中Z轴我们只能看到一个点)