【问题标题】:Unity Reference Transform not always the sameUnity 参考变换并不总是相同的
【发布时间】: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


【解决方案1】:

看起来是刚体导致了所有问题,我将其设置为在所有轴上冻结位置,这似乎已经解决了问题。但是,它似乎也阻止了任何引用获取正确的 transform.position,所以我不得不创建一个公共函数来获取 Vector3 本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多