在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摄像机移动效果)的更多相关文章

  1. THREE.js代码备份——线框cube、按键、鼠标控制

    <!DOCTYPE html> <html lang="en"> <head> <title>three.js canvas - g ...

  2. 基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)

    基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统) zouxy09@qq.com http://blog.csdn.net/zouxy09 一年多前开始接触计算机视觉这个领域的时候,年幼无 ...

  3. THREE.js代码备份——webgl - geometry - dynamic(模拟海浪,通过时间(毫秒)来控制平面点的运动模拟海浪,鼠标控制写在另外的js中)

    HTML: <!DOCTYPE html> <html lang="en"> <head> <title>three.js webg ...

  4. OpenGl 导入读取多个3D模型 并且添加鼠标控制移动旋转

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11627508.html 前言: 因为接下来的项目需求是要读取多个3D模型,并且移动拼接,那么我 ...

  5. HTML5鼠标hover的时候图片放大的效果展示

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 使用anyremote进行远程鼠标控制

    源代码安装 http://anyremote.sourceforge.net/pre.html 安装  -xtest apt-get install libxtst-dev 安装 glib sudo ...

  7. [Python Study Notes]实现对鼠标控制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  8. JS/jquery实现鼠标控制页面元素显隐

    最近网站要上一个活动广告横幅,当用户鼠标划过时显隐二维码.像这种鼠标事件控制页面元素显隐的情况,码农们会经常遇到,可以通过javascript或jquery代码实现,下面就几种常见需求一起归纳一下. ...

  9. [Python Study Notes]pynput实现对鼠标控制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

随机推荐

  1. Appium对京东App中WebView的处理

    Appium用uiautomator无法对WebView进行className定位,所以只能模拟动作.可以用android sdk自带的monitor工具,先进行截图,再用任意图像处理软件,获取截图的 ...

  2. 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 ...

  3. DBSCAN算法

    简单的说就是根据一个根据对象的密度不断扩展的过程的算法.一个对象O的密度可以用靠近O的对象数来判断.学习DBSCAN算法,需要弄清楚几个概念: 一:基本概念 1.:对象O的是与O为中心,为半径的空间, ...

  4. Asp.Net缓存(2)

    缓存页的多个版本 ASP.NET 允许在输出缓存中缓存同一页的多个版本.输出缓存可能会因下列因素而异: 初始请求 (HTTP GET) 中的查询字符串. 回发时传递的控制值(HTTP POST 值). ...

  5. eclipse 或MyEclipse将工程进行移动的时候会对@Override报错的处理方法

    有时候导入javaSE,javaEE,android 工程的时候,明明是刚刚用过的没有问题的工程,但重新导入的时候就报错. 提示The method ... must override a sperc ...

  6. [2-sat]HDOJ1824 Let's go home

    中问题 题意略 和HDOJ 3062一样 这里 每个队员都有 选 和 不选 两种, 即 上篇所说的$x$和$x’$ 建图:队长(a)留下或者其余两名队员(b.c)同时留下 那么就是$a' \Right ...

  7. Spring 注入static变量

    一般我们我想注入一个static的变量,如下: @Autowired    private static String str; 不过,这样最终结果为null. 1.使用配置文件的方式注入 priva ...

  8. @JsonFormat时间不对

    实际时间为:2015-07-06 20:20:23 1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date ...

  9. 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 ...

  10. lintcode: 翻转链表

    题目: 翻转链表 翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑战 在原地一次翻转完成 解题: 递归还 ...