Unity三种摄像机旋转方式

这篇具有很好参考价值的文章主要介绍了Unity三种摄像机旋转方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.按下鼠标右键可以实现摄像机上下左右旋转

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

public class CameraRotate : MonoBehaviour
{
    //旋转速度
    public float rotationSpeed = 5f;
    //上下旋转角度限制
    public float maxVerticalAngle = 90f;
    public float minVerticalAngle = -90f;
    //旋转缓冲速度
    public float lerpSpeed = 10f;
    private float targetRotationX = 0f;
    private float targetRotationY = 0f;
    void Update()
    {
        if (Input.GetMouseButton(1))
        {
            // 获取鼠标输入的旋转增量
            float rotationXInput = -Input.GetAxis("Mouse Y");
            float rotationYInput = Input.GetAxis("Mouse X");
            // 根据旋转速度进行摄像机的旋转
            targetRotationX += rotationXInput * rotationSpeed;
            targetRotationY += rotationYInput * rotationSpeed;
            // 对上下旋转角度进行限制
            targetRotationX = Mathf.Clamp(targetRotationX, minVerticalAngle, maxVerticalAngle);
            // 根据旋转角度更新摄像机的欧拉角,Quaternion.Lerp可以使摄像机旋转更加平滑
            Quaternion targetRotation = Quaternion.Euler(targetRotationX, targetRotationY, 0f);
            transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, lerpSpeed * Time.deltaTime);
        }
    }
}

2.按下鼠标右键可以实现摄像机围绕某个物体上下左右旋转

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

public class CameraRotate1 : MonoBehaviour
{
    public Transform target;
    public float rotationSpeed = 5f;
    public float maxVerticalAngle = 90f;
    public float minVerticalAngle = -90f;
    public float lerpSpeed = 200f;
    public float distance = 10;

    private float targetRotationX = 0f;
    private float targetRotationY = 0f;

    void Start()
    {
        if (target == null)
            Debug.LogError("Please assign a target to the orbit camera!");
    }
    void Update()
    {
        if (Input.GetMouseButton(1))
        {
            float rotationXInput = -Input.GetAxis("Mouse Y");
            float rotationYInput = Input.GetAxis("Mouse X");

            targetRotationX += rotationXInput * rotationSpeed;
            targetRotationY += rotationYInput * rotationSpeed;

            targetRotationX = Mathf.Clamp(targetRotationX, minVerticalAngle, maxVerticalAngle);

            Quaternion targetRotation = Quaternion.Euler(targetRotationX, targetRotationY, 0f);
            transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, lerpSpeed * Time.deltaTime);
        }
        transform.position = target.position - transform.forward * distance;
    }
}

3.摄像头始终跟随在某个物体的正后方文章来源地址https://www.toymoban.com/news/detail-642563.html

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

public class CameraRotate2 : MonoBehaviour
{
    public Transform target;
    public float followSpeed = 2f;
    public float followHeight = 4f;
    public float distance = 8f;

    private Vector3 velocity = Vector3.zero;
    void Start()
    {
        if (target == null)
            Debug.LogError("Please assign a target to the orbit camera!");
    }
    void LateUpdate()
    {
        Vector3 targetPosition = target.position - (target.forward * distance)+new Vector3(0,followHeight,0);
        transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, 1f / followSpeed);
        transform.LookAt(target);
    }
}

到了这里,关于Unity三种摄像机旋转方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity控制摄像机跟随玩家三种办法

    将相机拖到人物的游戏对象上,也就是让相机成为角色的子物体,这样相机就会跟随角色移动 但是这样会存在问题 1.相机会随着人物的翻转而翻转 2.相机跟随人物没有缓冲效果,移动比较僵硬 代码方式控制相机跟随人物移动,利用Lerp函数控制相机 1.在Unity中创建一个脚本F

    2024年02月16日
    浏览(48)
  • unity-第三人称摄像机简单脚本(包括跟随、视角旋转、滚轮缩放)

    本菜鸟为了实现第三人称视角摄像机的主要功能,踩了很多意料之外的坑,终于搞出一份自觉完美的脚本,分享一下。 功能:摄像机跟随、鼠标滚轮缩放视野、长按鼠标右键左右旋转视野、长按鼠标中键上下旋转视野。 此脚本挂接在摄像机上,有详细注释,可直接运行。

    2024年02月08日
    浏览(40)
  • 【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

    描述 实现摄像机根据鼠标移动跟随物体旋转,以摄像机前物体为中心,摄像机围绕物体旋转,并使摄像机时刻指向物体 实现效果 Unity 组件设置 Camera 组件设置 Body 组件设置 实现代码 CameraRotateMove.cs 摄像机跟随和旋转 move_better.cs 物体根据按键移动

    2024年02月08日
    浏览(56)
  • Unity丨移动相机朝向目标并确定目标在摄像机可视范围内丨摄像机注释模型丨摄像机移动丨不同尺寸模型优化丨

    本文提供的功能是摄像机朝向目标移动,并确定整个目标出现在摄像机视角内,针对不同尺寸的模型优化。 提示:这里可以添加技术名词解释 直接上代码 后期可扩展功能:类似点击目标完成视角移动等。

    2024年02月07日
    浏览(41)
  • Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩

    Unity3D中运行场景时,实现摄像机的前、后、左、右、上、下,以及鼠标滚轮的放缩,鼠标右键的旋转操作。亲测有效,可供参考。 按键功能介绍:W——前;S——后;A——左;D——右;Q——下降;E——上升;鼠标右键——旋转;鼠标滚轮——放缩。 Tourcamera脚本需要挂在摄

    2024年02月11日
    浏览(43)
  • unity控制摄像机几种视角实现方式

    目录 1、按下鼠标右键可以实现摄像机上下左右旋转 2、自由视角 3、摄像头跟随视角 4、跟随自由视角 5、第一人称跟随视角 python学习汇总连接: 1、按下鼠标右键可以实现摄像机上下左右旋转 这段代码定义了一个名为CameraRotate的脚本,用于控制摄像机根据鼠标右键(中键)

    2024年03月12日
    浏览(35)
  • 【unity】关于unity3D摄像机视角移动的几种方式详解

    目录 一、前言 二、Transform基础 1、几种坐标系 2、position和localPosition属性 3、rotation属性 三、摄像机的平移 1、键盘控制平移 2、鼠标控制平移 3、整合  四、摄像机的旋转 1、绕自身旋转 2、绕目标物体旋转 3、整合  五、优化功能 1、调整速率 2、切换目标物体 3、设置常用摄

    2024年02月04日
    浏览(32)
  • unity实现简单的摄像机震动效果(包括普通摄像机和虚拟摄像机)

    用代码实现摄像机简单的震动效果

    2024年02月12日
    浏览(27)
  • 【Unity 摄像机组件】Camera场景摄像机的认识

    OK 同学们好,本节课我们开始学习摄像机创建以及摄像机的属性。 CH3.3 PPT02 摄像机相机是玩家用来观看游戏场景世界的基本设备,当游戏运行的时候,游戏画面就是摄像机看到的画面。 PPT 3一个场景中可以有无数个摄像机,最终游戏运行的画面可能是很多个摄像机拼凑而成。

    2024年02月02日
    浏览(41)
  • Unity【角色/摄像机移动控制】【3.摄像机跟随角色】

    本章代码基于前两章。 1. 我们新建CameraController脚本,将其挂载到Camera上 2. 在角色Player下新建一个空物体,命名为cameraTargetPoint,并将该物体挂载至CameraController脚本中【注意代码中的这行:public Transform cameraTargetPoint;】,将该空物体放在人物头部附近位置 3.将PlayerController脚本

    2024年02月22日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包