【问题标题】:Change position of current gameObject in C# on condition在条件下更改当前游戏对象在 C# 中的位置
【发布时间】:2014-03-15 17:17:48
【问题描述】:

我一直在寻找和绞尽脑汁试图让这段代码正常工作,但无济于事。希望大家能帮忙。 我有一个简单的设置,它带有一个每帧移动位置的立方体。当立方体到达不同的位置时,我需要立方体转到 x 位置。

示例:立方体从位置 0 开始,沿 x 轴向前移动,直到到达位置 15,然后返回到 0 并停止。

Vector3 startingPosition;

void Start ()
{
    startingPosition = gameObject.transform.position;
}

void Update ()
{
    if (gameObject.transform.position.x == 15) {
        gameObject.transform.position = startingPosition;

    } else {
        float translation = Time.deltaTime * 2;
        transform.Translate (0, 0, translation);
        transform.Translate (Vector3.forward * translation);
    }
}

}

当前立方体连续移动(没有停止点),它的x位置对定位没有影响。

【问题讨论】:

    标签: c# position unity3d transform


    【解决方案1】:

    将您的 == 更改为 >= 看看是否会有所不同。我的猜测是,position.x 永远不会完全等于 15,要么是由于浮点精度错误,要么是由于您的翻译逻辑从一帧跳到下一帧超过 15。

    【讨论】:

    • 啊,这么简单!这似乎奏效了,太棒了。我怎样才能让立方体实际上停在起始位置呢?他们现在回到位置 0 并再次开始前进。
    • @Sandeep 当您将其移回其起始位置时,设置bool 标志,然后在调用Translate() 之前检查该标志。
    • 非常有帮助,谢谢!我现在将尝试让立方体转换到屏幕外的位置,只是在另一个被转移时才生成! :)
    【解决方案2】:

    我遇到了动画无法正常工作的问题,并且感觉我已经在互联网上搜索了好几天试图让它工作,所以这非常有帮助。在我的情况下,动画的 GameObject 位于 y=1 的位置,应该移动到 y=9,但除非我单击动画器中的过渡,否则不会更新。我将代码从x == 15 更改为y <= 9Vector3.forward 更改为Vector3.up,现在它可以正常工作了。希望这可以帮助其他人解决同样的问题。使用 Unity v 2017.1.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-22
      • 2019-10-04
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      相关资源
      最近更新 更多