【发布时间】:2021-11-11 10:26:46
【问题描述】:
我正在尝试做的是相对于相机所面对的位置移动一个对象。
到目前为止,我写了这段丑陋的代码
private bool ApplyPan_XZ(Vector2 old0, Vector2 new0)
{
Vector2 panDirection = old0 - new0;
Vector3 newDirection = new Vector3(panDirection.x, 0f, panDirection.y);
if (newDirection.magnitude < PanMagnitudeThreshold)
return false;
Vector3 movementX = myCamera.right * panDirection.x;
Vector3 movementZ = myCamera.forward * panDirection.y;
Vector3 movement = movementX + movementZ;
movement.y = 0f;
transform.Translate(panSpeed * Time.deltaTime * movement);
return true;
}
基本上,我得到一个旧位置和一个新位置,我比较两个位置以获得方向,然后将结果轴乘以相机右侧和相机向前以获得相对位置。
到目前为止一切正常,除了我旋转变换时。在这种情况下,由于某种原因,移动被应用到前向对象,而不是相机。
我尝试了什么:
- 使用transform.Translate 参数的最后一个 relativeTo => 我只需要在 x 和 z 轴上是相对的,这也适用于 y 轴
- 更改/转换单词/本地位置,反之亦然
我想要完成的事情:
- 始终相对于相机移动变换,即使我旋转它。
我尝试过的额外内容: Stuff More stuff
【问题讨论】: