在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. Apache Options Indexes FollowSymLinks之讲解

    禁止显示Apache目录列表-Indexes FollowSymLinks 如何修改目录的配置以禁止显示 Apache 目录列表. 缺省情况下如果你在浏览器输入地址: http://localhost ...

  2. IOS版UC我的视频地址

    UC浏览器/Library/Application Support/offlineVideos

  3. HDU 1385 Minimum Transport Cost (最短路,并输出路径)

    题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...

  4. 暑假集训单切赛第一场 CF 266E More Queries to Array(线段树+二项式展开式)

    比赛时,第二题就是做的这个,当时果断没仔细考虑,直接用线段树暴力求.结果易想而知,超时了. 比赛后搜了搜题解,恍然大悟. 思路:显然用线段树,但是由于每次查询都会有变,所以不可能存储题目中的式子.   ...

  5. JDK8 学习

    http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

  6. ***常见复杂SQL语句(含统计类SQL)

    1.SQL统计某字段的出现次数 比如统计某个表中,姓名出现的次数:select name,count(*) from biao group by name having count(*) > 2 ...

  7. [转]Java数组初始化详解

    一维数组1)   int[] a;   //声明,没有初始化 2)   int[] a=new int[5];   //初始化为默认值,int型为0 3)   int[] a={1,2,3,4,5}; ...

  8. U盘文件夹被病毒隐藏,且不能取消解决办法

    在cmd下进入到U盘,运行attrib -r -a -s -h *.* /s /d

  9. spring mvc 常用注解

    1.@requestMapping注解,绑定指定的url,requestmapping注解的属性值有value和method. requestmaping可以作用在类上或者方法上 如:@Request ...

  10. 【转】Windows Server 2008修改远程桌面连接数

    按照下面的设置是成功了的,我设置的连接数是5个. http://jingyan.baidu.com/article/154b463150d1b128ca8f4194.html