Unity简单方法实现圆周运动

前言

首先,我们利用Unity API中的Transform.RotateAround来实现简单的圆周运动。但是这个实现,仅仅是使物体发生位移,我们还需要让物体在运动时朝着圆周运动的运动方向。

RotateAround

Transform.RotateAround方法使一个游戏对象绕着某点进行绕圆移动。

function RotateAround (point : Vector3, axis : Vector3, angle : float) : void

  • point:圆心/中心点
  • axis:旋转轴,绕着哪个轴进行旋转
  • angle:每一帧旋转的角度

例:

square.RotateAround (point :pointObj.transform.position , axis : Vector3.up, angle : Time.deltaTime*angle) 

A、B点分别为物体-'square'在绕pointObject位置旋转过程中的两个不同时刻所处的位置。

 

在A、B两点上,square物体的朝向(Rotation)不发生变化,始终保持原Rotation。

朝向运动切线

 

思路:以旋转中心为垂足,作‘旋转中心的位置-square物体位置’的垂线

我们可以通过Cross得到一个向量的垂直向量。

代码如下:

square.forward = Vector3.Cross(pointObj.transform.position-square.position,Vector3.up);

叉乘得到的是一个向量(Vector3.Cross),我们可以通过左手定则来判断方向。通过指向圆心的向量(pointObj.transform.position-square.position)*平面法向量(Vector3.up)。得到园的切线(square.forward)。

 

 

作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/unity/unity_technologyshare/1355
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
Unity简单方法实现圆周运动
前言 首先,我们利用Unity API中的Transform.RotateAround来实现简单的圆周运动。但是这个实现,仅仅是使物体发生位移,我们还需要让物体在运动时朝着圆周运动……
<<上一篇
下一篇>>
文章目录
关闭
目 录