09应用输入管理器转动场景--《程序员学Unity3d》

为什么极品飞车等等游戏,都可以通过系统设置很方面地根据自己喜欢设置操作方式,有人喜欢用箭头来控制没有喜欢用用“W,S,A,D”来控制,这就说明了程序员不会把控制方式写死在程序里面,来看看Unity3d如何让用户可以随时修改“快捷键”。

优点:不仅方便后期维护,也可以减少很多代码。

Edit --Project Settings -- Input 打开输入管理器

前面17组是系统配置的,可以修改或删除。

将Size改为18,新增一组。(名称为Test,对应按键为 a)

在发布的程序中,如果要修改对应键,控制面板中默认显示该功能名为Name。

若设置了正值描述名称,即显示功能名为该值。

负按键:比如正按键为 W ,负按键为“S”。它们的返回值分别为1,-1 。在代码区域进行判断,再实现不同的功能。

备选正负按钮:第二组实现与第一组功能相同的按钮。

则这两个键都可以实现同一功能。

脚本代码:

if (Input.GetButton("Test"))
        {
        }
相当于:
        //if (Input.GetKey(KeyCode.A)) //不便于维护
        //{
        //}
Input.GetAxis("Test");//返回正负键值。正为,负为-1,没有按下为0

发布的程序,即可以随时修改对应键值

转动场景

1.转动物体

首先创建一个输入管理器

要实现A和Left 键向左转,D和Right键向右转

创建一个物体和一个脚本,将脚本赋给物体。

void Update () {
        //Input.GetAxisRaw("TurnLeftOrRight") 当按下A或Left,返回;按下D或Right,返回-1;不按时返回。立即返回
        gameObject.transform.Rotate(0, Input.GetAxisRaw("TurnLeftOrRight") * 15 * Time.deltaTime, 0, Space.Self);//松口键时,立即停止
//这时将输入管理器的Sensitivity(灵敏度)由改为
        Input.GetAxis("TurnLeftOrRight");
        //这样返回值将是变化,例如按下A,将在一定时间内大概从->0.2->0.4…->1变化,这时松开键时,还是立即返回
        //这时将输入管理器的Gravity(重力灵敏度)由改为。
        //这样,松口按键时,返回值将由"终值"慢慢变化到
}

2.转动视觉

Type 类型,比如下面系统自带的鼠标横向滑动时。Type为Mouse Movement ; Axis 为X axis

……

0.1鼠标平移,镜头绕中心旋转

创建一个新的脚本

void Update () {
        gameObject.transform.Rotate(0, Input.GetAxis("Mouse X") * 10, 0, Space.Self);
}

注意不能只能把脚本扔给摄像机,因为上面的代码只改变Y轴的值

应该新创建一个空物体,让它的坐标为(0,0,0),然后让摄像机成为它的子物体!

将脚本扔给该空物体,即可实现该摄像机到中心点的距离不变,但随着中心点旋转。

0.2转动鼠标滚轮,镜头伸缩。

创建一个新的脚本,直接扔给摄像机。当镜头视觉对准物体时,(Ctrl+Shift+F),摄像机的Z轴便是对准物体的,这时这需要移动摄像机改变Z轴的值,即可实现伸缩镜头效果。

void Update () {
        gameObject.transform.Translate(0, 0, Input.GetAxis("Mouse ScrollWheel") * 100 *Time.deltaTime, Space.Self);
}

09应用输入管理器转动场景--《程序员学Unity3d》

时间: 2024-10-18 04:32:07

09应用输入管理器转动场景--《程序员学Unity3d》的相关文章

08一地形编辑&自制贴图导入--《程序员学Unity3d》

要制作出漂亮实用的地形可不简单啊,目前只知道大概怎么做而已.考虑到效率问题,一般会自己制作贴图导入来使用. PS贴图制作,导入Unity3d

[转] Java程序员学C#基本语法两个小时搞定(对比学习)

Java程序员学C#基本语法两个小时搞定(对比学习) 对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import2.构造函数和java语法相同3.析构函数  变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销.  类的对象被撤销时,将自动调用析构函数.一些善后工作可放在析构函数中完成.  析构函数的名字为~类名,无返回类型,也无参数.Per

CSharp程序员学Android开发---3.Android内部元素不填充BUG

最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历时一个多月,4个人开发,最终行成一个可用的Demo,整体效果还非常不错.这其中借鉴了网上的“仿网易客户端的Demo”还有就是学习<疯狂Android>,收获颇多,这里利用几篇文章做一个项目经验总结,还有就是更多的从C# 程序员的观点来理解Android的一些异同之处. 文章目录: CSharp程序

PHP程序员学Objective-C之后的变化

趣味坎谈,不一定100%准确,以自己的实际情况为准; 如题,我2008年开始学PHP,PHP是我学的第二门编程语言,一直用到现在,2010年初开始做iOS开发,学习了Objective-C,学这2门语言之间间隔了2年; 最近翻到了2008-2010年之间自己写的PHP代码,结合现在的项目编码风格,总结变化如下:; 1.现在喜欢用又臭又长的类名,方法名,参数名,只要写的不够长,怎么都要想办法补充到很长,所以现在写PHP就非常依赖能自动补全的IDE(被xcode宠坏了),因为真的很长; 以前用php

CSharp程序员学Android开发---2.个人总结的快捷键

最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历时一个多月,4个人开发,最终行成一个可用的Demo,整体效果还非常不错.这其中借鉴了网上的“仿网易客户端的Demo”还有就是学习<疯狂Android>,收获颇多,这里利用几篇文章做一个项目经验总结,还有就是更多的从C#程序员的观点来理解Android的一些异同之处. 文章目录: CSharp程序员

.Net程序员学用Oracle系列(1):导航目录

原文:http://www.cnblogs.com/hanzongze/p/oracle-catalog.html .Net程序员学用Oracle系列(1):导航目录 .Net程序员学用Oracle系列(2):准备测试环境 .Net程序员学用Oracle系列(3):数据库编程规范 .Net程序员学用Oracle系列(4):四个基本概念 .Net程序员学用Oracle系列(5):三大数据类型 .Net程序员学用Oracle系列(6):表.字段.注释.约束.索引 .Net程序员学用Oracle系列(

Java程序员学C#基本语法两个小时搞定(对比学习)

对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import2.构造函数和java语法相同3.析构函数  变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销.  类的对象被撤销时,将自动调用析构函数.一些善后工作可放在析构函数中完成.  析构函数的名字为~类名,无返回类型,也无参数.Person类的析构函数为~ Person().  C#中类

程序员学炒股(2) 个股和大盘的关系

买股票最先要看大盘,不过这大盘和个股之间的关联度到底有多大呢?这个问题值得考虑考虑.大家也都知道牛市的时候,所有的股票都上涨,买啥都赚钱,熊市的时候,几乎所有股票都下跌,不过到底哪些股票和大盘的关联性更强呢?很多人都说指数是可以造假的,到底指数能不能代表股市的总体趋势呢?这个问题肯定难不倒我们程序员,毕竟我们都是受过高等教育,学过概率论和数理统计的.我们先回顾一下,内容复制自山东    胡大波的<线性回归中的相关系数>一文. 对于我们来说,接下来就要计算各个股票和大盘的相关性了,按照这上面的说

程序员学银钻娱乐客服15687949443习提高必看的一篇文章

作为程序员我们应该知道什么,这是很重要的.不知不觉做软件现已做了十年,有成功的高兴,也有失利的苦楚,但总不敢称自己是高手,由于和我心目中真实的高手们比起来,还差的太远.世界上并没有成为高手的捷径,但一些基本原则是能够遵从的. 1. 厚实的根底. 数据结构.离散数学.编译原理,这些是一切计算机科学的根底,如果不把握他们,很难写出高水平的程序.据我的调查,学计算机专业的人比学其他专业的 人更能写出高质量的软件.程序人人都会写,但当你发现写到必定程度很难再提高的时分,就应该想想是不是要回过头来学学这些