【unity3D】鼠标控制camera的移动、放大(俯视浏览效果、LOL摄像机移动效果)
在Unity开发中,用鼠标滚轮来实现摄像机的视野范围,鼠标左键拖拉控制摄像机的移动,代码如下:
1.俯视浏览效果
using UnityEngine;
using System.Collections; public class CameraCol : MonoBehaviour {
//控制视野缩放的速率
public float view_value;
//控制摄像机移动的速率
public float move_speed;
void Update () {
//放大、缩小
if( Input.GetAxis("Mouse ScrollWheel") != )
{
this.gameObject.transform.Translate(new Vector3(,,Input.GetAxis("Mouse ScrollWheel")*Time.deltaTime*view_value));
}
//移动视角
if (Input.GetMouseButton ()) {
transform.Translate (Vector3.left * Input.GetAxis ("Mouse X") * move_speed);
transform.Translate(Vector3.up * Input.GetAxis("Mouse Y") * -move_speed);
}
}
}
2.LOL摄像机效果
鼠标移至屏幕边控向相应位置移动
//整体移动速度
var speed=; //关于鼠标滑轮的参数
var MouseWheelSensitivity = 0.0001f;
var MouseZoomMin = -2.4f;
var MouseZoomMax = 1.0f;
var normalDistance = -1.1; //水平和垂直的移动速度
var horizontalMoveSpeed = 0.1;
var verticalMoveSpeed = 0.1; //上左下右的标记
var topTag = ;
var leftTag = ;
var botTag = ;
var rightTag = ; function Start () { } function Update () {
if( Input.GetAxis("Mouse ScrollWheel") != )
{
this.gameObject.transform.Translate(new Vector3(,,Input.GetAxis("Mouse ScrollWheel")*Time.deltaTime*));
}
//获取cursor坐标
var msPos = Input.mousePosition; //边界最小值
var widthBorder = Screen.width/;
var heightBorder = Screen.height/; var x = 0.0f;
var y = 0.0f; //当前鼠标位置标记
var posTag = ; if(widthBorder<=msPos.x && msPos.x<=Screen.width-widthBorder &&
heightBorder<=msPos.y && msPos.y<=Screen.height-heightBorder)
{
transform.Translate(x,y,y);
Debug.Log("asd"+msPos.x+" "+msPos.y);
}
else
{
// posTag
//
// 1100 | 1000 | 1001
// 0100 | 0000 | 0001
// 0110 | 0010 | 0011
//
// 12 | 8 | 9
// 4 | 0 | 1
// 6 | 2 | 3
//
if(msPos.y>Screen.height-heightBorder)
posTag = posTag | topTag;
if(msPos.x<widthBorder)
posTag = posTag | leftTag;
if(msPos.y<heightBorder)
posTag = posTag | botTag;
if(msPos.x>Screen.width-widthBorder)
posTag = posTag | rightTag; switch(posTag)
{
case : break;
case : x = horizontalMoveSpeed; break;
case : y = -verticalMoveSpeed; break;
case : x = horizontalMoveSpeed; y = -verticalMoveSpeed; break;
case : x = -horizontalMoveSpeed; break;
case : x = -horizontalMoveSpeed; y = -verticalMoveSpeed; break;
case : y = verticalMoveSpeed; break;
case : x = horizontalMoveSpeed; y = verticalMoveSpeed; break;
case :x = -horizontalMoveSpeed;y = verticalMoveSpeed; break;
default: break;
} x *= speed*Time.deltaTime;
y *= speed*Time.deltaTime; //
transform.Translate(x, y, y);
} }
【unity3D】鼠标控制camera的移动、放大(俯视浏览效果、LOL摄像机移动效果)的更多相关文章
- THREE.js代码备份——线框cube、按键、鼠标控制
<!DOCTYPE html> <html lang="en"> <head> <title>three.js canvas - g ...
- 基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)
基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统) zouxy09@qq.com http://blog.csdn.net/zouxy09 一年多前开始接触计算机视觉这个领域的时候,年幼无 ...
- THREE.js代码备份——webgl - geometry - dynamic(模拟海浪,通过时间(毫秒)来控制平面点的运动模拟海浪,鼠标控制写在另外的js中)
HTML: <!DOCTYPE html> <html lang="en"> <head> <title>three.js webg ...
- OpenGl 导入读取多个3D模型 并且添加鼠标控制移动旋转
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11627508.html 前言: 因为接下来的项目需求是要读取多个3D模型,并且移动拼接,那么我 ...
- HTML5鼠标hover的时候图片放大的效果展示
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 使用anyremote进行远程鼠标控制
源代码安装 http://anyremote.sourceforge.net/pre.html 安装 -xtest apt-get install libxtst-dev 安装 glib sudo ...
- [Python Study Notes]实现对鼠标控制
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- JS/jquery实现鼠标控制页面元素显隐
最近网站要上一个活动广告横幅,当用户鼠标划过时显隐二维码.像这种鼠标事件控制页面元素显隐的情况,码农们会经常遇到,可以通过javascript或jquery代码实现,下面就几种常见需求一起归纳一下. ...
- [Python Study Notes]pynput实现对鼠标控制
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
随机推荐
- Appium对京东App中WebView的处理
Appium用uiautomator无法对WebView进行className定位,所以只能模拟动作.可以用android sdk自带的monitor工具,先进行截图,再用任意图像处理软件,获取截图的 ...
- How to define Servlet filter order of execution using annotations
If we define Servlet filters in web.xml, then the order of execution of the filters will be the same ...
- DBSCAN算法
简单的说就是根据一个根据对象的密度不断扩展的过程的算法.一个对象O的密度可以用靠近O的对象数来判断.学习DBSCAN算法,需要弄清楚几个概念: 一:基本概念 1.:对象O的是与O为中心,为半径的空间, ...
- Asp.Net缓存(2)
缓存页的多个版本 ASP.NET 允许在输出缓存中缓存同一页的多个版本.输出缓存可能会因下列因素而异: 初始请求 (HTTP GET) 中的查询字符串. 回发时传递的控制值(HTTP POST 值). ...
- eclipse 或MyEclipse将工程进行移动的时候会对@Override报错的处理方法
有时候导入javaSE,javaEE,android 工程的时候,明明是刚刚用过的没有问题的工程,但重新导入的时候就报错. 提示The method ... must override a sperc ...
- [2-sat]HDOJ1824 Let's go home
中问题 题意略 和HDOJ 3062一样 这里 每个队员都有 选 和 不选 两种, 即 上篇所说的$x$和$x’$ 建图:队长(a)留下或者其余两名队员(b.c)同时留下 那么就是$a' \Right ...
- Spring 注入static变量
一般我们我想注入一个static的变量,如下: @Autowired private static String str; 不过,这样最终结果为null. 1.使用配置文件的方式注入 priva ...
- @JsonFormat时间不对
实际时间为:2015-07-06 20:20:23 1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date ...
- lintcode:递归打印数字
题目 用递归打印数字 用递归的方法找到从1到最大的N位整数. 样例 给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2, 返回[1,2,3,4,5,6,7,8,9,10 ...
- lintcode: 翻转链表
题目: 翻转链表 翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑战 在原地一次翻转完成 解题: 递归还 ...