Unity Reference Transform并不总是相同

时间:2016-10-23 05:21:45

标签: c# unity3d reference transform

基本上我试图从敌人的剧本中获得玩家的位置。我已经从玩家自己检查了位置,并且位置始终相同(在测试期间我根本不移动玩家)。出于某种原因,虽然当我从敌人脚本获得转换位置时,​​它返回一个不同的数字,并且每次的数字都不相同。这是它给出的一些绳索

(-0.5, 0.4, -6.7)
(-0.5, 0.5, -6.7)   
(-0.5, 0.6, -6.7)   
(-1.2, 0.6, -5.5)
(-1.3, 0.6, -6.7)

虽然物体的实际绳索是(-1.3,0.6,-6.7)。我已经尝试创建一个直接获取转换的函数,然后从对象和敌人调用它,并发生同样的问题。

以下是创建和获取播放器脚本的代码行:

在课堂上宣布

scr_Character player;

在清醒功能中

player = FindObjectOfType<scr_Character>();

作为注释,两个对象都有一个角色控制器和一个刚体,其子对象包含各自的网格。

任何帮助都会有很大帮助。

编辑:

似乎y轴慢慢变得越来越低,每20帧左右下降约0.1。然后每隔5帧,它实际打印出正确的绳索,然后用错误的绳索继续倒计时。

我创建了一个也得到转换的子对象,它似乎也有同样的问题。

playerTrans = GetComponentInParent<Transform>();

再次编辑: 似乎刚体重力负责y值,并且通过锁定x它停止抖动。不知道究竟是什么导致了这一点,但这确实解决了这个问题。

1 个答案:

答案 0 :(得分:0)

看起来僵硬的身体造成了所有问题,我将它设置为冻结所有轴上的位置,这似乎已经解决了问题。然而,它似乎也阻止任何引用获得正确的transform.position所以我必须创建一个公共函数来获取Vector3本身。