Unity 的Position和Rotation问题(坑)

最近有好几个人问我关于position和rotation的问题,我也不懂为什么要这么设计。。。

Position

代码中的position是世界坐标下的gameObject的位置
而面板中的position是localPosition相对父物体的坐标

Rotation

面板上的rotation范围是0 到 180,-180 到 0
但在程序中的rotation范围则是0 到 360
所以需要自己算一下,或者写一个函数转换一下
设置旋转角度:

transform.localEulerAngles = new Vector3(-3, -83, 0);
你可以通过以下代码来实现相机的旋转保持固定: ```csharp public class CameraController : MonoBehaviour { public Transform target; // 相机要跟随的目标物体 public float distance = 10.0f; // 相机距离目标物体的距离 public float height = 5.0f; // 相机距离目标物体的高度 public float rotationDamping = 3.0f; // 相机旋转阻尼 private void LateUpdate() { float currentRotationAngle = transform.eulerAngles.y; float desiredRotationAngle = target.eulerAngles.y; float rotationAngle = Mathf.LerpAngle(currentRotationAngle, desiredRotationAngle, rotationDamping * Time.deltaTime); Quaternion currentRotation = Quaternion.Euler(0, currentRotationAngle, 0); Quaternion desiredRotation = Quaternion.Euler(0, desiredRotationAngle, 0); Quaternion rotation = Quaternion.Lerp(currentRotation, desiredRotation, rotationDamping * Time.deltaTime); transform.position = target.position; transform.position -= rotation * Vector3.forward * distance; transform.position = new Vector3(transform.position.x, target.position.y + height, transform.position.z); transform.rotation = rotation; } } ``` 在这个脚本中,我们通过 `target` 变量来指定相机要跟随的目标物体。然后,我们通过 `distance` 和 `height` 变量来指定相机距离目标物体的距离和高度。最后,我们使用 `rotationDamping` 变量来指定相机旋转的阻尼。 在 `LateUpdate` 方法中,我们首先计算出当前相机的旋转角度和目标物体的旋转角度,并使用 `Mathf.LerpAngle` 方法来计算出相机应该旋转的角度。然后,我们将旋转角度转换为旋转四元数,并使用 `Quaternion.Lerp` 方法来计算出相机应该旋转的四元数。 接着,我们使用计算出的旋转四元数来更新相机的位置和旋转。我们首先将相机的位置设置为目标物体的位置,然后使用旋转四元数和距离变量来计算出相机的位置,最后将相机的高度调整为指定的高度。最后,我们将相机的旋转设置为计算出的旋转四元数。 使用这个脚本,你可以保持相机的旋转固定,并让相机跟随目标物体移动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值