【问题标题】:In a 3D monogame project, how do I place an object a set distance in front of the camera?在 3D 单人游戏项目中,如何将对象放置在相机前方一定距离处?
【发布时间】:2020-05-07 05:39:35
【问题描述】:

我正在开发一个单人游戏项目,其中玩家控制太空中的一艘船(第一人称)并射击在随机位置以随机速度生成的小行星。拍摄时,无论相机在哪里或朝向哪个方向,我都想将子弹物体直接放在相机前面 1.5 个单位。我试过这条线

Vector3 torpedoPos = CameraPosition + CameraDirection * 1.5f;

正如这两个帖子所建议的那样:Placing objects right in front of cameraPlacing an object in front of the camera,但只要我的位置是其他任何 (0, 0, 0),无论我面向哪个方向,对象都会放置在同一位置。在我发布的代码行中,torpedoPos 是我想要生成子弹对象的位置,CameraPosition 是相机对象在 3d 空间中的当前位置,CameraDirection 是具有相机对象朝向的单位向量。

【问题讨论】:

    标签: c# vector 3d monogame


    【解决方案1】:

    我用这行代码解决了这个问题 Vector3 torpedoPos = CameraPosition + Vector3.Transform(Vector3.Forward, Orientation * 1.5f); 方向是保持我的船所面向的方向的矩阵。通过使用方向 * 1.5 和 Vector3.Forward 进行变换,我得到了一个添加到我当前位置的数量,这将把鱼雷直接放在船的前面。

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多