【发布时间】:2016-10-23 05:21:45
【问题描述】:
基本上,我试图从敌人脚本中获取玩家的位置。我已经检查了玩家自己的位置,并且位置始终相同(在测试期间我根本不移动玩家)。出于某种原因,尽管当我从敌人脚本中获取转换位置时,它会返回一个不同的数字,而且每次的数字甚至都不相同。这是它提供的一些电源线
(-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 它停止抖动。不知道是什么原因造成的,但这似乎确实解决了问题。
【问题讨论】:
-
我不明白你如何获得对播放器对象的引用?为您的播放器使用标签并搜索标签。
-
获取脚本实际上并没有找到对象本身吗? scr_Character 是播放器上的主要脚本,它具有我用来获取播放器位置的函数: public Vector3 getPosition() { return transform.position; }
标签: c# unity3d reference transform