unity相机旋转带阻尼效果
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相机旋转带阻尼效果相关推荐
- Unity相机旋转和人物朝向
最近在做一个自己想做的东西,里面涉及到摄像机的旋转,人物朝着摄像机旋转后的方向行走等等,还要固定摄像机和人物的相对距离不变,并跟随人物移动. 首先需要定义一个Vecto3 relCameraPos,在 ...
- unity3D 鼠标控制物体旋转带阻尼效果
最近做了一个鼠标拖拽360°旋转查看物体的功能,很基础的一个功能,代码不多写的很快 但是最后出来的效果不是很满意,感觉没有灵魂,很死板僵硬,所以做了一点小修改,在鼠标拖拽结束时计算最后鼠标的加速度,让 ...
- Unity 相机围绕目标旋转、缩放功能实现
Unity 相机围绕目标旋转.缩放功能实现 //************************************************相机围绕物体旋转.相机缩放*************** ...
- Unity Window触摸屏电脑和移动端Input触控,控制相机旋转缩放
Unity Window触摸屏电脑和移动端Input触控,控制相机旋转缩放 原理就是获取手指滑动的偏移量,来计算 代码帖出来 using UnityEngine; using System; usin ...
- Unity 在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小
在zSpace上使用鼠标控制相机旋转和鼠标指引式放大缩小,在触屏上手势位置为中心放大缩小 鼠标和触屏的操作 下面展示一些 内联代码片. using System; using System.Colle ...
- Unity 相机固定角度平移至指定物体
前言:这个也是我得一个朋友怎么做,朋友跟我说的方法,然后我就想记录下来,当个学习. 需求:相机固定视角(相机的高是15.x轴选转30.y轴旋转15),地图上有很多物体,点击后相机移动到指定物体(物体居 ...
- Unity相机自由移动脚本
实现WSAD移动方向,鼠标右键旋转角度,滚轮实现缩放 在此之前,我们先讲清楚几个比较容易混淆的点: 1:Transform.forward是Transform组件的一个Vector3类型的属性,代表游 ...
- UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升...
UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升 UNITY 优化之带Animator的Go.SetAct ...
- unity相机围绕模型转_围绕我们的业务模型和风险进行安全测试
unity相机围绕模型转 When we create an environment and consider our security testing from development to pro ...
- Unity之SkinMeshRenderer带骨骼的人体模型换装
Unity之SkinMeshRenderer带骨骼的人体模型换装 SkinMeshRenderer系统 条件 换装解决方案 第一种解决方案 第二种解决方案 方案选择 代码 效果 参考链接 SkinMe ...
最新文章
- 6000字详解数据仓库建设
- 如何为项目配置网关并且测试、实战
- 2014广州赛区比赛总结
- android string拼接字符串_为什么阿里巴巴不建议在循环体中使用+进行字符串拼接?...
- 工作总结3:axios里面的主要参数
- nginx启动与停止
- 直接用自己服务器做图床可以吗_图床+typora+gitee,写文档再也不那么麻烦
- 网站性能测试工具--MS Web Application Stress Tool
- 论文笔记Revisiting the Sibling Head in Object Detector
- 计蒜客 青出于蓝胜于蓝 【DFS序 + 树状数组】
- ecshop模板如何修改详细图解
- (收藏)盘点阿里巴巴 15 款开发者工具
- Aspose实现word转图片、pdf
- 群晖NAS 7.X 搭建个人博客网站并发布公网 1/8
- AVS2参考软件的运行
- V1.10 Research as a career
- 决定迭代次数的两种效应
- android 电池监测工具,Battery Monitor Widget Pro(电池监测器)
- java的静态与非静态 及其代码演示示例
- 三星全球首发量产512GB eUFS3.0闪存芯片 速度达2100MB/s
热门文章
- 机器学习相关数据库(转)
- C语言估算数学常量e,数学常数e
- 中国网络词“no zuo no die”被收入美国俚语词典
- vue NavigationDuplicated: Avoided redundant navigation to current location
- java 复制excel_利用Java实现复制Excel工作表功能
- 网站文章如何被快速收录,网站文章快速收录的方法!
- 佳句赏析_求上者居中,求中者居下,求下者则不入流; 原作者 出处 出自 | 句子迷...
- 启动计算机键盘没反应,电脑键盘个别键没反应怎么办
- sublime使用技巧
- matlab内置随机数生成器及随机模拟举例