基本上我试图从敌人的剧本中获得玩家的位置。我已经从玩家自己检查了位置,并且位置始终相同(在测试期间我根本不移动玩家)。出于某种原因,虽然当我从敌人脚本获得转换位置时,它返回一个不同的数字,并且每次的数字都不相同。这是它给出的一些绳索
(-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它停止抖动。不知道究竟是什么导致了这一点,但这确实解决了这个问题。
答案 0 :(得分:0)
看起来僵硬的身体造成了所有问题,我将它设置为冻结所有轴上的位置,这似乎已经解决了问题。然而,它似乎也阻止任何引用获得正确的transform.position所以我必须创建一个公共函数来获取Vector3本身。