unity3d - 将物体放在相机前

标签 unity3d

这应该是一项简单的任务,我已经用谷歌搜索过了,但我不明白为什么这些例子对我有用。

基本上,我想在我的第一人称游戏中在地面上放置瓷砖。我希望我想放置在地面上的物体能够在半空中“漂浮”,同时为它选择完美的位置。我可以实例化对象,使其成为播放器相机的子对象,但我无法将它定位在相机前面 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 );
}

更新:相机是玩家(角色 Controller )的 child ,相机处于透视模式。

最佳答案

您可以使用 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/

相关文章:

unity3d - 如何在unity3D中平滑移动Camera?

unity3d - Rigidbody AddForce 在 Photon Unity 中不起作用

ios - 将 unity3d 与 vuforia 集成到 ios 应用程序时出现 'Undefined symbols for architecture armv7' 错误

c# - Unity 2D健康条

c# - 地形地面,城市中的草地和雪地 : Skylines

c# - Unity3D - 一种将一个字段的值与另一个字段或值进行比较的通用方法

c# - 编辑器脚本附加到的 Unity Access 脚本

c# - 如何修改旋转变换的位置

c# - (Unity) 如何检查动画是否正在混合树中播放?

unity3d - HoloLens 空间映射不可用