【unity】鼠标拖拽实现摄像机围绕物体视角旋转(物体不动、摄像机旋转)
直接贴效果和源码了

using UnityEngine; public class StagitCamController : MonoBehaviour
{ // 旋转的目标点
public Transform target;
public float distance = 5.0f; public Vector3 startRotation; public float xSpeed = 120.0f;
public float ySpeed = 120.0f; public float yMinLimit = -20f;
public float yMaxLimit = 80f; public float distanceMin = .5f;
public float distanceMax = 15f; float x = 0.0f;
float y = 0.0f; private bool init = false; // 初始角度设置
void Start ()
{
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x; }
void LateUpdate ()
{
if (target)
{ if (Input.GetMouseButton (0) || Input.GetAxis ("Mouse ScrollWheel") != 0.0f || !init) {
x += Input.GetAxis ("Mouse X") * xSpeed * distance * 0.02f;
y -= Input.GetAxis ("Mouse Y") * ySpeed * 0.02f; //y = ClampAngle (y, yMinLimit, yMaxLimit); Quaternion rotation = Quaternion.Euler (y + startRotation.x, x + startRotation.y, 0 + startRotation.z); distance = Mathf.Clamp (distance - Input.GetAxis ("Mouse ScrollWheel") * 5, distanceMin, distanceMax); RaycastHit hit;
if (Physics.Linecast (target.position, transform.position, out hit)) {
distance -= hit.distance;
}
Vector3 negDistance = new Vector3 (0.0f, 0.0f, -distance);
Vector3 position = rotation * negDistance + target.position; transform.rotation = rotation;
transform.position = position;
init = true;
}
}
} public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
}
【unity】鼠标拖拽实现摄像机围绕物体视角旋转(物体不动、摄像机旋转)的更多相关文章
- 【转】C#.net拖拽实现获得文件路径
C#.net拖拽实现获得文件路径 作者Attilax , EMAIL:1466519819@qq.com 思路: 通过DragEnter事件获得被拖入窗口的“信息”(可以是若干文件,一些文字等等), ...
- 【WPF】一些拖拽实现方法的总结(Window,UserControl)
原文:[WPF]一些拖拽实现方法的总结(Window,UserControl) 原文地址 https://www.cnblogs.com/younShieh/p/10811456.html 前文 本文 ...
- 【狼】unity 鼠标拖拽物体实现任意角度自旋转
主要涉及函数 Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量 通过勾股定理获取拖拽长 ...
- Silverlight中的拖拽实现的图片上传
原文 http://blog.csdn.net/dujingjing1230/article/details/5443003 在Silverlight中因为可以直接从系统的文件夹里面拖出来一个文件直接 ...
- HTML5元素拖拽实现示例
HTML5现在前端圈中,已然成为一个不那么新的技术词汇了,很多公司也把HTML5也当成了硬性的技能要求,但是很多前端恐怕都不了解HTML5的拖拽怎么实现吧. 看了下极客学院的视频,大概的了解了下思路. ...
- 【WPF】这可能是全网最全的拖拽实现方法的总结
原文地址 https://www.cnblogs.com/younShieh/p/10811456.html 前文 本文只对笔者学习掌握的一般的拖动问题的实现方法进行整理和讨论,包括窗口.控件等内容的 ...
- C#.net拖拽实现获得文件路径
思路: 通过DragEnter事件获得被拖入窗口的“信息”(可以是若干文件,一些文字等等), 在DragDrop事件中对“信息”进行解析. 窗体的AllowDrop属性必须设置成tru ...
- selenium操作拖拽实现无效果的替代方案
如果碰到这种情况,无论你是直接通过draganddrop()还是分步执行clickandhold(),dragtoelement(),或通过by_offset位移都无法实现元素拖拽.只能物理模拟了 w ...
- HTML5 元素拖拽实现 及 jquery.event.drag插件
如上图片: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- WPF ListView 简单的拖拽实现(转)
首先设置ListView的AllowDrop=True:SelectionMode=Extended;并且ListView视图为GridVIew. private void listView1_Mou ...
随机推荐
- yysxky
哎,还有三天目标分数50分pde能否及格,我其实是有一些信心的我觉得我可以前两天觉得教资pde傻逼班里的模拟教资给我搞得非常恶心当时再加上根本本学不会,我真的会要崩溃的 现在结束了面试感觉其实还好会有 ...
- 开源ERP系统 Odoo 18 介绍
开源ERP系统 Odoo 18 介绍 1. ERP 简介 企业资源计划(ERP,Enterprise Resource Planning)是一种集成软件系统,旨在帮助企业管理和优化业务流程.ERP 系 ...
- pyqt Qscintilla英文学习笔记
由于博客园不能上传pdf,所以图片没了,源文件 链接:https://www.123pan.com/s/qdY9-P4fk3 提取码:aRny 通过百度网盘分享的文件:qscintil- 链接:htt ...
- CSP-S 2020模拟训练题1-信友队T4 二维码
题意简述 有一个初始全白的\(n*m\)大小的二维网格,每次可以选择一行或一列染全白或全黑.问可以通过任意次该操作得到多少不同的网格.答案对998244353取模. 分析 不难发现,无论怎么染色,都不 ...
- centos7环境配置(防火墙,git,nodejs,redis,nginx)
一台新的云服务器,如何配置基础环境: 0. 更新软件包和存储库 sudo yum update -y 1. 防火墙设置 # 启动防火墙 systemctl start firewalld # 查看防火 ...
- 用AI工具ChatMoney一键创作,让你的公众号文章流量飙升!
本文由 ChatMoney团队出品 引言 想不想你的公众号文章一炮而红?是不是羡慕那些动不动就10W+的爆款文章?别眼红了,用ChatMoney,你也可以做到!这货可不是普通的写作工具,它是你的文章变 ...
- 鸿蒙运动项目开发:封装超级好用的 RCP 网络库(中)—— 错误处理,会话管理与网络状态检测篇
鸿蒙核心技术##运动开发## Remote Communication Kit(远场通信服务) 在上篇中,我们介绍了 RCP 网络库的核心功能,包括请求参数的封装.响应内容的转换以及拦截器与日志记录机 ...
- Raft论文(中英翻译)
In Search of an Understandable Consensus Algorithm(Extended Version) 寻找一种可理解的一致性算法(拓展版) 作者:斯坦福大学的Die ...
- BIO, NIO, AIO 大白话 - 澄澈大学生也能搞懂
最近天天吃沙县, 就拿沙县分析 BIO Block I/O 沙县分析 相近时间来了4个顾客 顾客 菜品 时间 A 筒骨饭 5min B 茄子肉丝盖饭 7min C 猪脚饭 3min D 茄子肉丝盖饭 ...
- 大模型学习笔记(一)—— transformer
写在前面,一定要看懂self attention的代码实现,注意矩阵乘是谁@谁,矩阵乘不可以变换位置!!! Attention的出现 由于翻译任务往往不是1 vs 1的翻译,因此输入与输出不等长,所以 ...