【问题标题】:How to keep an object always in front of another object?如何让一个对象始终在另一个对象前面?
【发布时间】:2019-04-11 20:42:23
【问题描述】:

我有一个对象和一个玩家。无论玩家在什么位置,如何让对象始终在玩家面前?

大家好,感谢您的回复!只是为了补充一点,对象在随机位置生成,然后我让它向玩家移动(这就是为什么我没有让它成为玩家的孩子)。从那时起,它将永远停留在玩家面前。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 所以,到目前为止,我已将对象移向玩家。它不断地向玩家移动,但不会停留在它面前。 @SnakeEyes
  • 你为什么不添加一些数量来将那个对象放在你的播放器前面?
  • 嘿,amount 是什么意思?
  • @anaksky2k19 我的意思是你写到现在的代码

标签: c# unity3d


【解决方案1】:

您可以将该对象设置为播放器的子对象

GameObject childPlacehoderObj;   // Set this to the child you want to give a home
GameObject playerObj;  // This will be the parent

childPlacehoderObj.transform.parent = playerObj.transform;

现在孩子将与父母一起移动。

更新:物体在随机位置生成,然后我让它向玩家移动

然后,您可以做的是创建一个空对象,该对象将作为该对象的最终位置。而这个空对象,你让它成为玩家的孩子。

然后你要做的就是让对象,它被生成,移动到那个空对象的位置。您可以在应该在播放器前面的对象中添加类似this 的内容

void Update()
{
    // Move our position a step closer to the target.
    float step =  speed * Time.deltaTime; // calculate distance to move
    transform.position = Vector3.MoveTowards(transform.position, childPlacehoderObj.position, step);   
}

最后,一旦物体到达目标点,你就可以让它成为玩家的孩子。

【讨论】:

  • 是的,这会起作用,但是孩子需要固定 - 静态的。
  • 嘿,我更新了它以详细说明。对象并不总是静态的。
  • @anaksky2k19 我也更新了我的 anseer。试试看,让我知道
【解决方案2】:

也许您可以将播放器设置为对象的父级。像这样,对象会在玩家的位置之后定义它的位置,并且一旦它在玩家的前面,无论他的位置如何,它都会一直停留在那里。

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多