如何使一个物体始终位于另一个物体的前面?

时间:2019-04-11 12:03:43

标签: c# unity3d

我有一个对象和一个玩家。如何使物体始终位于播放器前面,无论播放器处于什么位置?

嘿,谢谢您的回复!只是要补充一点,该对象会在随机位置生成,然后我使它向玩家移动(这就是为什么我没有将其作为玩家的子代)。从那时起,它将始终位于播放器的前面。

2 个答案:

答案 0 :(得分:3)

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

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);   
}

最后,一旦物体到达目标点,就可以使其成为播放器的子代。

答案 1 :(得分:1)

也许您可以将播放器设置为对象的父对象。这样,对象将在“播放器”的位置之后定义它的位置,并且一旦它位于播放器的前面,则无论他的位置如何,它都将始终停留在该位置。