这应该是一个简单的任务,我已经在Google上进行了搜索,但是我不知道为什么这些示例对我有用。

基本上,我想在第一人称游戏中将瓷砖放置在地面上。我希望将要放置在地面上的物体“悬空”在空中,同时为其选择最佳位置。我可以实例化该对象,使其成为播放器摄像机的子级,但无法将其X单元放置在摄像机的前面;它总是以“玩家”结尾。

public void StartPlacing ( Item item ) {
    Object itemPrefab = Resources.Load( "Prefabs/" + item.prefabName );

    GameObject itemObject = (GameObject)Instantiate( itemPrefab );
    itemObject.transform.parent = playerCamera.transform;

    // What to do here to place it in front of the camera? I've tried this:
    itemObject.localPosition = new Vector3( 0, 0, 5 );
}


更新:摄像机是播放器(角色控制器)的子级,并且摄像机处于透视模式。

最佳答案

您可以使用对象的forward vector,如下所示:

public GameObject frontObject;
public float distance;

void Update () {
    frontObject.transform.position = Camera.main.transform.position + Camera.main.transform.forward * distance;
}

关于unity3d - 将物体放在相机前面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22696782/

10-13 06:57