在3D单人游戏项目中,如何将物体放置在相机前方一定距离处?

问题描述 投票:0回答:1

我正在从事一个单人游戏项目,在该项目中,玩家控制太空中的飞船(第一人称视角),并以随机速度射击在随机位置产生的小行星。拍摄时,无论相机在哪里或面向哪个方向,我都希望将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个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.