Unity3D中第三人称视角的镜头跟随和目标锁定

本文介绍了在Unity3D中如何实现第三人称视角的镜头跟随和目标锁定。通过设定摄像机与人物的相对位置和旋转角,以及在锁定时调整人物和摄像机的朝向。在遇到角度突变导致的视角问题时,通过修正角度差值确保平滑过渡。最终实现平滑的镜头转动效果。

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

从2D游戏到3D游戏的进化,最重要的就是游戏视角的控制。奠定了3D游戏操作模式的1998年的神话级游戏《塞尔达传说:时之笛》中,对3D下游戏视角设计的关键即在于“镜头跟随”与“视角锁定”。本文将在unity中实现该效果。

实现过程

实现的思路非常简单:

  • 在初始化时设定摄像机和人物之间的相对位置和相对旋转角;
  • 在需要锁定时找到人物最近的单位,使人物转向该单位,并将摄像机的水平面的旋转角设置至和人物相同;
  • 如果一定范围内没有单位,则人物不需转向,摄像机仍然执行;

这里设置了positionTarget和angleTarget两个变量,用来表示移动的目标状态,同时使用Lerp函数实现平滑运动。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour
{
   
    public GameObject player;
    Vector3 distanceToPlayer;
    Vector3 positionTarget,angleTarget;
    LayerMask enemyLayer;
    float temp;

    // Start is called before the first frame update
    void Start()
    {
   
        distanceToPlayer = this.transform.position - player.transform.position;
        enemyLayer = LayerMask.GetMask("Enemy");
        angleTarget = this.transform.eulerAngles;
    }

    // Update is called once per frame
    void Update()
    {
    
        CameraFollow();
        if (Input.GetKey(KeyCode.Space))
        {
   
            CameraAngle();
        }
        this.transform.eulerAngles = Vector3.Lerp(this.transform.eulerAngles, angleTarget, 0.3f)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值