该Unity脚本使gameObject围绕对象旋转。怎么样?

约翰·塞奇

下面的代码来自Unity的Quaternions教程如果复制/粘贴代码,它将使您的对象绕目标飞行。我的问题是:为什么?为什么会这样呢?当我只使用transform.RotateAround()时,为什么要这样做呢?请注意,如果您稍微更改代码,其行为将完全不同。例如,如果我将3更改为-3,则该对象就会消失。

    public Transform target;

    void Update()
    {
        Vector3 relativePos = target.position - transform.position;
        Quaternion rotation = Quaternion.LookRotation(relativePos);

        Quaternion current = transform.localRotation;

        transform.localRotation = Quaternion.Slerp(current, rotation, Time.deltaTime);
        transform.Translate(0, 0, 3 * Time.deltaTime);
    } 
rob1997

首先是给定的。

relativePos是从目标到目标的向量方向。LookRotation是一个函数,该函数Quaternion从您希望对象面向的向量中得出Slerp在两个旋转之间进行球面内插旋转,这意味着它从给定旋转平滑地旋转到另一个旋转。

现在开始解释。

它绕着目标旋转,因为transform.Translate没有它,您的对象将旋转以面向目标(由于LookRotation)而在其自身的轴上不动。tranform.Translate第三个参数中(3 * Time.deltaTime)表示将对象沿其z轴向前移动3个单位/秒,因此它会退出,因为它一直试图在z轴上移动3个单位/秒,但Slerp一直在拉动它朝目标旋转,因此tranform.Translate将其移动并Slerp保持旋转回目标,从而导致绕轨道运动。

而且你不能仅仅transform.RotateAround()因为

  1. 您将无法配置对象面对对象时将围绕目标旋转的方式。您可以将其与结合使用,transform.LookAt()但会在上面的代码中产生一些抖动效果,而在上面的代码中,Slerp球面插值旋转实际上意味着旋转更平滑且抖动更少。
  2. 您将无法通过以下方式指定旋转半径 transform.Translate

该对象tranform.Translate逃逸是因为在第三个参数(3 * Time.deltaTime)中表示沿其z轴向前移动对象3个单位/秒,而-3意味着向后移动该对象因而因此逃跑了,但是如果您靠近它,它仍然面向目标。由于LookRotationSlerp功能,它没有沿Z轴向后移动,而是沿面向目标的方向向后移动

如果您还有其他疑问/需要更多解决方法,我希望这能很好地解释您的问题,我会尽快回复您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash 脚本 - 6 > 50 怎么样?

来自分类Dev

插入新的对象为对象树。怎么样?

来自分类Dev

动态搜索?怎么样?

来自分类Dev

NSSortDescriptor中文...怎么样?

来自分类Dev

翻转 jcombobox 怎么样?

来自分类Dev

当您滚动到页面底部时,我希望徽标旋转一圈。怎么样?

来自分类Dev

如何使一个GameObject在旋转平面中围绕Unity中的另一个gameObject旋转

来自分类Dev

PHP shell脚本'echo -ne'怎么样?(Shell进度栏)

来自分类Dev

status.sh bash脚本回显填充。怎么样?

来自分类Dev

在unity3d中围绕游戏对象旋转cameran

来自分类Dev

测试算法速度。怎么样?

来自分类Dev

QFile.write(myStruct)-怎么样?

来自分类Dev

怎么样才能好工作?

来自分类Dev

sudo怎么样!在Ubuntu上工作

来自分类Dev

rub-现在怎么样

来自分类Dev

我可以向当前的“此”对象添加属性吗?怎么样?

来自分类Dev

怎么样当HashMap的值就是Java 8由多个属性的对象的列表

来自分类Dev

展平对象的深层嵌套列表并创建一个csv。怎么样?

来自分类Dev

当对象最初由其中心旋转时,围绕该点旋转对象

来自分类Dev

围绕不断旋转的对象旋转对象

来自分类Dev

在JS中围绕旋转对象旋转对象

来自分类Dev

围绕鼠标旋转多个对象

来自分类Dev

Typescript-在集合上映射以向其添加属性以更改其中的对象的类型。怎么样?

来自分类Dev

自身旋转时围绕对象的OpenGL旋转

来自分类Dev

Gson从地图列表解析。怎么样?

来自分类Dev

P中的质数-运行到sqrt怎么样?

来自分类Dev

用enum初始化bean的属性怎么样?

来自分类Dev

从root用户运行bower,这可能吗?怎么样?

来自分类Dev

“关闭变量会导致性能稍差”。怎么样?

Related 相关文章

热门标签

归档