using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;public class SmoothRotate_1 : MonoBehaviour
{[Header("旋转的类型")]public RoatationType _RoatationType;[Header("围绕旋转的目标物体")]public Transform target;[Header("设置旋转角度")]public float x = 0f, y = 0f, z = 0f;[Header("旋转速度值")]public float xSpeed = 10f, ySpeed = 10f, mSpeed = 5f;[Header(" y轴角度限制,设置成一样则该轴不旋转")]public float yMinLimit = -50, yMaxLimit = 80;[Header(" x轴角度限制")]public float leftMax = -365, rightMax = 365;[Header("距离限制")]public float distance = 6f, minDistance = 0.5f, maxDistance = 10f;[Header("阻尼设置")]public bool needDamping = true;[Header("阻尼大小")]public float damping = 3f;public float posdamping = 10;[Header("初始角度")]public float initX;public float initY;// 改变中心目标物体public void SetTarget(GameObject go){target = go.transform;}void Start(){Vector3 angles = transform.eulerAngles;x = angles.y;y = angles.x;//pers();}void LateUpdate(){if (target){if (Input.GetMouseButton(0)){// 判断是否需要反向旋转if ((y > 90f && y < 270f) || (y < -90 && y > -270f)){x -= Input.GetAxis("Mouse X") * xSpeed * 0.02f;}else{x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;}y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;//  x = ClampAngle(x, leftMax, rightMax);y = ClampAngle(y, yMinLimit, yMaxLimit);}distance -= Input.GetAxis("Mouse ScrollWheel") * mSpeed;distance = Mathf.Clamp(distance, minDistance, maxDistance);//Vector3 disVector = new Vector3(0.0f, 0.0f, -distance);Vector3 disVector = new Vector3(0.0f, 0.0f, -distance);Debug.Log(distance);//旋转角度Quaternion rotation = Quaternion.Euler(y, x, z);//位置Vector3 position = rotation * disVector + target.position;// Vector3 position = rotation * disVector + target.position;// 阻尼感if (needDamping){transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * damping);if(_RoatationType==RoatationType.user){transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime * posdamping);}}else{transform.rotation = rotation;if (_RoatationType == RoatationType.user){transform.position = position;}}}}// 对数值进行限制;static float ClampAngle(float angle, float min, float max){if (angle < -360)angle += 360;if (angle > 360)angle -= 360;return Mathf.Clamp(angle, min, max);}// 初始public void pers(){this.x = initX;this.y = initY;}// 正视图public void front(){this.x = 0f;this.y = 0f;}// 后视图public void back(){this.x = 180f;this.y = 0f;}// 左视图public void left(){this.x = 90f;this.y = 0f;}// 右视图public void right(){this.x = 270f;this.y = 0f;}// 俯视图public void top(){this.x = 0f;this.y = 90f;}// 仰视图public void bottom(){this.x = 0f;this.y = -90f;}
}
public enum RoatationType
{self,user,
}

unity相机旋转带阻尼效果相关推荐

  1. Unity相机旋转和人物朝向

    最近在做一个自己想做的东西,里面涉及到摄像机的旋转,人物朝着摄像机旋转后的方向行走等等,还要固定摄像机和人物的相对距离不变,并跟随人物移动. 首先需要定义一个Vecto3 relCameraPos,在 ...

  2. unity3D 鼠标控制物体旋转带阻尼效果

    最近做了一个鼠标拖拽360°旋转查看物体的功能,很基础的一个功能,代码不多写的很快 但是最后出来的效果不是很满意,感觉没有灵魂,很死板僵硬,所以做了一点小修改,在鼠标拖拽结束时计算最后鼠标的加速度,让 ...

  3. Unity 相机围绕目标旋转、缩放功能实现

    Unity 相机围绕目标旋转.缩放功能实现 //************************************************相机围绕物体旋转.相机缩放*************** ...

  4. Unity Window触摸屏电脑和移动端Input触控,控制相机旋转缩放

    Unity Window触摸屏电脑和移动端Input触控,控制相机旋转缩放 原理就是获取手指滑动的偏移量,来计算 代码帖出来 using UnityEngine; using System; usin ...

  5. Unity 在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小

    在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小 鼠标和触屏的操作 下面展示一些 内联代码片. using System; using System.Colle ...

  6. Unity 相机固定角度平移至指定物体

    前言:这个也是我得一个朋友怎么做,朋友跟我说的方法,然后我就想记录下来,当个学习. 需求:相机固定视角(相机的高是15.x轴选转30.y轴旋转15),地图上有很多物体,点击后相机移动到指定物体(物体居 ...

  7. Unity相机自由移动脚本

    实现WSAD移动方向,鼠标右键旋转角度,滚轮实现缩放 在此之前,我们先讲清楚几个比较容易混淆的点: 1:Transform.forward是Transform组件的一个Vector3类型的属性,代表游 ...

  8. UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升...

    UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升 UNITY 优化之带Animator的Go.SetAct ...

  9. unity相机围绕模型转_围绕我们的业务模型和风险进行安全测试

    unity相机围绕模型转 When we create an environment and consider our security testing from development to pro ...

  10. Unity之SkinMeshRenderer带骨骼的人体模型换装

    Unity之SkinMeshRenderer带骨骼的人体模型换装 SkinMeshRenderer系统 条件 换装解决方案 第一种解决方案 第二种解决方案 方案选择 代码 效果 参考链接 SkinMe ...

最新文章

  1. 6000字详解数据仓库建设
  2. 如何为项目配置网关并且测试、实战
  3. 2014广州赛区比赛总结
  4. android string拼接字符串_为什么阿里巴巴不建议在循环体中使用+进行字符串拼接?...
  5. 工作总结3:axios里面的主要参数
  6. nginx启动与停止
  7. 直接用自己服务器做图床可以吗_图床+typora+gitee,写文档再也不那么麻烦
  8. 网站性能测试工具--MS Web Application Stress Tool
  9. 论文笔记Revisiting the Sibling Head in Object Detector
  10. 计蒜客 青出于蓝胜于蓝 【DFS序 + 树状数组】
  11. ecshop模板如何修改详细图解
  12. (收藏)盘点阿里巴巴 15 款开发者工具
  13. Aspose实现word转图片、pdf
  14. 群晖NAS 7.X 搭建个人博客网站并发布公网 1/8
  15. AVS2参考软件的运行
  16. V1.10 Research as a career
  17. 决定迭代次数的两种效应
  18. android 电池监测工具,Battery Monitor Widget Pro(电池监测器)
  19. java的静态与非静态 及其代码演示示例
  20. 三星全球首发量产512GB eUFS3.0闪存芯片 速度达2100MB/s

热门文章

  1. 机器学习相关数据库(转)
  2. C语言估算数学常量e,数学常数e
  3. 中国网络词“no zuo no die”被收入美国俚语词典
  4. vue NavigationDuplicated: Avoided redundant navigation to current location
  5. java 复制excel_利用Java实现复制Excel工作表功能
  6. 网站文章如何被快速收录,网站文章快速收录的方法!
  7. 佳句赏析_求上者居中,求中者居下,求下者则不入流; 原作者 出处 出自 | 句子迷...
  8. 启动计算机键盘没反应,电脑键盘个别键没反应怎么办
  9. sublime使用技巧
  10. matlab内置随机数生成器及随机模拟举例