Unity 物体移动的理解
2024-10-12 19:18:42
Unity通过内置的Input类获取外部输入,具体查看:
Editor---Project Setting---Input,常见的输入比如:Vertical、Horizontal、Fire1、Jump等;
物体移动:
1、物体自己移动
private Transform transform;
transform = GetComponent<Transform>(); transform.position += new Vector3(, , );
transform.Translate(Vector3.forward);
首先定义Transform组件,再获取组件;
1)可以改变组件的位置属性进行移动,Vector3(0,0,1)表示物体沿z轴的正方向移动,其他类似Vector3(1,0,0)表示沿x的正方向移动;
2)使用组件的Translate()函数进行移动,函数的传值Vector3.forward其实等价与Vector3(0,0,1),当然还有Vector3.left=Vector3(-1,0,0)等;
2、键盘控制物体移动
private Transform transform;
private float v = 0.0F;
private float h = 0.0F; v = Input.GetAxis("Vertical");
h = Input.GetAxis("Horizontal"); transform.Translate(Vector3.forward*v);
transform.Translate(Vector3.left*h);
transform.Translate(Vector3.forward*v*Speed*Time.deltaTime);
1)分别获取x轴和z轴的方向
同样定义组件和获取组件,接下来需要获取水平和垂直坐标,直接乘到Vector3.*向量就可以实现,值得注意的是Vector3.*获取的只是方向;
总之是方向*坐标轴即可移动;
最后可以看到加入的移动速度和Time.daltaTime同样改变游戏移动速度的参数,以每秒10个单位的速度前进;
2)用向量moveDir获取x轴和z轴的方向,更加简练
v = Input.GetAxis("Vertical");
h = Input.GetAxis("Horizontal"); Vector3 moveDir = (Vector3.forward*v) + (Vector3.right*h);
transform.Translate(moveDir.normalized*Speed * Time.deltaTime );
三、物体旋转
其实在transform组件中除了位置外,还有一个重要的属性,旋转Rotate();
旋转其实也可以分为自动旋转和通过键盘输入进行旋转;
private Transform transform;
public float rotSpeed = 100.0F; transform = GetComponent<Transform>();
transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed* Input.GetAxis("Mouse X"));
transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);
首先需要定义Transform组件,然后获取组件,再通过函数Rotate()进行旋转,其中的参数和位置函数Traslate()类似。
最新文章
- ACM 田忌赛马
- easyUI笔记09.03
- extjs ajax请求与struts2进行交互
- SQL内连接与外连接的区别【转】
- 使用windows服务和MSMQ和进行日志管理(解决高并发问题)
- typedef函数指针使用方法
- webService请求方式快速生成代码 (Postman)
- WinCE系统声音定制
- HTTP一、HTTP介绍与套接字
- CentOS6.5在虚拟机中安装
- react componentWillReceiveProps 使用注意
- Task.Delay方法的2个应用实例,单元测试等待,限时限次下载远程资源
- linux分区详解
- js 各种循环遍历
- [洛谷P5216]DLS 采花
- BZOJ3192:[JLOI2013]删除物品——题解
- Jmeter+JDK的安装学习笔记
- noip2011初赛提高组 试题详解
- mybatis查询缓存
- 基础数据类型-dict
热门文章
- 使用urllib2+re爬取web网站
- 怎样利用ADO中的adoquery进行缓存更新?????(100分)
- Uninstall registry
- sql server对已创建的表增加属性(自动增序)
- [BZOJ 2083] [POI 2010] Intelligence test
- HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
- Matplotlib学习---用matplotlib画雷达图(radar chart)
- spi slaver接口的fpga实现
- 【XSY2750】Mythological V 2-sat
- 【XSY2665】没有上司的舞会 LCT DP