以下是关于在unity中如何使用脚本组件控制物体运动的学习记录。
创建好脚本后在Visual Studio中可以看到如上内容。
1.Debug.Log()方法的使用
如何测试脚本有无关联上unity呢,可以试着让它在unity中输出一串字符,Debug.log()方法可以用来向控制台(Console(Window->Gemeral->Console可以打开控制台窗口))输出信息。
回到visual studio编辑内容,编辑好后记得保存。再回到unity,将脚本挂载到对象身上(或者挂载到摄像机上),当然也可以先将脚本挂载好再编辑脚本。开始运行脚本,点击播放按钮就会得到如下图运行结果。
可以发现start()函数内的输出语句只执行了一次而update()函数执行了多次(直到结束运行才停止调用update()函数),到这里说明我们创建的脚本在unity中是可用的。
常用的print()方法是可以用呢?
结果是可以的。
2.Time类
怎么获取项目运行的时间呢?
unity提供了一个Time类,其中time属性就可以用来获得项目自开始播放以来的时间。
在update()函数内添加如下内容
就可以在控制台中看到当前项目执行的时间。如控制台内容过多,可以点击左上角Clear按钮清除内容。
另外还有一个常用属性dealtTime,Time.deltaTime表示两帧之间的间隔,它乘以物体的速度可以用来抵消帧率变化的影响。
3.Transform组件
通过transform组件可以控制对象的位置、大小、旋转角度。
如何脚本控制transform组件?
3.1 改变对象position
1.Translate(x_value,y_value,z_value)函数,把光标放在Translate函数上可以发现有3个参数分别对应对象的三个坐标轴。
2.position属性,通过上图可以发现transform类的position属性有两个方法get和set,可以用来读取和修改transform组件的position。
使用translate函数改变对象的初始位置。因为要改变的是对象初始位置,所以我们只需要在start()函数内执行一次即可。
在start()函数内添加如上内容,可以发现运行开始后Cube向x轴正方向(右边)移动了1.5个单位。
使用position指定对象初始位置。同样也是在start()函数内添加如下内容。
注释快捷键:先按ctrl+k,再按ctrl+c(选定内容注释);shift+ctrl+/(块注释)。
取消注释快捷键:先按ctrl+k,再按ctrl+u(选定内容取消注释);shift+ctrl+/(取消块注释)。
同样,运行开始后Cube向x轴正方向(右边)移动了1.5个单位。
使用translate函数让对象运动起来。 让对象运动起来就需要使对象每一帧改变一点位置,所以我们可以将translate函数添加在update函数内。
通过控制台可以发现物体以每帧向右侧前进1.5个单位的速度运动。
使用position属性让对象运动起来。 让对象的位置在原来的位置累加一个固定的值也可以做到运动起来。再update内添加如下代码。
注:为什么1.5要写成1.5f,修改position要用new Vector3(x,y,z)?
因为C#的语法规定,如果直接写2.5会被认为是一个double类型的数值,而这里需要的是float类型的数值,所以需要加上f后缀。不能直接写成transform.position.x=0.5f是因为position是一个属性而Vector3是一个值类型。
3.2 控制对象rotation
Rotate(x_value,y_value,z_value)函数。它通常以欧拉角的方式旋转。
初始旋转实现:
3.3 控制对象scale
localScale属性。
初始缩放实现:
4.Time.deltaTime
物体通过以每帧移动固定的距离来实现运动,这种方式受帧率的影响,帧率高物体移动就快,反之则慢。控制物体每秒移动同样的距离,可以通过Time.deltaTime乘以物体移动速度实现。
实现只需在update函数内修改如下内容。
5.输入处理
unity支持多种多样的输入设备,并且提供了一个输入管理器(Edit->Project Settings->Input Manager->Axes),可以用来定义输入轴以及相关联操作。
5.1 虚拟轴
Horizontal(横轴)和Vertical(纵轴)
从Input Manager可以知道默认控制横向移动的按键为a、d和方向键左和右,控制纵向移动的按键为w、s和方向键上和下。
5.2 Input.GetAxis("name")
虚拟轴可以通过名称进行访问,使用Input.GetAxis()方法进行控制物体移动。通过以下代码就可以使用键盘方向键或wasd键控制物体水平移动了。
注:虚拟轴的名称必须要正确才可访问;
这里我控制的是物体的x轴和z轴方向上的移动,也可以修改translate中的值来控制y轴方向的移动。
public float speed,定义一个公有的数据类型可以方便后面对速度的修改,因为在Inspector面板就可以修改速度了。
以上就是使用脚本控制对象的transform组件以及控制物体运动的所有学习记录了,如有错误还请指正。