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

从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)
  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity第三人称跟随视角是一种相机跟随玩家角色的效果,让玩家能够从角色身后或角度上方观察游戏场景。为了实现这一效果,需要进行以下步骤: 1. 首先,我们需要记录相机和角色之间的偏移量。通过获取相机和角色的GameObject,以及计算它们之间的偏移量来实现。例如,可以使用以下代码来记录偏移量: mainCamera = GameObject.Find("Main Camera"); player = GameObject.Find("Player"); offset = -player.transform.position + mainCamera.transform.position; 2. 接下来,我们需要根据偏移量和角色的旋转位置来计算相机的目标位置,并实现相机的跟随效果。可以使用以下代码来实现: mainCamera.transform.rotation = Quaternion.Lerp(mainCamera.transform.rotation, player.transform.rotation, 1.0f/LerpCount); mainCamera.transform.position = player.transform.position + mainCamera.transform.rotation * offset; 3. 这样实现的效果是相机会平滑地跟随玩家角色的旋转和移动。相机会在一定时间内旋转到固定位置,最终保持与玩家角色相对位置不变。 需要注意的是,以上代码只是示例,实际使用时可能需要根据具体情况进行调整和优化。同时,还可以根据需求添加额外的功能,如限制相机的移动范围、调整相机的缩放等,以满足游戏的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Unity相机跟随游戏角色移动旋转(第三人称为主)](https://blog.csdn.net/fairen/article/details/119827181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值