unity使用脚本控制物体运动

以下是关于在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组件以及控制物体运动的所有学习记录了,如有错误还请指正。

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值