Unity 3D 中实现对物体 位置(position) 旋转(rotation) 大小(scale) 的全面控制
今天分享一些基础控制的脚本
1.位置(Position):
控制位置很简单,首先要知道要在xyz哪几个轴上移动,确定好后定义代表着那些轴的移动变量,速度(m_speed在函数外定义为全局变量)然后通过if语句实现特定键对偏移量的增减,最后通过transform.translate实现移动 这些脚本要放在Update里
//在x和z轴的移动量
float movez = ;
float movex = ;
//实现移动控制
if (Input.GetKey(KeyCode.UpArrow)||Input.GetKey(KeyCode.W))
{
movez += m_speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S))
{
movez -= m_speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A))
{
movex -= m_speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D))
{
movex += m_speed * Time.deltaTime;
}
m_transform.Translate(new Vector3(movex, , movez));
2.旋转(Rotation):
float speed = 100.0f;
float x;
float z; void Update () {
if(Input.GetMouseButton()){//鼠标按着左键移动
y = Input.GetAxis("Mouse X") * Time.deltaTime * speed;
x = Input.GetAxis("Mouse Y") * Time.deltaTime * speed;
}else{
x = y = ;
}
//旋转角度(增加)
transform.Rotate(new Vector3(x,y,));
/**---------------其它旋转方式----------------**/
//transform.Rotate(Vector3.up *Time.deltaTime * speed);//绕Y轴 旋转 //用于平滑旋转至自定义目标
pinghuaxuanzhuan();
} //平滑旋转至自定义角度 void OnGUI(){
if(GUI.Button(Rect(Screen.width - ,,,),"set Rotation")){
//自定义角度 targetRotation = Quaternion.Euler(45.0f,45.0f,45.0f);
// 直接设置旋转角度
//transform.rotation = targetRotation; // 平滑旋转至目标角度
iszhuan = true;
}
} bool iszhuan= false;
Quaternion targetRotation; void pinghuaxuanzhuan(){
if(iszhuan){
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * );
}
}
3.大小(Scale):
float speed = 5.0f;
float x;
float z; void Update () {
x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; //水平
z = Input.GetAxis("Vertical") * Time.deltaTime * speed; //垂直//"Fire1","Fine2","Fine3"映射到Ctrl,Alt,Cmd键和鼠标的三键或腰杆按钮。新的输入轴可以在Input Manager中添加。
transform.localScale += new Vector3(x, , z); /**---------------重新设置角度(一步到位)----------------**/
//transform.localScale = new Vector3(x, 0, z);
}
Unity 3D 中实现对物体 位置(position) 旋转(rotation) 大小(scale) 的全面控制的更多相关文章
- Unity 3D中的阴影设置
在Unity 3D中,经常需要用到光照阴影,即Directional Light的Shadow,Shadow分为Hard Shadow和Soft Shadow.区别是Soft Shadow的阴影边缘比 ...
- 在Unity 3D中加入Image图片
在Unity 3D中加入Image图片,我在刚开始是加不进去的,为什么呢?因为没有图片,图如下: 原因就是我们没有把图片设置为Script,图片的格式还是默认的那个,这只能作为贴图使用.我们将图片进行 ...
- Unity 3D中不得不说的yield协程与消息传递
1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花.怪物死亡后20秒再复活之类的.刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这 ...
- Unity 3d中Shader是什么,可以吃吗?
众所周知,Unity3d是一款跨平台非常广的游戏引擎,上手容易,界面友好,集成功能众多,是目前开发手游的主流引擎.本人有幸使用Unity 3d进行开发已一年多时间,已领略了这歀引擎的强大之处. 编写s ...
- 3D max模型导入unity 3D中注意事项
一.单位,比例统一 在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样,模型与模型之间的比例要正确,和程序的导入单位一致,即便到程序需要缩放也可以统一调整缩放比例.统一单位为米. ...
- Unity 3D 中自动寻路 和 跟随转向 探析
这里主要讲三个函数 , 一个自动跟随函数 和 两个指向旋转函数 , 这三个函数在游戏角色创建过程中会经常用到: 这个是跟随函数 和 欧拉角旋转函数 public class GensuiZhixian ...
- Unity 3D中的内存管理
本文欢迎转载,但烦请保留此行出处信息:http://www.onevcat.com/2012/11/memory-in-unity3d/ Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备 ...
- Unity 3D中ToLua-UGUI使用说明、导入Unity流程、制作登陆界面
ToLua制作登录界面 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 请支持大神开发者:骏擎CP,蒙哥等奔 ...
- Unity 3D中C#的性能优化小陷阱
本篇内容主要来自Unity官方手册: 一般性能优化 一些地方为本人瞎编杜撰,请酌情参考.如有错误,欢迎指出. Unity里C#编程虽然既简单还很爽,但是性能小陷阱还不少.我总强迫自己让代码最优,因此很 ...
随机推荐
- VC++注册,卸载OCX控件,以及判断是否注册
注册OCX控件 BOOL CYourClass::RegistOcx() { HINSTANCE hLib = LoadLibrary("NTGraph.ocx"); / ...
- NXP LPC 状态可配置的定时器(SCT)
状态可配置的定时器(SCT) 前言正在申请专利的状态可配置的定时器(SCT),是一个复杂的,但易于配置的定时器,它提供前所未有的灵活性,使工程师们在未来证明他们的设计,并减少进入市场的时间.在其最简单 ...
- Install MongoDB driver for PHP on XAMPP for Mac OSX
试了不少方法,最后还是这个最有效. [转自:http://thatsimplecode.com/install-mongodb-driver-for-php-on-xampp-for-mac-osx] ...
- 江豚科技|专业移动APP开发与移动互联网解决方案
北京江豚科技(www.eoiiioe.com)是国内领先的移动APP开发解决方案服务商,总部在中国的硅谷--中关村,分别在郑州.深圳设有服务机构. 江豚科技承接各类移动app开发外包和软件定制开发,我 ...
- APK重签名总结
keytool -genkey -alias aeo_android.keystore -keyalg RSA -validity 20000 -keystore aeo_android.keysto ...
- 理解TCP为什么需要进行三次握手(白话)
原文地址:http://www.cnblogs.com/yuilin/archive/2012/11/05/2755298.html 首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提 ...
- Centos7 改名问题
先看这篇 深入理解Linux修改hostname http://www.cnblogs.com/kerrycode/p/3595724.html 我使用如下方法 http://www.linuxid ...
- 用户管理 之 Linux 系统中的超级权限的控制
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...
- C#-DataTable分页代码
/// <summary> /// DataTable分页并取出指定页码的数据 /// </summary> /// <param name="dtAll&qu ...
- LCLFramework框架 1.1 Pre-Alpha 源码公布
使用开发框架的好处:1.框架在技术上为软件系统提供了完整的模式实践2.框架为团队提供了合理可行的软件开发过程模式3.框架的应用大大提高了团队的开发效率,团队只需要关注与领域相关的业务实现,而无需关注具 ...