gpt4 book ai didi

c# - 矢量/角度数学

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:50 26 4
gpt4 key购买 nike

我在游戏中有两个对象,为此可以将其视为 2d 平面上的点,但我使用 Vector3s,因为游戏本身是 3d。

我有一个游戏相机,我想将其与两个物体垂直(也在平面上)对齐,以便它们都在相机的视野中。由于游戏的性质,物体可以处于任何可以想象的位置配置,因此它们之间的方向矢量可以有任何方向。

第 1 部分:如何从两个位置向量获取垂直角度?

我有:

Vector3 object1Position; // x and z are relevant
Vector3 object2Position;

我需要:

float cameraEulerAngleY;

第 2 部分:现在,由于游戏 Assets 的建模方式,我只想让摄像机在 180 度“圆锥体”范围内查看。因此,如果相机经过某个点,它应该使用上述数学可能产生的完全相反的位置。

附上我需要的图片,圆圈是物体,方框是相机。

example cases

我希望这篇文章是清楚的,你们不会因为我在矢量数学上完全是垃圾而活活烧死我:P

问候,德拉克尼尔

最佳答案

您需要指定距对象线的距离,以及向上向量:

Vector3 center = 0.5 * (object2position + object2position)
Vector3 vec12 = object2position - object1position

Vector3 normal = Cross(vec12, up)
normal.Normalize()
Vector3 offset = distance * normal

Vector3 cameraA = center + offset
Vector3 cameraB = center - offset
< choose which camera position you want >

而不是使用欧拉角,你可能应该使用像 LookAt() 这样的东西来定位你的相机。

关于c# - 矢量/角度数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com