赞
踩
- using UnityEngine;
-
- public class LookAtCamera : MonoBehaviour
- {
- private Transform cameraTransform;
- public float rotationSpeed = 10f;
-
- void Start()
- {
- cameraTransform = Camera.main.transform; // 获取主摄像机的Transform组件
- }
-
- void Update()
- {
- Vector3 direction = cameraTransform.position - transform.position;
- direction.y = 0f; // 只在x-z平面上旋转
- Quaternion targetRotation = Quaternion.LookRotation(direction, Vector3.up);
- transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
- }
- }

在上面的代码中,首先定义了一个cameraTransform变量,用于存储摄像机的Transform组件。
使用Camera.main
方法来获取场景中的主摄像机,然后获取其Transform组件并将其赋值给cameraTransform
变量。
然后,在Update方法中,我们计算出摄像机位置和物体位置之间的向量差,并将其存储在direction变量中。由于我们只想在x-z平面上旋转物体,因此我们将direction向量的y分量设置为0。
接下来,我们调用Quaternion.LookRotation函数,并将direction向量和向上的向量(Vector3.up)作为参数传递给它,以获取旋转Quaternion,使物体朝向摄像机方向。然后,我们使用Quaternion.Slerp函数来平滑地将物体的旋转角度过渡到目标角度。我们还将rotationSpeed变量用于控制旋转速度。
最后,将上述脚本挂载到需要始终朝向摄像机并绕y轴旋转的物体上即可。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。