首页 理论教育 Unity3D游戏开发教程-使用Transform类

Unity3D游戏开发教程-使用Transform类

时间:2023-11-16 理论教育 版权反馈
【摘要】:Transform类是用来定义游戏对象的位置、旋转和缩放属性的。由于该类继承了Component类,所以它也是一种组件,而且对于该类来说,所有的游戏对象都具有Transform 类,也就是拥有了Transform 组件,即使该对象是空的对象。

Unity3D游戏开发教程-使用Transform类

Transform类是用来定义游戏对象的位置、旋转和缩放属性的。由于该类继承了Component类,所以它也是一种组件,而且对于该类来说,所有的游戏对象都具有Transform 类,也就是拥有了Transform 组件,即使该对象是空的对象。在游戏中如果想更新玩家位置,设置相机观察角度都免不了要和Transform 组件打交道,Transform 类的成员变量如表5-1 所示。

表5-1 Transform 类的成员列表

Transform 组件比较特殊,不需要通过获取就可直接使用,表示当前物体对象的transform属性,即脚本挂载在哪个物体上,就表示那个物体的Transform 组件,大写的Transform 表示一个类,小写的transform 是类的实例化,下面介绍应用示例。

1. 移动物体

(1)在场景中创建一个Cube 游戏对象,把Position 置0,即放到世界中心的(0,0,0)点,添加C#脚本“Move”,将脚本赋给Cube 游戏对象,单击工具栏的播放按钮,可以看到Position 的变化,代码如下:

(2)如果要获取别的物体的Transform 组件,要先定义一个Transform 变量,在场景中创建一个Sphere游戏对象,把Position设置为(10,0,0)点,修改脚本“Move”如下:

因为定义了一个Public类型的公共变量,在Inspector 视图中Move组件就显示了一个变量,这时候把Sphere游戏对象拖给这个变量,单击工具栏的播放按钮,可以看到Cube和Sphere游戏对象的位置都移动到了(10,20,30)点。

(3)如果要实现Cube 游戏对象逐帧运动,那么修改脚本“Move”如下:

还可以定义一个公有速度变量,以便在属性窗口更改移动的速度。

或者(www.xing528.com)

(4)通过Vector3.MoveTowards()来移动,让物体移动到某个点。

单击工具栏的播放按钮,移动球体Sphere 游戏对象,会发现Cube 对象会一直跟随,因为Update是实时更新的,球的position也是在实时变化。

2. 旋转物体

1)四元素和欧拉角

在游戏对象的Transform 组件中,变量Transform.rotation 为对象在全局坐标系下的旋转,Transform.localrotation 为对象在父对象的局部坐标系下的旋转,两个变量的类型均为四元素。所以可以通过四元素来控制对象的旋转。

当然四元数也可以转换成欧拉角,上面脚本等价于:

2)Rotate 方法

Cube 游戏对象绕自身坐标系Y 轴转动,修改脚本如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈