美文网首页
Unity第三人称游戏摄像机跟随

Unity第三人称游戏摄像机跟随

作者: 再改一个名 | 来源:发表于2022-02-26 13:40 被阅读0次

第一种 跟随玩家位置 镜头无法旋转

摄像机初始位置与玩家位置需要提前手动设置


image.png

如果相机没有提前设置好 则game界面不能正确看到对象

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

public class CameraMove : MonoBehaviour
{
    private Transform _playerTransform;
    private Vector3 _offset;
    // Start is called before the first frame update
    void Start()
    {
        _playerTransform = GameObject.FindWithTag("Player").transform;
        _offset = _playerTransform.position - transform.position;
    }

    // Update is called once per frame
    void LateUpdate()
    {
        transform.position = _playerTransform.position - _offset;

    }
}

第二种

这一种方式 让摄像机自动寻找玩家 然后旋转镜头对准玩家
镜头旋转的速度和相机跟随的速度影响 用户的体验


image.png
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraMove : MonoBehaviour
{
    private Transform _playerTransform;
    private Vector3 _offset = new Vector3(0, 5, -4); // 相机相对于玩家的位置
    private Vector3 _pos;// 相机相对于世界的位置
    private float _speedRotate = 20;// 相机旋转的速度
    private float _speedMove = 20;// 相机移动的速度
    // Start is called before the first frame update
    void Start()
    {
        _playerTransform = GameObject.FindWithTag("Player").transform;

    }

    // Update is called once per frame
    void LateUpdate()
    {
        _pos = _playerTransform.position + _offset;

        // 位移相机
        this.transform.position = Vector3.Lerp(this.transform.position, _pos, _speedMove * Time.deltaTime);

        // 得到旋转镜头的四元素
        Quaternion angel = Quaternion.LookRotation(_playerTransform.position - this.transform.position);

        // 旋转相机
        this.transform.rotation = Quaternion.Slerp(this.transform.rotation, angel, _speedRotate * Time.deltaTime);
    }
}

相关文章

网友评论

      本文标题:Unity第三人称游戏摄像机跟随

      本文链接:https://www.haomeiwen.com/subject/ypeqrrtx.html