Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 绕轨道物体运行的奇怪行为_Unity3d - Fatal编程技术网

Unity3d 绕轨道物体运行的奇怪行为

Unity3d 绕轨道物体运行的奇怪行为,unity3d,Unity3d,我试图使obj1环绕obj0运行,同样地,使obj2环绕obj1运行,如下所示: 类似太阳、地球、月亮的东西,但在同一个平面上 使用UnityEngine; 公共类:单一行为 { 公共转型支点; 无效更新 { ifpivot!=null{ transform.RotateAroundpivot.position,Vector3.up,Time.deltaTime*77; } } } obj1围绕obj0的轨道运行良好,但当我将obj2添加到obj1轨道时,它会从obj1射出,并开始以不断增长的半

我试图使obj1环绕obj0运行,同样地,使obj2环绕obj1运行,如下所示: 类似太阳、地球、月亮的东西,但在同一个平面上

使用UnityEngine; 公共类:单一行为 { 公共转型支点; 无效更新 { ifpivot!=null{ transform.RotateAroundpivot.position,Vector3.up,Time.deltaTime*77; } } } obj1围绕obj0的轨道运行良好,但当我将obj2添加到obj1轨道时,它会从obj1射出,并开始以不断增长的半径围绕它运行。
我错过了什么

它适用于第一种但不适用于第二种的原因如下:

我假设obj0是静态的,不会在场景中移动->以恒定偏移围绕它旋转没有问题

但这是一种行动。因此,当obj2在此帧中调用RotateAround时,轴obj1已经移动,因此偏移量每帧稍大一点,导致轴偏移量增加

就我个人而言,我宁愿使用一种结构,例如

地轴 |-土 月球支点 |-月亮 然后,可以将枢轴设置为相应的位置,并让其围绕自身旋转。相应的子对象将自动沿方向旋转,但与父对象的偏移量保持不变。然后仍然可以为子对象本身添加局部旋转,以覆盖父对象旋转,并添加旋转本身

公共类:单行为 { 公共转型支点; 公众浮标轮换速度; 私有无效更新 { transform.position=pivot.position; transform.rotativector3.up*Time.deltaTime*rotationSpeed; } } 那孩子呢

公共班级儿童轮换:单一行为 { 公众浮标轮换速度; 私有四元数旋转; 私有无效更新 { 旋转*=四元数.Euler0,Time.deltaTime*旋转速度,0; transform.rotation=旋转; } }
注意:在智能手机上输入,但我希望这个想法变得清晰。为什么它适用于第一种,但不适用于第二种,原因如下:

我假设obj0是静态的,不会在场景中移动->以恒定偏移围绕它旋转没有问题

但这是一种行动。因此,当obj2在此帧中调用RotateAround时,轴obj1已经移动,因此偏移量每帧稍大一点,导致轴偏移量增加

就我个人而言,我宁愿使用一种结构,例如

地轴 |-土 月球支点 |-月亮 然后,可以将枢轴设置为相应的位置,并让其围绕自身旋转。相应的子对象将自动沿方向旋转,但与父对象的偏移量保持不变。然后仍然可以为子对象本身添加局部旋转,以覆盖父对象旋转,并添加旋转本身

公共类:单行为 { 公共转型支点; 公众浮标轮换速度; 私有无效更新 { transform.position=pivot.position; transform.rotativector3.up*Time.deltaTime*rotationSpeed; } } 那孩子呢

公共班级儿童轮换:单一行为 { 公众浮标轮换速度; 私有四元数旋转; 私有无效更新 { 旋转*=四元数.Euler0,Time.deltaTime*旋转速度,0; transform.rotation=旋转; } }
注意:在智能手机上输入,但我希望想法变得清晰

您能添加完整的代码吗?对象是嵌套在场景层次结构中还是独立的游戏对象中?请记住,如果移动父对象,子对象将随之移动@derHugo当然,我写了整个代码,但是没有太多的附加内容。。。对象是独立的,不是父对象-我在Inspector上手动设置了引用,您可以添加完整的代码吗?对象是嵌套在场景层次结构中还是独立的游戏对象中?请记住,如果移动父对象,子对象将随之移动@derHugo当然,我写了整个代码,但是没有太多的附加内容。。。对象是独立的,不是父对象-我在inspector上手动设置了引用