Unity物体始终朝向摄像机方向

该代码示例展示了在Unity中如何编写一个C#脚本,使得游戏对象能始终面向主摄像机并在x-z平面上平滑旋转。通过获取Camera.main的Transform,计算物体与摄像机之间的向量差,并利用Quaternion.LookRotation和Quaternion.Slerp进行旋转动画处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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轴旋转的物体上即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值